<?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>FORWARD &#8211; bhzhuOS爱好者(原StartOS爱好者)</title>
	<atom:link href="https://www.bhzhu203.com/tag/forward/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bhzhu203.com</link>
	<description>QQ群号125732839</description>
	<lastBuildDate>Thu, 28 Apr 2016 08:43:21 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.7</generator>
	<item>
		<title>25个iptables常用示例</title>
		<link>https://www.bhzhu203.com/2016/04/28/25%e4%b8%aaiptables%e5%b8%b8%e7%94%a8%e7%a4%ba%e4%be%8b-2/</link>
					<comments>https://www.bhzhu203.com/2016/04/28/25%e4%b8%aaiptables%e5%b8%b8%e7%94%a8%e7%a4%ba%e4%be%8b-2/#comments</comments>
		
		<dc:creator><![CDATA[bhzhu203]]></dc:creator>
		<pubDate>Thu, 28 Apr 2016 08:43:21 +0000</pubDate>
				<category><![CDATA[linux知识]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[FORWARD]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[SSH]]></category>
		<guid isPermaLink="false">http://www.bhzhu203.com/?p=281</guid>

					<description><![CDATA[bbsrbs  投稿 本文将给出25个iptables常用规则示例，这些例子为您 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><small class="text-muted"> bbsrbs </small> 投稿</p>
<p>本文将给出25个iptables常用规则示例，这些例子为您提供了些基本的模板，您可以根据特定需求对其进行修改调整以达到期望，更多Linux技术、命令教学请百度搜索“Linux就该这么学”（www.linuxprobe.com)。<br />
格式<br />
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]<br />
参数<br />
-P 设置默认策略:iptables -P INPUT (DROP|ACCEPT)<br />
-F 清空规则链<br />
-L 查看规则链<br />
-A 在规则链的末尾加入新规则<br />
-I num 在规则链的头部加入新规则<br />
-D num 删除某一条规则<br />
-s 匹配来源地址IP/MASK，加叹号&#8221;!&#8221;表示除这个IP外。<br />
-d 匹配目标地址<br />
-i 网卡名称 匹配从这块网卡流入的数据<br />
-o 网卡名称 匹配从这块网卡流出的数据<br />
-p 匹配协议,如tcp,udp,icmp<br />
&#8211;dport num 匹配目标端口号<br />
&#8211;sport num 匹配来源端口号<br />
示例<br />
1. 删除已有规则<br />
在开始创建iptables规则之前，你也许需要删除已有规则。命令如下：<br />
iptables -F(or)iptables –flush<br />
2.设置链的默认策略<br />
链的默认政策设置为”ACCEPT”（接受），若要将INPUT,FORWARD,OUTPUT链设置成”DROP”（拒绝），命令如下：<br />
iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT DROP<br />
当INPUT链和OUTPUT链都设置成DROP时，对于每一个防火墙规则，我们都应该定义两个规则。例如：一个传入另一个传出。在下面所有的例子中，由 于我们已将DROP设置成INPUT链和OUTPUT链的默认策略，每种情况我们都将制定两条规则。当然，如果你相信你的内部用户,则可以省略上面的最后 一行。例如：默认不丢弃所有出站的数据包。在这种情况下,对于每一个防火墙规则要求,你只需要制定一个规则——只对进站的数据包制定规则。<br />
3. 阻止指定IP地址<br />
例：丢弃来自IP地址x.x.x.x的包<br />
BLOCK_THIS_IP=&#8221;x.x.x.x&#8221;iptables -A INPUT -s &#8220;$BLOCK_THIS_IP&#8221; -j DROP<br />
注：当你在log里发现来自某ip地址的异常记录，可以通过此命令暂时阻止该地址的访问以做更深入分析<br />
例：阻止来自IP地址x.x.x.x eth0 tcp的包<br />
iptables -A INPUT -i eth0 -s &#8220;$BLOCK_THIS_IP&#8221; -j DROPiptables -A INPUT -i eth0 -p tcp -s &#8220;$BLOCK_THIS_IP&#8221; -j DROP<br />
4. 允许所有SSH的连接请求<br />
例：允许所有来自外部的SSH连接请求，即只允许进入eth0接口，并且目标端口为22的数据包<br />
iptables -A INPUT -i eth0 -p tcp &#8211;dport 22 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 22 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
5. 仅允许来自指定网络的SSH连接请求<br />
例：仅允许来自于192.168.100.0/24域的用户的ssh连接请求<br />
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 &#8211;dport 22 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 22 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
6.允许http和https的连接请求<br />
例：允许所有来自web &#8211; http的连接请求<br />
iptables -A INPUT -i eth0 -p tcp &#8211;dport 80 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 80 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
例：允许所有来自web &#8211; https的连接请求<br />
iptables -A INPUT -i eth0 -p tcp &#8211;dport 443 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 443 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
7. 使用multiport 将多个规则结合在一起<br />
允许多个端口从外界连入，除了为每个端口都写一条独立的规则外，我们可以用multiport将其组合成一条规则。如下所示：<br />
例：允许所有ssh,http,https的流量访问<br />
iptables -A INPUT -i eth0 -p tcp -m multiport &#8211;dports 22,80,443 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp -m multiport &#8211;sports 22,80,443 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
8. 允许从本地发起的SSH请求<br />
iptables -A OUTPUT -o eth0 -p tcp &#8211;dport 22 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -i eth0 -p tcp &#8211;sport 22 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
请注意,这与允许ssh连入的规则略有不同。本例在OUTPUT链上，我们允许NEW和ESTABLISHED状态。在INPUT链上，我们只允许ESTABLISHED状态。ssh连入的规则与之相反。<br />
9. 仅允许从本地发起到一个指定的网络域的SSH请求<br />
例：仅允许从内部连接到网域192.168.100.0/24<br />
iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 &#8211;dport 22 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -i eth0 -p tcp &#8211;sport 22 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
10. 允许从本地发起的HTTPS连接请求<br />
下面的规则允许输出安全的网络流量。如果你想允许用户访问互联网，这是非常有必要的。在服务器上，这些规则能让你使用wget从外部下载一些文件<br />
iptables -A OUTPUT -o eth0 -p tcp &#8211;dport 443 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A INPUT -i eth0 -p tcp &#8211;sport 443 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
注：对于HTTP web流量的外联请求，只需要将上述命令中的端口从443改成80即可。<br />
11. 负载平衡传入的网络流量<br />
使用iptables可以实现传入web流量的负载均衡，我们可以传入web流量负载平衡使用iptables防火墙规则。<br />
例：使用iptables nth将HTTPS流量负载平衡至三个不同的ip地址。<br />
iptables -A PREROUTING -i eth0 -p tcp &#8211;dport 443 -m state &#8211;state NEW -m nth &#8211;counter 0 &#8211;every 3 &#8211;packet 0 -j DNAT &#8211;to-destination 192.168.1.101:443iptables -A PREROUTING -i eth0 -p tcp &#8211;dport 443 -m state &#8211;state NEW -m nth &#8211;counter 0 &#8211;every 3 &#8211;packet 1 -j DNAT &#8211;to-destination 192.168.1.102:443iptables -A PREROUTING -i eth0 -p tcp &#8211;dport 443 -m state &#8211;state NEW -m nth &#8211;counter 0 &#8211;every 3 &#8211;packet 2 -j DNAT &#8211;to-destination 192.168.1.103:443<br />
12. 允许外部主机ping内部主机<br />
iptables -A INPUT -p icmp &#8211;icmp-type echo-request -j ACCEPTiptables -A OUTPUT -p icmp &#8211;icmp-type echo-reply -j ACCEPT<br />
13. 允许内部主机ping外部主机<br />
iptables -A OUTPUT -p icmp &#8211;icmp-type echo-request -j ACCEPTiptables -A INPUT -p icmp &#8211;icmp-type echo-reply -j ACCEPT<br />
14. 允许回环访问<br />
例：在服务器上允许127.0.0.1回环访问。<br />
iptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT<br />
15. 允许内部网络域外部网络的通信<br />
防火墙服务器上的其中一个网卡连接到外部，另一个网卡连接到内部服务器，使用以下规则允许内部网络与外部网络的通信。此例中，eth1连接到外部网络(互联网)，eth0连接到内部网络(例如:192.168.1.x)。<br />
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT<br />
16. 允许出站的DNS连接<br />
iptables -A OUTPUT -p udp -o eth0 &#8211;dport 53 -j ACCEPTiptables -A INPUT -p udp -i eth0 &#8211;sport 53 -j ACCEPT<br />
17. 允许NIS连接<br />
如果你使用NIS管理用户帐户，你需要允许NIS连接。如果你不允许NIS相关的ypbind连接请求，即使SSH连接请求已被允许，用户仍然无法登录。NIS的端口是动态的，先使用命令rpcinfo –p来知道端口号，此例中为853和850端口。<br />
rpcinfo -p | grep ypbind<br />
例：允许来自111端口以及ypbind使用端口的连接请求<br />
iptables -A INPUT -p tcp &#8211;dport 111 -j ACCEPTiptables -A INPUT -p udp &#8211;dport 111 -j ACCEPTiptables -A INPUT -p tcp &#8211;dport 853 -j ACCEPTiptables -A INPUT -p udp &#8211;dport 853 -j ACCEPTiptables -A INPUT -p tcp &#8211;dport 850 -j ACCEPTiptables -A INPUT -p udp &#8211;dport 850 -j ACCEPT<br />
注：当你重启ypbind之后端口将不同，上述命令将无效。有两种解决方案：1）使用你NIS的静态IP 2）编写shell脚本通过“rpcinfo &#8211; p”命令自动获取动态端口号,并在上述iptables规则中使用。<br />
18. 允许来自指定网络的rsync连接请求<br />
例：允许来自网络192.168.101.0/24的rsync连接请求<br />
iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 &#8211;dport 873 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 873 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
19. 允许来自指定网络的MySQL连接请求<br />
很多情况下，MySQL数据库与web服务跑在同一台服务器上。有时候我们仅希望DBA和开发人员从内部网络（192.168.100.0/24）直接登录数据库，可尝试以下命令：<br />
iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 &#8211;dport 3306 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 3306 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
20. 允许Sendmail, Postfix邮件服务<br />
Sendmail和postfix都使用了25端口，因此我们只需要允许来自25端口的连接请求即可。<br />
iptables -A INPUT -i eth0 -p tcp &#8211;dport 25 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 25 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
21. 允许IMAP和IMAPS<br />
例：允许IMAP/IMAP2流量，端口为143<br />
iptables -A INPUT -i eth0 -p tcp &#8211;dport 143 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 143 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
例：允许IMAPS流量，端口为993<br />
iptables -A INPUT -i eth0 -p tcp &#8211;dport 993 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 993 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
22. 允许POP3和POP3S<br />
例：允许POP3访问<br />
iptables -A INPUT -i eth0 -p tcp &#8211;dport 110 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 110 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
例：允许POP3S访问<br />
iptables -A INPUT -i eth0 -p tcp &#8211;dport 995 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 995 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
23. 防止DoS攻击<br />
iptables -A INPUT -p tcp &#8211;dport 80 -m limit &#8211;limit 25/minute &#8211;limit-burst 100 -j ACCEPT<br />
上述例子中：<br />
-m limit: 启用limit扩展<br />
–limit 25/minute: 允许最多每分钟25个连接（根据需求更改）。<br />
–limit-burst 100: 只有当连接达到limit-burst水平(此例为100)时才启用上述limit/minute限制。<br />
24. 端口转发<br />
例：将来自422端口的流量全部转到22端口。<br />
这意味着我们既能通过422端口又能通过22端口进行ssh连接。启用DNAT转发。<br />
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 &#8211;dport 422 -j DNAT &#8211;to 192.168.102.37:22<br />
除此之外，还需要允许连接到422端口的请求<br />
iptables -A INPUT -i eth0 -p tcp &#8211;dport 422 -m state &#8211;state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp &#8211;sport 422 -m state &#8211;state ESTABLISHED -j ACCEPT<br />
25. 记录丢弃的数据表<br />
第一步：新建名为LOGGING的链<br />
iptables -N LOGGING<br />
第二步：将所有来自INPUT链中的数据包跳转到LOGGING链中<br />
iptables -A INPUT -j LOGGING<br />
第三步：为这些包自定义个前缀，命名为”IPTables Packet Dropped”<br />
iptables -A LOGGING -m limit &#8211;limit 2/min -j LOG &#8211;log-prefix &#8220;IPTables Packet Dropped: &#8221; &#8211;log-level 7<br />
第四步：丢弃这些数据包<br />
iptables -A LOGGING -j DROP</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bhzhu203.com/2016/04/28/25%e4%b8%aaiptables%e5%b8%b8%e7%94%a8%e7%a4%ba%e4%be%8b-2/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
