<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>我本善良 &#187; iptables</title>
	<atom:link href="https://wbsl.org/tag/iptables/feed" rel="self" type="application/rss+xml" />
	<link>https://wbsl.org</link>
	<description>一个不太正常的正常人</description>
	<lastBuildDate>Fri, 05 Jul 2024 01:35:05 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2</generator>
	<item>
		<title>Linux上iptables防火墙的基本应用</title>
		<link>https://wbsl.org/linux/357.html</link>
		<comments>https://wbsl.org/linux/357.html#comments</comments>
		<pubDate>Wed, 06 Jul 2022 13:23:10 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">https://wbsl.org/?p=357</guid>
		<description><![CDATA[1、安装iptables防火墙 如果没有安装iptables需要先安装，CentOS执行： yum insta<a href="https://wbsl.org/linux/357.html" class="read-more">Continue Reading</a>]]></description>
				<content:encoded><![CDATA[<p>1、安装iptables防火墙<br />
如果没有安装iptables需要先安装，CentOS执行：</p>
<p>yum install iptables -y<br />
yum install iptables-services -y #CentOS7需安装此iptables的service软件包#<br />
CentOS 7上默认安装了firewalld建议关闭并禁用：</p>
<p>systemctl stop firewalld<br />
systemctl mask firewalld<br />
Debian/Ubuntu执行：</p>
<p>apt-get install iptables -y<br />
apt-get install iptables-persistent -y #持久化iptables规则服务#<br />
2、清除已有iptables规则<br />
iptables -F<br />
iptables -X<br />
iptables -Z<br />
3、开放指定的端口<br />
-A和-I参数分别为添加到规则末尾和规则最前面。</p>
<p>#允许本地回环接口(即运行本机访问本机)<br />
iptables -A INPUT -i lo -j ACCEPT<br />
# 允许已建立的或相关连的通行<br />
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
#允许所有本机向外的访问<br />
iptables -A OUTPUT -j ACCEPT<br />
# 允许访问22端口<br />
iptables -A INPUT -p tcp --dport 22 -j ACCEPT<br />
#允许访问80端口<br />
iptables -A INPUT -p tcp --dport 80 -j ACCEPT<br />
#允许访问443端口<br />
iptables -A INPUT -p tcp --dport 443 -j ACCEPT<br />
#允许FTP服务的21和20端口<br />
iptables -A INPUT -p tcp --dport 21 -j ACCEPT<br />
iptables -A INPUT -p tcp --dport 20 -j ACCEPT<br />
#如果有其他端口的话，规则也类似，稍微修改上述语句就行<br />
#允许ping<br />
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT<br />
#禁止其他未允许的规则访问<br />
iptables -A INPUT -j REJECT  #（注意：如果22端口未加入允许规则，SSH链接会直接断开。）<br />
iptables -A FORWARD -j REJECT<br />
4、屏蔽IP<br />
#如果只是想屏蔽IP的话“3、开放指定的端口”部分设置可以直接跳过。<br />
#屏蔽单个IP的命令是<br />
iptables -I INPUT -s 123.45.6.7 -j DROP<br />
#封整个段即从123.0.0.1到123.255.255.254的命令<br />
iptables -I INPUT -s 123.0.0.0/8 -j DROP<br />
#封IP段即从123.45.0.1到123.45.255.254的命令<br />
iptables -I INPUT -s 124.45.0.0/16 -j DROP<br />
#封IP段即从123.45.6.1到123.45.6.254的命令是<br />
iptables -I INPUT -s 123.45.6.0/24 -j DROP<br />
5、屏蔽或允许某IP访问指定端口<br />
#屏蔽某IP访问指定端口，以22端口为例命令是<br />
iptables -I INPUT -s 123.45.6.7 -p tcp --dport 22 -j DROP<br />
#允许某IP访问指定端口，以22端口为例命令是<br />
iptables -I INPUT -p tcp --dport 22 -j DROP<br />
iptables -I INPUT -s 123.45.6.7 -p tcp --dport 22 -j ACCEPT<br />
6、查看已添加的iptables规则<br />
iptables -L -n<br />
v：显示详细信息，包括每条规则的匹配包数量和匹配字节数<br />
x：在 v 的基础上，禁止自动单位换算（K、M） vps侦探<br />
n：只显示IP地址和端口号，不将ip解析为域名</p>
<p>7、删除已添加的iptables规则<br />
将所有iptables以序号标记显示，执行：</p>
<p>iptables -L -n --line-numbers<br />
比如要删除INPUT里序号为8的规则(要删除OUTPUT的话就改成OUTPUT，以此类推)，执行：</p>
<p>iptables -D INPUT 8<br />
8、iptables的开机启动及规则保存<br />
有可能系统并未安装iptables的service文件，可以先执行：</p>
<p>yum -y install iptables-services<br />
进行安装。<br />
CentOS上可能会存在安装好iptables后，iptables并不开机自启动，可以执行一下：</p>
<p>chkconfig --level 345 iptables on<br />
CentOS7可执行：<br />
有可能系统并未安装iptables的service文件，可以执行：</p>
<p>yum -y install iptables-services<br />
systemctl enable iptables<br />
将其加入开机启动。</p>
<p>CentOS上可以执行：service iptables save保存规则。</p>
<p>另外更需要注意的是Debian/Ubuntu上iptables是不会保存规则的，也是前面说的持久化iptables规则。<br />
需要先执行一下，安装持久化脚本：</p>
<p>apt-get --no-install-recommends install -y iptables-persistent<br />
Debian或Ubuntu 16.04或更高版本执行：/etc/init.d/netfilter-persistent save 可以进行保存规则，/etc/init.d/netfilter-persistent reload 可以将规则生效。<br />
Ubuntu 14.04之前版本执行：/etc/init.d/iptables-persistent save 可以进行保存规则，/etc/init.d/iptables-persistent reload 可以将规则生效。</p>
<p>开机启动的话执行：systemctl enable netfilter-persistent.service 或 systemctl enable iptables-persistent.service</p>
<p>这样就完成了Debian或Ubuntu下的关机自动保存规则，开机自动加载规则的设置。</p>
]]></content:encoded>
			<wfw:commentRss>https://wbsl.org/linux/357.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS保存iptables规则</title>
		<link>https://wbsl.org/linux/310.html</link>
		<comments>https://wbsl.org/linux/310.html#comments</comments>
		<pubDate>Tue, 08 Sep 2020 00:57:20 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">https://wbsl.org/?p=310</guid>
		<description><![CDATA[需关闭firewalld防火墙: systemctl stop firewalld.service syste<a href="https://wbsl.org/linux/310.html" class="read-more">Continue Reading</a>]]></description>
				<content:encoded><![CDATA[<p>需关闭firewalld防火墙:</p>
<p><code>systemctl stop firewalld.service</code></p>
<p><code>systemctl disable firewalld.service</code></p>
<p>安装iptables服务:</p>
<p><code>yum install iptables-services</code></p>
<p>保存iptables规则：</p>
<p><code>service iptables save</code></p>
<p>配置iptables开机启动：</p>
<p><code>systemctl enable iptables.service<br />
（老版本命令为：service iptables on）</code></p>
]]></content:encoded>
			<wfw:commentRss>https://wbsl.org/linux/310.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>通过iptables防火墙限制端口与放行端口</title>
		<link>https://wbsl.org/linux/276.html</link>
		<comments>https://wbsl.org/linux/276.html#comments</comments>
		<pubDate>Thu, 27 Feb 2020 05:04:38 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[放行端口]]></category>
		<category><![CDATA[限制端口]]></category>

		<guid isPermaLink="false">https://wbsl.org/?p=276</guid>
		<description><![CDATA[[crayon-69e15baf49b27938230148/]]]></description>
				<content:encoded><![CDATA[<p></p><pre class="crayon-plain-tag">iptables -A INPUT -p tcp --dport 1234 -j DROP
iptables -I INPUT 1 -p tcp --dport 1234 -j ACCEPT</pre><p> </p>
]]></content:encoded>
			<wfw:commentRss>https://wbsl.org/linux/276.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS7安装iptables防火墙</title>
		<link>https://wbsl.org/linux/249.html</link>
		<comments>https://wbsl.org/linux/249.html#comments</comments>
		<pubDate>Wed, 09 Oct 2019 11:17:49 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[centos7]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[防火墙]]></category>

		<guid isPermaLink="false">https://wbsl.org/?p=249</guid>
		<description><![CDATA[CentOS7 默认的防火墙不是iptables,而是firewalle. 安装 iptable iptabl<a href="https://wbsl.org/linux/249.html" class="read-more">Continue Reading</a>]]></description>
				<content:encoded><![CDATA[<p>CentOS7 默认的防火墙不是iptables,而是firewalle.<br />
安装 iptable iptable-service</p>
<p></p><pre class="crayon-plain-tag">#先检查是否安装了iptables
service iptables status
#安装iptables
yum install -y iptables
#升级iptables
yum update iptables 
#安装iptables-services
yum install iptables-services</pre><p> </p>
<p>禁用 / 停止自带的 firewalld 服务</p>
<p></p><pre class="crayon-plain-tag">#停止firewalld服务
systemctl stop firewalld
#禁用firewalld服务
systemctl mask firewalld</pre><p> </p>
<p>设置现有规则</p>
<p></p><pre class="crayon-plain-tag">#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP</pre><p> </p>
<p>其他规则设定</p>
<p></p><pre class="crayon-plain-tag">#如果要添加内网ip信任（接受其所有TCP请求）
iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT
#过滤所有非以上规则的请求
iptables -P INPUT DROP
#要封停一个IP，使用下面这条命令：
iptables -I INPUT -s ***.***.***.*** -j DROP
#要解封一个IP，使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP</pre><p> </p>
<p>保存规则设定</p>
<p></p><pre class="crayon-plain-tag">#保存上述规则
service iptables save</pre><p> </p>
<p>开启 iptables 服务</p>
<p></p><pre class="crayon-plain-tag">#注册iptables服务
#相当于以前的chkconfig iptables on
systemctl enable iptables.service
#开启服务
systemctl start iptables.service
#查看状态
systemctl status iptables.service</pre><p> </p>
<p>解决 vsftpd 在 iptables 开启后 , 无法使用被动模式的问题</p>
<p>1. 首先在 /etc/sysconfig/iptables-config 中修改或者添加以下内容</p>
<p></p><pre class="crayon-plain-tag">#添加以下内容,注意顺序不能调换
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"</pre><p> </p>
<p>2. 重新设置 iptables 设置</p>
<p></p><pre class="crayon-plain-tag">iptables -A INPUT -m state --state  &lt;strong&gt;RELATED,&lt;/strong&gt;ESTABLISHED -j ACCEPT</pre><p> </p>
<p>以下为完整设置脚本</p>
<p></p><pre class="crayon-plain-tag">#!/bin/sh
iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
service iptables save
systemctl restart iptables.service</pre><p> </p>
]]></content:encoded>
			<wfw:commentRss>https://wbsl.org/linux/249.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用iptables进行端口转发</title>
		<link>https://wbsl.org/other/244.html</link>
		<comments>https://wbsl.org/other/244.html#comments</comments>
		<pubDate>Mon, 07 Oct 2019 03:25:04 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[端口转发]]></category>

		<guid isPermaLink="false">https://wbsl.org/?p=244</guid>
		<description><![CDATA[第一步：开启系统的转发功能 [crayon-69e15baf4b088436729804/] 将 net.ip<a href="https://wbsl.org/other/244.html" class="read-more">Continue Reading</a>]]></description>
				<content:encoded><![CDATA[<p>第一步：开启系统的转发功能</p>
<p></p><pre class="crayon-plain-tag">vi /etc/sysctl.conf</pre><p>将 net.ipv4.ip_forward=0<br />
修改成 net.ipv4.ip_forward=1</p>
<p>编辑后使用命令让配置马上生效</p>
<p></p><pre class="crayon-plain-tag">sysctl -p</pre><p> </p>
<p>第二步： iptables 的命令</p>
<p></p><pre class="crayon-plain-tag">iptables -t nat -A PREROUTING -p tcp --dport [端口号] -j DNAT --to-destination [目标IP]
iptables -t nat -A PREROUTING -p udp --dport [端口号] -j DNAT --to-destination [目标IP]
iptables -t nat -A POSTROUTING -p tcp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP]
iptables -t nat -A POSTROUTING -p udp -d [目标IP] --dport [端口号] -j SNAT --to-source [本地服务器IP]</pre><p> </p>
<p>第三步：重启 iptables 使配置生效</p>
<p></p><pre class="crayon-plain-tag">service iptables save
service iptables restart</pre><p> </p>
<p>扩展需求<br />
多端口转发修改方案： ( 将本地服务器的 50000~65535 转发至目标 IP 为 1.1.1.1 的 50000~65535 端口 )</p>
<p></p><pre class="crayon-plain-tag">-A PREROUTING -p tcp -m tcp --dport 50000:65535 -j DNAT --to-destination 1.1.1.1
-A PREROUTING -p udp -m udp --dport 50000:65535 -j DNAT --to-destination 1.1.1.1
-A POSTROUTING -d 1.1.1.1/32 -p tcp -m tcp --dport 50000:65535 -j SNAT --to-source [本地服务器IP]
-A POSTROUTING -d 1.1.1.1/32 -p udp -m udp --dport 50000:65535 -j SNAT --to-source [本地服务器IP]</pre><p> </p>
<p>非同端口号修改方案：（使用本地服务器的 60000 端口来转发目标 IP 为 1.1.1.1 的 50000 端口）</p>
<p></p><pre class="crayon-plain-tag">-A PREROUTING -p tcp -m tcp --dport 60000 -j DNAT --to-destination 1.1.1.1:50000
-A PREROUTING -p udp -m udp --dport 60000 -j DNAT --to-destination 1.1.1.1:50000
-A POSTROUTING -d 1.1.1.1/32 -p tcp -m tcp --dport 50000 -j SNAT --to-source [本地服务器IP]
-A POSTROUTING -d 1.1.1.1/32 -p udp -m udp --dport 50000 -j SNAT --to-source [本地服务器IP]</pre><p> </p>
]]></content:encoded>
			<wfw:commentRss>https://wbsl.org/other/244.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
