<?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>温室小花.技术.博客 --纯粹的unix技术博客 &#187; iptable</title>
	<atom:link href="http://www.evanjiang.net.cn/archives/category/network_security/iptable/feed" rel="self" type="application/rss+xml" />
	<link>http://www.evanjiang.net.cn</link>
	<description>红颜弹指老，刹那芳华，与其天涯思君，恋恋不舍，莫若相忘于江湖！</description>
	<lastBuildDate>Sun, 05 Sep 2010 14:51:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Linux操作系统下IPTables配置方法详解</title>
		<link>http://www.evanjiang.net.cn/archives/435.html</link>
		<comments>http://www.evanjiang.net.cn/archives/435.html#comments</comments>
		<pubDate>Thu, 19 Feb 2009 12:16:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iptable]]></category>
		<category><![CDATA[Linux  IPTables 配置 方法]]></category>

		<guid isPermaLink="false">http://www.evanjiang.net.cn/?p=435</guid>
		<description><![CDATA[<p>


 <p>配置一个filter表的防火墙 　　
1、查看本机关于IPTABLES的设置情况
　　[root@tp ~]# iptables -L -n
　　Chain INPUT (policy ACCEPT)
　　target prot opt source destination
　　Chain FORWARD (policy ACCEPT)
　　target prot opt source destination
　　Chain OUTPUT (policy ACCEPT)
　　target prot opt source destination
　　Chain RH-Firewall-1-INPUT (0 references)
　　target prot opt source destination
　　ACCEPT all &#8212; 0.0.0.0/0 0.0.0.0/0
　　ACCEPT icmp &#8212; 0.0.0.0/0 0.0.0.0/0 icmp type 255
　　ACCEPT esp &#8212; 0.0.0.0/0 0.0.0.0/0
　　ACCEPT ah &#8212; 0.0.0.0/0 0.0.0.0/0
　　ACCEPT udp [...]]]></description>
			<content:encoded><![CDATA[<p style="float: left;margin: 4px;"><script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 160x600, 创建于 10-2-7 */
google_ad_slot = "8970910006";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p> <p>配置一个filter表的防火墙 　　<br />
1、查看本机关于IPTABLES的设置情况<br />
　　[root@tp ~]# iptables -L -n<br />
　　Chain INPUT (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　Chain FORWARD (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　Chain OUTPUT (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　Chain RH-Firewall-1-INPUT (0 references)<br />
　　target prot opt source destination<br />
　　ACCEPT all &#8212; 0.0.0.0/0 0.0.0.0/0<br />
　　ACCEPT icmp &#8212; 0.0.0.0/0 0.0.0.0/0 icmp type 255<br />
　　ACCEPT esp &#8212; 0.0.0.0/0 0.0.0.0/0<br />
　　ACCEPT ah &#8212; 0.0.0.0/0 0.0.0.0/0<br />
　　ACCEPT udp &#8212; 0.0.0.0/0 224.0.0.251 udp dpt:5353<br />
　　ACCEPT udp &#8212; 0.0.0.0/0 0.0.0.0/0 udp dpt:631<br />
　　ACCEPT all &#8212; 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED<br />
　　ACCEPT tcp &#8212; 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22<br />
　　ACCEPT tcp &#8212; 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80<br />
　　ACCEPT tcp &#8212; 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25<br />
　　REJECT all &#8212; 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited<br />
　　可以看出俺在安装linux时,选择了有防火墙,并且开放了22,80,25端口.<br />
　　如果你在安装linux时没有选择启动防火墙,是这样的<br />
　　[root@tp ~]# iptables -L -n<br />
　　Chain INPUT (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　Chain FORWARD (policy ACCEPT)<br />
　　target prot opt source destination </p>
<p>Chain OUTPUT (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　什么规则都没有.<br />
<span id="more-435"></span><br />
　　2、清除原有规则.<br />
　　不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.<br />
　　[root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则<br />
　　[root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则<br />
　　俺们在来看一下<br />
　　[root@tp ~]# iptables -L -n<br />
　　Chain INPUT (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　Chain FORWARD (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　Chain OUTPUT (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　什么都没有了吧,和俺们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.<br />
　　[root@tp ~]# /etc/rc.d/init.d/iptables save<br />
　　这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.<br />
　　[root@tp ~]# service iptables restart<br />
　　现在IPTABLES配置表里什么配置都没有了,那俺们开始俺们的配置吧。<br />
　　3、设定预设规则<br />
　　[root@tp ~]# iptables -p INPUT DROP<br />
　　[root@tp ~]# iptables -p OUTPUT ACCEPT<br />
　　[root@tp ~]# iptables -p FORWARD DROP<br />
　　上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.俺们要控制流入数据包<br />
　　而对于OUTPUT链,也就是流出的包俺们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.<br />
这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做俺认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.还是推荐三个链都是DROP.<br />
　　注:如果你是远程SSH登陆的话,当你输入第一个命令回车的时候就应该掉了.因为你没有设置任何规则.<br />
　　怎么办,去本机操作呗!<br />
　　4、添加规则.<br />
　　首先添加INPUT链,INPUT链的默认规则是DROP,所以俺们就写需要ACCETP(通过)的链<br />
　　为了能采用远程SSH登陆,俺们要开启22端口.<br />
　　[root@tp ~]# iptables -A INPUT -p tcp &#8211;dport 22 -j ACCEPT<br />
　　[root@tp ~]# iptables -A OUTPUT -p tcp &#8211;sport 22 -j ACCEPT(注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.<br />
　　其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:<br />
　　[root@tp ~]# iptables -A OUTPUT -p tcp &#8211;sport 80 -j ACCEPT ,其他同理.)<br />
　　如果做了WEB服务器,开启80端口.<br />
　　[root@tp ~]# iptables -A INPUT -p tcp &#8211;dport 80 -j ACCEPT<br />
　　如果做了邮件服务器,开启25,110端口.<br />
　　[root@tp ~]# iptables -A INPUT -p tcp &#8211;dport 110 -j ACCEPT<br />
　　[root@tp ~]# iptables -A INPUT -p tcp &#8211;dport 25 -j ACCEPT<br />
　　如果做了FTP服务器,开启21端口<br />
　　[root@tp ~]# iptables -A INPUT -p tcp &#8211;dport 21 -j ACCEPT<br />
　　[root@tp ~]# iptables -A INPUT -p tcp &#8211;dport 20 -j ACCEPT </p>
<p>如果做了DNS服务器,开启53端口<br />
　　[root@tp ~]# iptables -A INPUT -p tcp &#8211;dport 53 -j ACCEPT<br />
　　如果你还做了其他的服务器,需要开启哪个端口,照写就行了.<br />
　　上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP<br />
　　允许icmp包通过,也就是允许ping,<br />
　　[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)<br />
　　[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)<br />
　　允许loopback!(不然会导致DNS无法正常关闭等问题)<br />
　　IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)<br />
　　IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)<br />
　　下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以俺们就写需要DROP(放弃)的链.<br />
　　减少不安全的端口连接<br />
　　[root@tp ~]# iptables -A OUTPUT -p tcp &#8211;sport 31337 -j DROP<br />
　　[root@tp ~]# iptables -A OUTPUT -p tcp &#8211;dport 31337 -j DROP<br />
有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会<br />
　　还有其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139（smb）,2049(NFS)端口也应被禁止,俺在这写的也不全,有兴趣的朋友应该去查一下相关资料.<br />
　　当然出入更安全的考虑你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加<br />
　　允许SSH登陆一样.照着写就行了.<br />
　　下面写一下更加细致的规则,就是限制到某台机器 </p>
<p>如:俺们只允许192.168.0.3的机器进行SSH连接<br />
　　[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp &#8211;dport 22 -j ACCEPT<br />
　　如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.<br />
　　24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.<br />
　　-A INPUT -p tcp -m tcp &#8211;dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.<br />
　　或采用命令方式:<br />
　　[root@tp ~]# iptables -D INPUT -p tcp &#8211;dport 22 -j ACCEPT<br />
　　然后保存,俺再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.<br />
　　[root@tp ~]# /etc/rc.d/init.d/iptables save<br />
　　这样写 !192.168.0.3 表示除了192.168.0.3的ip地址<br />
　　其他的规则连接也一样这么设置.<br />
　　在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以俺们就写需要ACCETP(通过)的链,对正在转发链的监控.<br />
开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)<br />
　　[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT<br />
　　[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT<br />
　　丢弃坏的TCP包<br />
　　[root@tp ~]#iptables -A FORWARD -p TCP ! &#8211;syn -m state &#8211;state NEW -j DROP<br />
　　处理IP碎片数量,防止攻击,允许每秒100个<br />
　　[root@tp ~]#iptables -A FORWARD -f -m limit &#8211;limit 100/s &#8211;limit-burst 100 -j ACCEPT<br />
　　设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.<br />
　　[root@tp ~]#iptables -A FORWARD -p icmp -m limit &#8211;limit 1/s &#8211;limit-burst 10 -j ACCEPT </p>
<p>俺在前面只所以允许ICMP包通过,就是因为俺在这里有限制。<br />
　　配置一个NAT表放火墙<br />
　　1、查看本机关于NAT的设置情况<br />
　　[root@tp rc.d]# iptables -t nat -L<br />
　　Chain PREROUTING (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　Chain POSTROUTING (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　SNAT all &#8212; 192.168.0.0/24 anywhere to:211.101.46.235<br />
　　Chain OUTPUT (policy ACCEPT)<br />
　　target prot opt source destination<br />
　　俺的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则).关于怎么配置NAT,参考俺的另一篇文章<br />
　　当然你如果还没有配置NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的<br />
　　如果你想清除,命令是<br />
　　[root@tp ~]# iptables -F -t nat<br />
　　[root@tp ~]# iptables -X -t nat<br />
　　[root@tp ~]# iptables -Z -t nat<br />
　　2、添加规则<br />
　　添加基本的NAT地址转换,(关于如何配置NAT可以看俺的另一篇文章),<br />
　　添加规则,俺们只添加DROP链.因为默认链全是ACCEPT.<br />
　　防止外网用内网IP欺骗<br />
　　[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP<br />
　　[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP<br />
　　[root@tp sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP<br />
　　如果俺们想,比如阻止MSN,QQ,BT等的话,需要找到它们所用的端口或者IP,(个人认为没有太大必要)<br />
　　例：<br />
　　禁止与211.101.46.253的所有连接<br />
　　[root@tp ~]# iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP<br />

<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
禁用FTP(21)端口<br />
　　[root@tp ~]# iptables -t nat -A PREROUTING -p tcp &#8211;dport 21 -j DROP<br />
　　这样写范围太大了,俺们可以更精确的定义.<br />
　　[root@tp ~]# iptables -t nat -A PREROUTING -p tcp &#8211;dport 21 -d 211.101.46.253 -j DROP<br />
　　这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.如web(80端口)连接.<br />
　　按照俺写的,你只要找到QQ,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了.<br />
　　最后：<br />
　　drop非法连接<br />
　　[root@tp ~]# iptables -A INPUT -m state &#8211;state INVALID -j DROP<br />
　　[root@tp ~]# iptables -A OUTPUT -m state &#8211;state INVALID -j DROP<br />
　　[root@tp ~]# iptables-A FORWARD -m state &#8211;state INVALID -j DROP<br />
　　允许所有已经建立的和相关的连接<br />
　　[root@tp ~]# iptables-A INPUT -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT<br />
　　[root@tp ~]# iptables-A OUTPUT -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT<br />
　　[root@tp ~]# /etc/rc.d/init.d/iptables save<br />
　　这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用．<br />
　　[root@tp ~]# service iptables restart</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/435.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iptables设置基础</title>
		<link>http://www.evanjiang.net.cn/archives/249.html</link>
		<comments>http://www.evanjiang.net.cn/archives/249.html#comments</comments>
		<pubDate>Fri, 16 Jan 2009 07:41:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iptable]]></category>
		<category><![CDATA[iptable 设置 基础]]></category>

		<guid isPermaLink="false">http://www.hunttech.com.cn/wpblog/?p=249</guid>
		<description><![CDATA[<p style="float: right;margin: 4px;">


</p> <p class="MsoNormal">iptables是针对Linux防火墙netfilter的管理配置工具。在进行iptables防火墙设置前，必须打开系统内核的IP转发功能，使系统成为路由器。在RedHat中有以下两种方法实现：
1.修改内核变量ip_forward
#echo&#8221;1&#8243;&#62;/proc/sys/net/ipv4/ip_froward
2.修改脚本/etc/sysconfig/network
将FROWARD_IPV4=false改为FROWARD_IPV4=true</p>
<p class="MsoNormal">
一、数据包流经netfilter防火墙的路径
1.流入本机数据包的路径：

注：①.路径上某表链规则匹配数据包并进行ACCEPT、DROP、REJECT操作时，ACCEPT使数据包直接到达目的地，DROP和REJECT则当场丢弃数据包，该数据包不会在后续路径上再出现，故会影响其它表的操作。
②.PREROUTING和POSTROUTING链只对请求连接的包进行操作，对属于该连接的后续包，不予比对规则，只按已确定的规则自动进行操作，因此建议不要在此链上作过滤操作，否则将漏掉对后续包的过滤。
二、iptables指令的基本格式：
&#60;iptables&#62;[-ttable]&#60;COMMAND&#62;[chains][rule-matcher][-jtarget]
&#60;指令&#62;[指定表]&#60;指定操作命令&#62;[指定链][指定匹配规则][指定目标动作]
注：&#60;&#62;括起来的为必设项，[]括起来的为可设项。iptables指令要求严格区分大小写！
三、iptables指令的语法规则要素：
1、netfilter表(Table)
netfilter的表操作是以-t或&#8211;table&#60;table&#62;来指定的，未指定时默认为filte表。共有以下三种表：
①.Filter表(过滤表)
②.Nat表(网络地址转换表)
③.Mangle表(数据包处理表)
2、常用操作命令(Command)
-A或&#8211;append在所选的链尾加入一条或多条规则。
-D或&#8211;delete从所选的链中删除一条或多条匹配的规则。
-R或&#8211;replace在所选的链中替换一条匹配的规则，需指定规则中的数字。
-I或&#8211;insert按给出的规则号在所选的链中插入一条规则。
-L或&#8211;list列出指定链的全部规则，如未指定链，则列出所有链的全部规则。
-F或&#8211;flush清除指定链和表中的全部规则，如未指定链，则所有链都将被清。
-N或&#8211;new-chain以给定的名字创建一条新的用户自定义链，不能与已有的链同名。
-X或&#8211;delete-chain删除指定的用户自定义链，必须保证链中的规则不在使用才能删除，若未指定链，则删除所有用户自定义链。
-P或&#8211;policy为内置链指定默认规则(链政策)。用户自定义链没有默认规则，其默认规则是规则链中的最后一条规则，用-L命令时它显示在第一行。
-E或&#8211;rename-chain根据用户给出的名字对指定的自定义链进行重命名，该命令不影响Table的结构。
-C或&#8211;check检查给定的包是否与指定的规则相匹配。
-Z或&#8211;zero将指定链中所有规则的数据包(PKTS)和字节(byte)计数器清零。该计数器用来计算同一数据包出现的次数，是过滤阻断式攻击不可或缺的工具。
-h或&#8211;help给出当前命令语法的简短说明。
3、链(Chains)
①.INPUT链处理输入包的规则链。
②.OUTPUT链处理输出包的规则链。
③.FORWARD链处理转发包的规则链。
④.PREROUTING链对到达且未经路由判断之前的包进行处理的规则链。
⑤.POSTROUTING链对发出且经过路由判断之后的包进行处理的规则链。
⑥.用户自定义链是由filter表内置链来调用的，它是针对调用链获取的数据包进行处理的规则链。
注：①.Filter表有INPUT、OUTPUT、FORWARD和自定义四种链形式。
②.Nat表有OUTPUT、PREROUTING、POSTROUTING三种链形式。
③.Mangle表有INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING五种链形式。
4、常用匹配规则(ruleMatcher)
-c或&#8211;set-counters重新设置规则的计数器,可指定PKTS和BYTES选项来设置计数器计数规则。
-s或&#8211;source[!]address[/mask]指定匹配规则的源主机名称、源IP地址或源IP地址范围。
&#8211;sport或&#8211;source-port[!]port[:port]
指定匹配规则的源端口或源端口范围，可用端口号，也可用/etc/services文件中的名字,端口范围格式xxx:yyy。
-d或&#8211;destination[!]address[/mask]指定匹配规则的目的地址或目的地址范围。
&#8211;dport或&#8211;destination-port[!]port[:port]
指定匹配规则的目的端口或目的端口范围，可用端口号，也可用/etc/services文件中的名字,端口范围格式xxx:yyy。
-i或&#8211;in-interface[!]interfacename[+]
指定匹配规则的对内网络接口名，默认则符合所有接口，可制定暂未工作的接口，待其工作后才起作用，该选项只对INPUT、FROWARD和PREROUTING链是合法的。
-o或—out-interface[!]interfacename[+]
指定匹配规则的对外网络接口名，默认则符合所有接口，可制定暂未工作的接口，待其工作后才起作用，该选项只对OUTPUT、FROWARD和POSTROUTING链是合法的。
-j或&#8211;jump指定规则的目标即动作或跳转，如未指定则此规则无任何效果。
-p或&#8211;protocol[!]protocol
指定匹配规则的通讯协议，如：tcp、udp、icmp、all，如未指定则匹配所有通讯协议。
&#8211;icmp-type[!]typename指定匹配规则的ICMP消息类型,选项后需有一个icmp名称类型、数字类型（如3）、或一对用/号分隔的数字类型和编码（如3/3），可用以下命令查看有效的icmp类型名表：iptables-picmp-h
-f规则应用于IP数据包第二分片以后的分片。
&#8211;tcp-option这个选项后需接一个数字，用来匹配tcp选项等于该数字的数据包。如果需要检查tcp选项，那些tcp表头部完整的数据包就会被自动删除。
&#8211;tcp-flags此选项后需接2个参数，以对TCP标志进行筛选。第一个参数表示屏蔽（MASK），它可用来指定数据包中需要检查的TCP标志，而第二个参数表示需要设置的标准，可用的标志包括：SYN、ACK、FIN、RST、URG、PSH、ALL和NONE等，如果指定多个标志，则每个标志间需以逗号分隔。以下范例表示所有标志都要检查，但只有SYN和ACK被设置。
iptables–AINPUT–protocoltcp–tcp-flagsALLSYN,ACK–jDENY
-l在系统日志/var/log/messages中记录与该规则匹配的数据包。
-v详细输出。
-n当显示时,不对IP地址执行DNS查找。
[!]-y-y表明tcp握手中的连接请求标志位SYN；!-y表示对该请求的响应。
[!]-syn指定仅仅匹配设置了SYN位，清除了ACK、FIN位的TCP包，该参数仅针对TCP协议类型使用。
-m-state标记数据包。
注：“！”为逻辑非；接口名后跟“+”表示所有以此接口名开头的接口都会被匹配。
附：匹配条件扩展：
TCP&#8212;&#8211;匹配源端口，目的端口，及tcp标记的任意组合，tcp选项等。
UPD&#8212;&#8211;匹配源端口和目的端口
ICMP&#8212;-匹配ICMP类型
MAC&#8212;&#8211;匹配接收到的数据的mac地址
MARK&#8212;-匹配nfmark
OWNE&#8212;-(仅仅应用于本地产生的数据包)来匹配用户ID，组ID，进程ID及会话ID
TOS——匹配IP头的TOS字段的值。
LIMIT&#8212;匹配特定时间段内的数据包。这个扩展匹配对于限制dos攻击数据流非常有用。
STATE&#8212;匹配特定状态下的数据包(由连接跟踪子系统来决定状态)，可能的状态包括：
INVALID不匹配于任何连接的数据包
ESTABLISHED属于某个已经建立的连接的数据包
NEW请求建立连接的数据包
RELATED属于某个已建立连接产生的新连接的数据包，例如一个ICMP错误消息或ftp数据连接
5、目标动作(Target)
当规则匹配一个包时，要执行的目标动作以-j参数标识。
①.Filter表的目标动作：
ACCEPT允许数据包通过。
DROP丢弃数据包。
②.Nat表的目标动作：
SNAT修改数据包的源地址。
MASQUERADE修改数据包的源地址，只用于动态分配IP地址的情况。
DNAT修改数据包的目标地址。
REDIRECT将包重定向到进入系统时网络接口的IP地址，目标端口改为指定端口。
③.Mangle表的目标动作：
TTL
TOS用来设置IP表头中8位长度的TOS字段的值，此选项只在使用MangleTables时才有效。
MARK对数据包进行标记，供其它规则或数据包处理程序使用，此选项只在Mangle表中使用。
④.扩展的目标动作：
REJECT丢弃数据包的同时返回给发送者一个可配置的错误信息。
LOG将匹配的数据包信息，传递给syslog()进行记录。
ULOG将匹配的数据包信息，使用用户空间的log进程进行记录。
MIRROR互换源和目的地址以后重新传输该数据包。
TOS改写包的TOS值。
QUEUE表示把这个包重导入本机的队列中。
RETURN表示跳离这条链的匹配，如果是用户自定义链，就会返回原链的下一个规则处继续检查，如果是内置链，那会参考政策来处理数据包。
注：要使用扩展的目标动作，必须在内核中激活相应选项或装载相应内核模块。
四、iptables规则集的保存、恢复和启动
1、保存与恢复
用iptables指令在内存中逐条建立起来的规则集，经测试通过后，可用iptables-save命令保存，其中/etc/sysconfig/iptables是iptables守护进程调用的默认规则集文件。
保存规则集命令：
#/sbin/iptables-save&#62;/etc/sysconfig/iptables
恢复规则集命令：
#/sbin/iptables-restore&#60;/etc/sysconfig/iptables
2、iptables规则集脚本的启动
①.默认脚本的启动
RedHatiptables的启动脚本文件/etc/rc.d/init.d/iptables在每次启动时都要使用/etc/sysconfig/iptables提供的规则进行规则恢复，并可以使用如下命令保存规则：
#serviceiptablessave
②.自定义脚本的启动
用户可以在自定义脚本中直接用iptables命令编写一个规则集，并在启动时执行这个脚本。设用户自定义脚本文件名为/etc/fw/rules,则可以在启动脚本/etc/rc.d/rc.local中加入代码：if[-x/etc/fw/rules]；then/etc/fw/rules；fi；即可在每次启动时执行该脚本。
注：如果使用此种方式，建议使用ntsysv命令关闭系统的iptables守护进程。</p>
<p> </p>



<p>






</p>
]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span lang="EN-US">iptables</span><span>是针对</span><span lang="EN-US">Linux</span><span>防火墙</span><span lang="EN-US">netfilter</span><span>的管理配置工具。在进行</span><span lang="EN-US">iptables</span><span>防火墙设置前，必须打开系统内核的</span><span lang="EN-US">IP</span><span>转发功能，使系统成为路由器。在</span><span lang="EN-US">RedHat</span><span>中有以下两种方法实现：</span><span lang="EN-US"><br />
1.</span><span>修改内核变量</span><span lang="EN-US">ip_forward<br />
#echo&#8221;1&#8243;&gt;/proc/sys/net/ipv4/ip_froward<br />
2.</span><span>修改脚本</span><span lang="EN-US">/etc/sysconfig/network<br />
</span><span>将</span><span lang="EN-US">FROWARD_IPV4=false</span><span>改为</span><span lang="EN-US">FROWARD_IPV4=true</span></p>
<p class="MsoNormal"><span lang="EN-US"><span id="more-249"></span><br />
</span><span>一、数据包流经</span><span lang="EN-US">netfilter</span><span>防火墙的路径</span><span lang="EN-US"><br />
1.</span><span>流入本机数据包的路径：</span><span lang="EN-US"><br />
<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75"  o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter" /> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0" /> <v:f eqn="sum @0 1 0" /> <v:f eqn="sum 0 0 @1" /> <v:f eqn="prod @2 1 2" /> <v:f eqn="prod @3 21600 pixelWidth" /> <v:f eqn="prod @3 21600 pixelHeight" /> <v:f eqn="sum @0 0 1" /> <v:f eqn="prod @6 1 2" /> <v:f eqn="prod @7 21600 pixelWidth" /> <v:f eqn="sum @8 21600 0" /> <v:f eqn="prod @7 21600 pixelHeight" /> <v:f eqn="sum @10 21600 0" /> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o:lock v:ext="edit" aspectratio="t" /> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style='width:389.25pt;  height:332.25pt'> <v:imagedata src="file:///C:\DOCUME~1\gzzymh\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg" mce_src="file:///C:\DOCUME~1\gzzymh\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg"   o:href="http://linux.chinaunix.net/bbs/attachments/month_0805/20080501_b6354a3c86fdf431d23aYuFITUesQhLK.jpg" /> </v:shape><![endif]--><img src="file:///C:/DOCUME~1/gzzymh/LOCALS~1/Temp/msohtml1/01/clip_image001.jpg" border="0" alt="" width="519" height="443" /><span><!--[if gte vml 1]><v:shape  id="_x0000_i1026" type="#_x0000_t75" alt="" style='width:15pt;height:15pt'> <v:imagedata src="file:///C:\DOCUME~1\gzzymh\LOCALS~1\Temp\msohtml1\01\clip_image002.gif" mce_src="file:///C:\DOCUME~1\gzzymh\LOCALS~1\Temp\msohtml1\01\clip_image002.gif"   o:href="http://linux.chinaunix.net/bbs/images/default/attachimg.gif" /> </v:shape><![endif]--><img src="file:///C:/DOCUME~1/gzzymh/LOCALS~1/Temp/msohtml1/01/clip_image002.gif" border="0" alt="" width="20" height="20" /></span><br />
</span><span>注：</span><span>①</span><span lang="EN-US">.</span><span>路径上某表链规则匹配数据包并进行</span><span lang="EN-US">ACCEPT</span><span>、</span><span lang="EN-US">DROP</span><span>、</span><span lang="EN-US">REJECT</span><span>操作时，</span><span lang="EN-US">ACCEPT</span><span>使数据包直接到达目的地，</span><span lang="EN-US">DROP</span><span>和</span><span lang="EN-US">REJECT</span><span>则当场丢弃数据包，该数据包不会在后续路径上再出现，故会影响其它表的操作。</span><span lang="EN-US"><br />
</span><span>②</span><span lang="EN-US">.PREROUTING</span><span>和</span><span lang="EN-US">POSTROUTING</span><span>链只对请求连接的包进行操作，对属于该连接的后续包，不予比对规则，只按已确定的规则自动进行操作，因此建议不要在此链上作过滤操作，否则将漏掉对后续包的过滤。</span><span lang="EN-US"><br />
</span><span>二、</span><span lang="EN-US">iptables</span><span>指令的基本格式：</span><span lang="EN-US"><br />
&lt;iptables&gt;[-ttable]&lt;COMMAND&gt;[chains][rule-matcher][-jtarget]<br />
&lt;</span><span>指令</span><span lang="EN-US">&gt;[</span><span>指定表</span><span lang="EN-US">]&lt;</span><span>指定操作命令</span><span lang="EN-US">&gt;[</span><span>指定链</span><span lang="EN-US">][</span><span>指定匹配规则</span><span lang="EN-US">][</span><span>指定目标动作</span><span lang="EN-US">]<br />
</span><span>注：</span><span lang="EN-US">&lt;&gt;</span><span>括起来的为必设项，</span><span lang="EN-US">[]</span><span>括起来的为可设项。</span><span lang="EN-US">iptables</span><span>指令要求严格区分大小写！</span><span lang="EN-US"><br />
</span><span>三、</span><span lang="EN-US">iptables</span><span>指令的语法规则要素：</span><span lang="EN-US"><br />
1</span><span>、</span><span lang="EN-US">netfilter</span><span>表</span><span lang="EN-US">(Table)<br />
netfilter</span><span>的表操作是以</span><span lang="EN-US">-t</span><span>或</span><span lang="EN-US">&#8211;table&lt;table&gt;</span><span>来指定的，未指定时默认为</span><span lang="EN-US">filte</span><span>表。共有以下三种表：</span><span lang="EN-US"><br />
</span><span>①</span><span lang="EN-US">.Filter</span><span>表</span><span lang="EN-US">(</span><span>过滤表</span><span lang="EN-US">)<br />
</span><span>②</span><span lang="EN-US">.Nat</span><span>表</span><span lang="EN-US">(</span><span>网络地址转换表</span><span lang="EN-US">)<br />
</span><span>③</span><span lang="EN-US">.Mangle</span><span>表</span><span lang="EN-US">(</span><span>数据包处理表</span><span lang="EN-US">)<br />
2</span><span>、常用操作命令</span><span lang="EN-US">(Command)<br />
-A</span><span>或</span><span lang="EN-US">&#8211;append</span><span>在所选的链尾加入一条或多条规则。</span><span lang="EN-US"><br />
-D</span><span>或</span><span lang="EN-US">&#8211;delete</span><span>从所选的链中删除一条或多条匹配的规则。</span><span lang="EN-US"><br />
-R</span><span>或</span><span lang="EN-US">&#8211;replace</span><span>在所选的链中替换一条匹配的规则，需指定规则中的数字。</span><span lang="EN-US"><br />
-I</span><span>或</span><span lang="EN-US">&#8211;insert</span><span>按给出的规则号在所选的链中插入一条规则。</span><span lang="EN-US"><br />
-L</span><span>或</span><span lang="EN-US">&#8211;list</span><span>列出指定链的全部规则，如未指定链，则列出所有链的全部规则。</span><span lang="EN-US"><br />
-F</span><span>或</span><span lang="EN-US">&#8211;flush</span><span>清除指定链和表中的全部规则，如未指定链，则所有链都将被清。</span><span lang="EN-US"><br />
-N</span><span>或</span><span lang="EN-US">&#8211;new-chain</span><span>以给定的名字创建一条新的用户自定义链，不能与已有的链同名。</span><span lang="EN-US"><br />
-X</span><span>或</span><span lang="EN-US">&#8211;delete-chain</span><span>删除指定的用户自定义链，必须保证链中的规则不在使用才能删除，若未指定链，则删除所有用户自定义链。</span><span lang="EN-US"><br />
-P</span><span>或</span><span lang="EN-US">&#8211;policy</span><span>为内置链指定默认规则</span><span lang="EN-US">(</span><span>链政策</span><span lang="EN-US">)</span><span>。用户自定义链没有默认规则，其默认规则是规则链中的最后一条规则，用</span><span lang="EN-US">-L</span><span>命令时它显示在第一行。</span><span lang="EN-US"><br />
-E</span><span>或</span><span lang="EN-US">&#8211;rename-chain</span><span>根据用户给出的名字对指定的自定义链进行重命名，该命令不影响</span><span lang="EN-US">Table</span><span>的结构。</span><span lang="EN-US"><br />
-C</span><span>或</span><span lang="EN-US">&#8211;check</span><span>检查给定的包是否与指定的规则相匹配。</span><span lang="EN-US"><br />
-Z</span><span>或</span><span lang="EN-US">&#8211;zero</span><span>将指定链中所有规则的数据包</span><span lang="EN-US">(PKTS)</span><span>和字节</span><span lang="EN-US">(byte)</span><span>计数器清零。该计数器用来计算同一数据包出现的次数，是过滤阻断式攻击不可或缺的工具。</span><span lang="EN-US"><br />
-h</span><span>或</span><span lang="EN-US">&#8211;help</span><span>给出当前命令语法的简短说明。</span><span lang="EN-US"><br />
3</span><span>、链</span><span lang="EN-US">(Chains)<br />
</span><span>①</span><span lang="EN-US">.INPUT</span><span>链处理输入包的规则链。</span><span lang="EN-US"><br />
</span><span>②</span><span lang="EN-US">.OUTPUT</span><span>链处理输出包的规则链。</span><span lang="EN-US"><br />
</span><span>③</span><span lang="EN-US">.F</span><span lang="EN-US">ORWARD</span><span>链处理转发包的规则链。</span><span lang="EN-US"><br />
</span><span>④</span><span lang="EN-US">.PREROUTING</span><span>链对到达且未经路由判断之前的包进行处理的规则链。</span><span lang="EN-US"><br />
</span><span>⑤</span><span lang="EN-US">.POSTROUTING</span><span>链对发出且经过路由判断之后的包进行处理的规则链。</span><span lang="EN-US"><br />
</span><span>⑥</span><span lang="EN-US">.</span><span>用户自定义链是由</span><span lang="EN-US">filter</span><span>表内置链来调用的，它是针对调用链获取的数据包进行处理的规则链。</span><span lang="EN-US"><br />
</span><span>注：</span><span>①</span><span lang="EN-US">.Filter</span><span>表有</span><span lang="EN-US">INPUT</span><span>、</span><span lang="EN-US">OUTPUT</span><span>、</span><span lang="EN-US">FORWARD</span><span>和自定义四种链形式。</span><span lang="EN-US"><br />
</span><span>②</span><span lang="EN-US">.Nat</span><span>表有</span><span lang="EN-US">OUTPUT</span><span>、</span><span lang="EN-US">PREROUTING</span><span>、</span><span lang="EN-US">POSTROUTING</span><span>三种链形式。</span><span lang="EN-US"><br />
</span><span>③</span><span lang="EN-US">.Mangle</span><span>表有</span><span lang="EN-US">INPUT</span><span>、</span><span lang="EN-US">OUTPUT</span><span>、</span><span lang="EN-US">FORWARD</span><span>、</span><span lang="EN-US">PREROUTING</span><span>、</span><span lang="EN-US">POSTROUTING</span><span>五种链形式。</span><span lang="EN-US"><br />
4</span><span>、常用匹配规则</span><span lang="EN-US">(ruleMatcher)<br />
-c</span><span>或</span><span lang="EN-US">&#8211;set-counters</span><span>重新设置规则的计数器</span><span lang="EN-US">,</span><span>可指定</span><span lang="EN-US">PKTS</span><span>和</span><span lang="EN-US">BYTES</span><span>选项来设置计数器计数规则。</span><span lang="EN-US"><br />
-s</span><span>或</span><span lang="EN-US">&#8211;source[!]address[/mask]</span><span>指定匹配规则的源主机名称、源</span><span lang="EN-US">IP</span><span>地址或源</span><span lang="EN-US">IP</span><span>地址范围。</span><span lang="EN-US"><br />
&#8211;sport</span><span>或</span><span lang="EN-US">&#8211;source-port[!]port[:port]<br />
</span><span>指定匹配规则的源端口或源端口范围，可用端口号，也可用</span><span lang="EN-US">/etc/services</span><span>文件中的名字</span><span lang="EN-US">,</span><span>端口范围格式</span><span lang="EN-US">xxx:yyy</span><span>。</span><span lang="EN-US"><br />
-d</span><span>或</span><span lang="EN-US">&#8211;destination[!]address[/mask]</span><span>指定匹配规则的目的地址或目的地址范围。</span><span lang="EN-US"><br />
&#8211;dport</span><span>或</span><span lang="EN-US">&#8211;destination-port[!]port[:port]<br />
</span><span>指定匹配规则的目的端口或目的端口范围，可用端口号，也可用</span><span lang="EN-US">/etc/services</span><span>文件中的名字</span><span lang="EN-US">,</span><span>端口范围格式</span><span lang="EN-US">xxx:yyy</span><span>。</span><span lang="EN-US"><br />
-i</span><span>或</span><span lang="EN-US">&#8211;in-interface[!]interfacename[+]<br />
</span><span>指定匹配规则的对内网络接口名，默认则符合所有接口，可制定暂未工作的接口，待其工作后才起作用，该选项只对</span><span lang="EN-US">INPUT</span><span>、</span><span lang="EN-US">FROWARD</span><span>和</span><span lang="EN-US">PREROUTING</span><span>链是合法的。</span><span lang="EN-US"><br />
-o</span><span>或</span><span lang="EN-US">—out-interface[!]interfacename[+]<br />
</span><span>指定匹配规则的对外网络接口名，默认则符合所有接口，可制定暂未工作的接口，待其工作后才起作用，该选项只对</span><span lang="EN-US">OUTPUT</span><span>、</span><span lang="EN-US">FROWARD</span><span>和</span><span lang="EN-US">POSTROUTING</span><span>链是合法的。</span><span lang="EN-US"><br />
-j</span><span>或</span><span lang="EN-US">&#8211;jump</span><span>指定规则的目标即动作或跳转，如未指定则此规则无任何效果。</span><span lang="EN-US"><br />
-p</span><span>或</span><span lang="EN-US">&#8211;protocol[!]protocol<br />
</span><span>指定匹配规则的通讯协议，如：</span><span lang="EN-US">tcp</span><span>、</span><span lang="EN-US">udp</span><span>、</span><span lang="EN-US">icmp</span><span>、</span><span lang="EN-US">all</span><span>，如未指定则匹配所有通讯协议。</span><span lang="EN-US"><br />
&#8211;icmp-type[!]typename</span><span>指定匹配规则的</span><span lang="EN-US">ICMP</span><span>消息类型</span><span lang="EN-US">,</span><span>选项后需有一个</span><span lang="EN-US">icmp</span><span>名称类型、数字类型（如</span><span lang="EN-US">3</span><span>）、或一对用</span><span lang="EN-US">/</span><span>号分隔的数字类型和编码（如</span><span lang="EN-US">3/3</span><span>），可用以下命令查看有效的</span><span lang="EN-US">icmp</span><span>类型名表：</span><span lang="EN-US">iptables-picmp-h<br />
-f</span><span>规则应用于</span><span lang="EN-US">IP</span><span>数据包第二分片以后的分片。</span><span lang="EN-US"><br />
&#8211;tcp-option</span><span>这个选项后需接一个数字，用来匹配</span><span lang="EN-US">tcp</span><span>选项等于该数字的数据包。如果需要检查</span><span lang="EN-US">tcp</span><span>选项，那些</span><span lang="EN-US">tcp</span><span>表头部完整的数据包就会被自动删除。</span><span lang="EN-US"><br />
&#8211;tcp-flags</span><span>此选项后需接</span><span lang="EN-US">2</span><span>个参数，以对</span><span lang="EN-US">TCP</span><span>标志进行筛选。第一个参数表示屏蔽（</span><span lang="EN-US">MASK</span><span>），它可用来指定数据包中需要检查的</span><span lang="EN-US">TCP</span><span>标志，而第二个参数表示需要设置的标准，可用的标志包括：</span><span lang="EN-US">SYN</span><span>、</span><span lang="EN-US">ACK</span><span>、</span><span lang="EN-US">FIN</span><span>、</span><span lang="EN-US">RST</span><span>、</span><span lang="EN-US">URG</span><span>、</span><span lang="EN-US">PSH</span><span>、</span><span lang="EN-US">ALL</span><span>和</span><span lang="EN-US">NONE</span><span>等，如果指定多个标志，则每个标志间需以逗号分隔。以下范例表示所有标志都要检查，但只有</span><span lang="EN-US">SYN</span><span>和</span><span lang="EN-US">ACK</span><span>被设置。</span><span lang="EN-US"><br />
iptables–AINPUT–protocoltcp–tcp-flagsALLSYN,ACK–jDENY<br />
-l</span><span>在系统日志</span><span lang="EN-US">/var/log/messages</span><span>中记录与该规则匹配的数据包。</span><span lang="EN-US"><br />
-v</span><span>详细输出。</span><span lang="EN-US"><br />
-n</span><span>当显示时</span><span lang="EN-US">,</span><span>不对</span><span lang="EN-US">IP</span><span>地址执行</span><span lang="EN-US">DNS</span><span>查找。</span><span lang="EN-US"><br />
[!]-y-y</span><span>表明</span><span lang="EN-US">tcp</span><span>握手中的连接请求标志位</span><span lang="EN-US">SYN</span><span>；</span><span lang="EN-US">!-y</span><span>表示对该请求的响应。</span><span lang="EN-US"><br />
[!]-syn</span><span>指定仅仅匹配设置了</span><span lang="EN-US">SYN</span><span>位，清除了</span><span lang="EN-US">ACK</span><span>、</span><span lang="EN-US">FIN</span><span>位的</span><span lang="EN-US">TCP</span><span>包，该参数仅针对</span><span lang="EN-US">TCP</span><span>协议类型使用。</span><span lang="EN-US"><br />
-m-state</span><span>标记数据包。</span><span lang="EN-US"><br />
</span><span>注：</span><span lang="EN-US">“</span><span>！</span><span lang="EN-US">”</span><span>为逻辑非；接口名后跟</span><span lang="EN-US">“+”</span><span>表示所有以此接口名开头的接口都会被匹配。</span><span lang="EN-US"><br />
</span><span>附：匹配条件扩展：</span><span lang="EN-US"><br />
TCP&#8212;&#8211;</span><span>匹配源端口，目的端口，及</span><span lang="EN-US">tcp</span><span>标记的任意组合，</span><span lang="EN-US">tcp</span><span>选项等。</span><span lang="EN-US"><br />
UPD&#8212;&#8211;</span><span>匹配源端口和目的端口</span><span lang="EN-US"><br />
ICMP&#8212;-</span><span>匹配</span><span lang="EN-US">ICMP</span><span>类型</span><span lang="EN-US"><br />
MAC&#8212;&#8211;</span><span>匹配接收到的数据的</span><span lang="EN-US">mac</span><span>地址</span><span lang="EN-US"><br />
MARK&#8212;-</span><span>匹配</span><span lang="EN-US">nfmark<br />
OWNE&#8212;-(</span><span>仅仅应用于本地产生的数据包</span><span lang="EN-US">)</span><span>来匹配用户</span><span lang="EN-US">ID</span><span>，组</span><span lang="EN-US">ID</span><span>，进程</span><span lang="EN-US">ID</span><span>及会话</span><span lang="EN-US">ID<br />
TOS——</span><span>匹配</span><span lang="EN-US">IP</span><span>头的</span><span lang="EN-US">TOS</span><span>字段的值。</span><span lang="EN-US"><br />
LIMIT&#8212;</span><span>匹配特定时间段内的数据包。这个扩展匹配对于限制</span><span lang="EN-US">dos</span><span>攻击数据流非常有用。</span><span lang="EN-US"><br />
STATE&#8212;</span><span>匹配特定状态下的数据包</span><span lang="EN-US">(</span><span>由连接跟踪子系统来决定状态</span><span lang="EN-US">)</span><span>，可能的状态包括：</span><span lang="EN-US"><br />
INVALID</span><span>不匹配于任何连接的数据包</span><span lang="EN-US"><br />
ESTABLISHED</span><span>属于某个已经建立的连接的数据包</span><span lang="EN-US"><br />
NEW</span><span>请求建立连接的数据包</span><span lang="EN-US"><br />
RELATED</span><span>属于某个已建立连接产生的新连接的数据包，例如一个</span><span lang="EN-US">ICMP</span><span>错误消息或</span><span lang="EN-US">ftp</span><span>数据连接</span><span lang="EN-US"><br />
5</span><span>、目标动作</span><span lang="EN-US">(Target)<br />
</span><span>当规则匹配一个包时，要执行的目标动作以</span><span lang="EN-US">-j</span><span>参数标识。</span><span lang="EN-US"><br />
</span><span>①</span><span lang="EN-US">.Filter</span><span>表的目标动作：</span><span lang="EN-US"><br />
ACCEPT</span><span>允许数据包通过。</span><span lang="EN-US"><br />
DROP</span><span>丢弃数据包。</span><span lang="EN-US"><br />
</span><span>②</span><span lang="EN-US">.Nat</span><span>表的目标动作：</span><span lang="EN-US"><br />
SNAT</span><span>修改数据包的源地址。</span><span lang="EN-US"><br />
MASQUERADE</span><span>修改数据包的源地址，只用于动态分配</span><span lang="EN-US">IP</span><span>地址的情况。</span><span lang="EN-US"><br />
DNAT</span><span>修改数据包的目标地址。</span><span lang="EN-US"><br />
REDIRECT</span><span>将包重定向到进入系统时网络接口的</span><span lang="EN-US">IP</span><span>地址，目标端口改为指定端口。</span><span lang="EN-US"><br />
</span><span>③</span><span lang="EN-US">.Mangle</span><span>表的目标动作：</span><span lang="EN-US"><br />
TTL<br />
TOS</span><span>用来设置</span><span lang="EN-US">IP</span><span>表头中</span><span lang="EN-US">8</span><span>位长度的</span><span lang="EN-US">TOS</span><span>字段的值，此选项只在使用</span><span lang="EN-US">MangleTables</span><span>时才有效。</span><span lang="EN-US"><br />
MARK</span><span>对数据包进行标记，供其它规则或数据包处理程序使用，此选项只在</span><span lang="EN-US">Mangle</span><span>表中使用。</span><span lang="EN-US"><br />
</span><span>④</span><span lang="EN-US">.</span><span>扩展的目标动作：</span><span lang="EN-US"><br />
REJECT</span><span>丢弃数据包的同时返回给发送者一个可配置的错误信息。</span><span lang="EN-US"><br />
LOG</span><span>将匹配的数据包信息，传递给</span><span lang="EN-US">syslog()</span><span>进行记录。</span><span lang="EN-US"><br />
ULOG</span><span>将匹配的数据包信息，使用用户空间的</span><span lang="EN-US">log</span><span>进程进行记录。</span><span lang="EN-US"><br />
MIRROR</span><span>互换源和目的地址以后重新传输该数据包。</span><span lang="EN-US"><br />
TOS</span><span>改写包的</span><span lang="EN-US">TOS</span><span>值。</span><span lang="EN-US"><br />
QUEUE</span><span>表示把这个包重导入本机的队列中。</span><span lang="EN-US"><br />
RETURN</span><span>表示跳离这条链的匹配，如果是用户自定义链，就会返回原链的下一个规则处继续检查，如果是内置链，那会参考政策来处理数据包。</span><span lang="EN-US"><br />
</span><span>注：要使用扩展的目标动作，必须在内核中激活相应选项或装载相应内核模块。</span><span lang="EN-US"><br />
</span><span>四、</span><span lang="EN-US">iptables</span><span>规则集的保存、恢复和启动</span><span lang="EN-US"><br />
1</span><span>、保存与恢复</span><span lang="EN-US"><br />
</span><span>用</span><span lang="EN-US">iptables</span><span>指令在内存中逐条建立起来的规则集，经测试通过后，可用</span><span lang="EN-US">iptables-save</span><span>命令保存，其中</span><span lang="EN-US">/etc/sysconfig/iptables</span><span>是</span><span lang="EN-US">iptables</span><span>守护进程调用的默认规则集文件。</span><span lang="EN-US"><br />
</span><span>保存规则集命令：</span><span lang="EN-US"><br />
#/sbin/iptables-save&gt;/etc/sysconfig/iptables<br />
</span><span>恢复规则集命令：</span><span lang="EN-US"><br />
#/sbin/iptables-restore&lt;/etc/sysconfig/iptables<br />
2</span><span>、</span><span lang="EN-US">iptables</span><span>规则集脚本的启动</span><span lang="EN-US"><br />
</span><span>①</span><span lang="EN-US">.</span><span>默认脚本的启动</span><span lang="EN-US"><br />
RedHatiptables</span><span>的启动脚本文件</span><span lang="EN-US">/etc/rc.d/init.d/iptables</span><span>在每次启动时都要使用</span><span lang="EN-US">/etc/sysconfig/iptables</span><span>提供的规则进行规则恢复，并可以使用如下命令保存规则：</span><span lang="EN-US"><br />
#serviceiptablessave<br />
</span><span>②</span><span lang="EN-US">.</span><span>自定义脚本的启动</span><span lang="EN-US"><br />
</span><span>用户可以在自定义脚本中直接用</span><span lang="EN-US">iptables</span><span>命令编写一个规则集，并在启动时执行这个脚本。设用户自定义脚本文件名为</span><span lang="EN-US">/etc/fw/rules,</span><span>则可以在启动脚本</span><span lang="EN-US">/etc/rc.d/rc.local</span><span>中加入代码：</span><span lang="EN-US">if[-x/etc/fw/rules]</span><span>；</span><span lang="EN-US">then/etc/fw/rules</span><span>；</span><span lang="EN-US">fi</span><span>；即可在每次启动时执行该脚本。</span><span lang="EN-US"><br />
</span><span>注：如果使用此种方式，建议使用</span><span lang="EN-US">ntsysv</span><span>命令关闭系统的</span><span lang="EN-US">iptables</span><span>守护进程。</span></p>
<p> </p>
<table border="0">
<tbody></tbody>
</table>
<p>
<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/249.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iptables权限控制</title>
		<link>http://www.evanjiang.net.cn/archives/245.html</link>
		<comments>http://www.evanjiang.net.cn/archives/245.html#comments</comments>
		<pubDate>Thu, 15 Jan 2009 09:09:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iptable]]></category>
		<category><![CDATA[iptables 权限控制]]></category>

		<guid isPermaLink="false">http://www.hunttech.com.cn/wpblog/?p=245</guid>
		<description><![CDATA[<p>以下是一个脚本，用来做基本的权限控制。包括的内容有：禁止被访问的IP，特权用户的设置，开启平常要用的端口，封锁某个人的MAC，NAT转发等。</p>
<p>注：此脚本是以MAC地址为管理基础的，如果客户端更改了MAC地址，那么所做的设置就无效。</p>
<p></p>

?View Code SHELL1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/sh
/etc/init.d/iptables restart
echo 1 &#62; /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F
&#160;
############################## Net Admin ################################
#网管员的MAC地址，没有任何限制
/sbin/iptables -t nat -A PREROUTING -m mac --mac-source $MAC -j ACCEPT
/sbin/iptables -A INPUT -m mac --mac-source  $MAC  -j ACCEPT
/sbin/iptables -A FORWARD -m mac --mac-source $MAC  -j ACCEPT
&#160;
############################## Deny URL #################################
#要禁止访问的地址，下面两个分别是veryCD和互联星空的IP
/sbin/iptables -t nat -A PREROUTING --dst 218.30.64.121 -j DROP
/sbin/iptables -t nat -A PREROUTING [...]]]></description>
			<content:encoded><![CDATA[<p>以下是一个脚本，用来做基本的权限控制。包括的内容有：禁止被访问的IP，特权用户的设置，开启平常要用的端口，封锁某个人的MAC，NAT转发等。</p>
<p>注：此脚本是以MAC地址为管理基础的，如果客户端更改了MAC地址，那么所做的设置就无效。</p>
<p><span id="more-245"></span></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p245code2'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2452"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
</pre></td><td class="code" id="p245code2"><pre class="shell" style="font-family:monospace;">#!/bin/sh
/etc/init.d/iptables restart
echo 1 &gt; /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F
&nbsp;
############################## Net Admin ################################
#网管员的MAC地址，没有任何限制
/sbin/iptables -t nat -A PREROUTING -m mac --mac-source $MAC -j ACCEPT
/sbin/iptables -A INPUT -m mac --mac-source  $MAC  -j ACCEPT
/sbin/iptables -A FORWARD -m mac --mac-source $MAC  -j ACCEPT
&nbsp;
############################## Deny URL #################################
#要禁止访问的地址，下面两个分别是veryCD和互联星空的IP
/sbin/iptables -t nat -A PREROUTING --dst 218.30.64.121 -j DROP
/sbin/iptables -t nat -A PREROUTING --dst 58.218.179.162 -j DROP
&nbsp;
##############################  Manager #################################
#老板，特权用户
/sbin/iptables -t nat -A PREROUTING -m mac --mac-source $MAC  -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -m mac --mac-source $MAC  -j ACCEPT
/sbin/iptables -A FORWARD -m mac --mac-source $MAC -j ACCEPT
&nbsp;
############################ open port ################################
#允许访问的端口
&nbsp;
#没有Squid做代理的话，下面一句需要启用。
#/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -p tcp -m tcp --dport 1863 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -p tcp -m tcp --dport 8008 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -p tcp -m tcp --dport 3128 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -p tcp -m tcp --dport 3000 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 3128 -j ACCEPT
&nbsp;
##############################attack######################################
#内网中攻击或中毒的机器，先封掉他，不能上网，他会来找你的。
#/sbin/iptables -A INPUT -m mac --mac-source $MAC -j DROP
#/sbin/iptables -A FORWARD -m mac --mac-source $MAC -j DROP
&nbsp;
################################ NAT #####################################
#做个转发
/sbin/iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8989 -j DNAT --to-destination 10.10.0.X:80
/sbin/iptables -t nat -A POSTROUTING -s 10.10.0.0/22 -d 10.10.0.X -p tcp -m tcp --dport 8989 -j SNAT --to-source 10.10.0.1
&nbsp;
&nbsp;
############################### Internet ################################
#把其他包DROP掉
/sbin/iptables -A INPUT -s 10.10.0.0/22 -j DROP
&nbsp;
#将内网的http请求转给squid
/sbin/iptables -t nat -A PREROUTING -s 10.10.0.0/22 -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
&nbsp;
#完成转发
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 10.10.0.0/22 -o ppp0 -j MASQUERADE</pre></td></tr></table></div>

<p>
<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/245.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用linux加iptable与squid来构建机房的安全</title>
		<link>http://www.evanjiang.net.cn/archives/136.html</link>
		<comments>http://www.evanjiang.net.cn/archives/136.html#comments</comments>
		<pubDate>Fri, 19 Dec 2008 13:51:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iptable]]></category>
		<category><![CDATA[other linux]]></category>
		<category><![CDATA[Linux iptable squid 安全]]></category>

		<guid isPermaLink="false">http://www.hunttech.com.cn/wpblog/?p=136</guid>
		<description><![CDATA[<p> </p>
<p class="MsoNormal" align="left">eth0是我外网网卡，eth1是我内网网卡</p>
<p class="MsoNormal" align="left">1.建立静态IP/MAC捆绑</p>
<p class="MsoNormal" align="left">方法：建立/etc/ethers文件，其中包含正确的IP/MAC对应关系，格式如下：</p>
<p class="MsoNormal" align="left">[root@test2root]#more/etc/ethers</p>
<p class="MsoNormal" align="left">192.168.10.1800:10:DC:6B:C6:31</p>
<p class="MsoNormal" align="left">192.168.10.11100:10:5C:C0:2B:C1</p>
<p class="MsoNormal" align="left">192.168.10.134C:00:10:A3:38:5D</p>
<p class="MsoNormal" align="left">192.168.10.11300:E0:4C:00:0C:2B</p>
<p class="MsoNormal" align="left">192.168.10.16600:10:DC:61:B4:78</p>
<p class="MsoNormal" align="left">192.168.10.1078:06:18:25:88:40</p>
<p class="MsoNormal" align="left">192.168.10.17300:0F:1F:4D:EC:99</p>
<p class="MsoNormal" align="left">192.168.10.21200:10:DC:6A:C0:C0</p>
<p class="MsoNormal" align="left">192.168.10.2300:07:95:D8:C6:39</p>
<p class="MsoNormal" align="left">然后在/etc/rc.d/rc.local最后添加：arp-f即可实现IP/MAC捆绑</p>
<p class="MsoNormal" align="left">
</p>
<p class="MsoNormal" align="left">2.编写假包上网脚本</p>
<p class="MsoNormal" align="left">[root@test2root]#cat/etc/xxx</p>
<p class="MsoNormal" align="left">#!/bin/bash</p>
<p class="MsoNormal" align="left">echo&#8221;1&#8243;&#62;/proc/sys/net/ipv4/ip_forward</p>
<p class="MsoNormal" align="left">INET_IFACE=&#8221;eth0&#8243;</p>
<p class="MsoNormal" align="left">INET_IP=&#8221;210.75.18.36&#8243;</p>
<p class="MsoNormal" align="left">LAN_IFACE=&#8221;eth1&#8243;</p>
<p class="MsoNormal" align="left">LAN_IP=&#8221;192.168.10.2&#8243;</p>
<p class="MsoNormal" align="left">LAN_IP_RANGE=&#8221;192.168.10.0/24&#8243;</p>
<p class="MsoNormal" align="left">IPT=&#8221;/sbin/iptables&#8221;</p>
<p class="MsoNormal" align="left">/sbin/depmod-a</p>
<p class="MsoNormal" align="left">/sbin/modprobeip_tables</p>
<p [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p class="MsoNormal" align="left"><span lang="EN-US">eth0</span><span>是我外网网卡，<span lang="EN-US">eth1</span>是我内网网卡</span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">1.</span><span>建立静态<span lang="EN-US">IP/MAC</span>捆绑</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>方法：建立<span lang="EN-US">/etc/ethers</span>文件，其中包含正确的<span lang="EN-US">IP/MAC</span>对应关系，格式如下：</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2root]#more/etc/ethers</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">192.168.10.1800:10:DC:6B:C6:31</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">192.168.10.11100:10:5C:C0:2B:C1</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">192.168.10.134C:00:10:A3:38:5D</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">192.168.10.11300:E0:4C:00:0C:2B</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">192.168.10.16600:10:DC:61:B4:78</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">192.168.10.1078:06:18:25:88:40</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">192.168.10.17300:0F:1F:4D:EC:99</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">192.168.10.21200:10:DC:6A:C0:C0</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">192.168.10.2300:07:95:D8:C6:39</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>然后在<span lang="EN-US">/etc/rc.d/rc.local</span>最后添加：<span lang="EN-US">arp-f</span>即可实现<span lang="EN-US">IP/MAC</span>捆绑</span></p>
<p class="MsoNormal" align="left"><span><span id="more-136"></span><br />
</span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">2.</span><span>编写假包上网脚本</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2root]#cat/etc/xxx</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">#!/bin/bash</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">echo&#8221;1&#8243;&gt;/proc/sys/net/ipv4/ip_forward</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">INET_IFACE=&#8221;eth0&#8243;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">INET_IP=&#8221;210.75.18.36&#8243;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">LAN_IFACE=&#8221;eth1&#8243;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">LAN_IP=&#8221;192.168.10.2&#8243;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">LAN_IP_RANGE=&#8221;192.168.10.0/24&#8243;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">IPT=&#8221;/sbin/iptables&#8221;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/depmod-a</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeip_tables</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeiptable_nat</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeip_nat_ftp</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeipt_mac</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeipt_state</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeipt_LOG</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">forTABLEinfilternatmangle;do</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-t$TABLE-F</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-t$TABLE-X</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">done</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-PINPUTDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-POUTPUTDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-PFORWARDDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-tnat-PPREROUTINGACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-tnat-PPOSTROUTINGACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-tnat-POUTPUTACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AINPUT-ilo-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AOUTPUT-olo-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AINPUT-ieth1-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AOUTPUT-oeth1-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AINPUT-ieth0-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AOUTPUT-oeth0-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-mstate&#8211;stateESTABLISHED,RELATED-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.18-mmac&#8211;mac-source00:10:DC:6B:C6:31-jACCEPT#MAC</span><span>、<span lang="EN-US">IP</span>地址绑定校验</span><span lang="EN-US"></span></p>
<p>
<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
</p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.111-mmac&#8211;mac-source00:10:5C:C0:2B:C1-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.13-mmac&#8211;mac-source4C:00:10:A3:38:5D-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.113-mmac&#8211;mac-source00:E0:4C:00:0C:2B-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.166-mmac&#8211;mac-source00:10:DC:61:B4:78-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.10-mmac&#8211;mac-source78:06:18:25:88:40-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.173-mmac&#8211;mac-source00:0F:1F:4D:EC:99-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.212-mmac&#8211;mac-source00:10:DC:6A:C0:C0-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.23-mmac&#8211;mac-source00:07:95:D8:C6:39-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.52-mmac&#8211;mac-source00:02:A5:2E:B9:56-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/iptables-AFORWARD-ptcp&#8211;dport6881:6890-jDROP#</span><span>限制<span lang="EN-US">BT</span>下载</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/iptables-AINPUT-ptcp&#8211;dport6881:6890-jDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/iptables-AOUTPUT-ptcp&#8211;dport6881:6890-jDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-ptcp-jLOG&#8211;log-levelinfo&#8211;log-prefix&#8221;INPUTpackets&#8221;#</span><span>加入<span lang="EN-US">iptablesLOG</span>信息<span lang="EN-US">,</span>注意，要启用</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">if["$INET_IFACE"=ppp0];theniptablesLOG</span><span>需要在<span lang="EN-US">/etc/syslog.conf</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-tnat-APOSTROUTING-o$INET_IFACE-jMASQUERADE</span><span>中加入<span lang="EN-US">kern.=info/var/log/iptables</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">else</span><span>并重启<span lang="EN-US">syslog</span>服务</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-tnat-APOSTROUTING-o$INET_IFACE-jSNAT&#8211;to$INET_IP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">fi</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">3.</span><span>启动<span lang="EN-US">SQUID</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>修改<span lang="EN-US">/etc/squid/squid.conf</span>配置文件</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>将<span lang="EN-US">53</span>行的<span lang="EN-US">#http_port3128</span>修改为<span lang="EN-US">http_port3128</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>在<span lang="EN-US">1975</span>行加入<span lang="EN-US">visible_hostnamexxx#</span>也可以写机器名</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>修改<span lang="EN-US">cache_mem8MB</span>为<span lang="EN-US">cache_mem170MB#</span>在<span lang="EN-US">480</span>行，大约使用内存的<span lang="EN-US">1/3</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>修改<span lang="EN-US">cache_dirufs/var/spool/squid10016256</span>为<span lang="EN-US">cache_dirufs/var/spool/squid51224256#</span>在<span lang="EN-US">679</span>行，<span lang="EN-US">512</span>代表缓存空间容量，<span lang="EN-US">24</span>代表第一层目录数，<span lang="EN-US">256</span>代表第二层目录数</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>在<span lang="EN-US">1699</span>行加入<span lang="EN-US">aclmyclientsrc192.168.10.0/24#</span>定义<span lang="EN-US">ip</span>网段代码</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>在<span lang="EN-US">1760</span>行加入<span lang="EN-US">http_accessallowmyclient#</span>在<span lang="EN-US">http_accessallowlocalhosthttp_accessdenyall</span>两行配置之前加入该配置</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>将错误信息页面链接到简体中文</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2squid]#cd/etc/squid/</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2squid]#rm-ferrors</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2squid]#ln-s/usr/share/squid/errors/Simplify_Chinese/errors</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2squid]#ll-derrors</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">lrwxrwxrwx1rootroot413</span><span>月<span lang="EN-US">1710:11errors-&gt;/usr/share/squid/errors/Simplify_Chinese/</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2squid]#</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>初始化和启动<span lang="EN-US">squid</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2squid]#squid-z#</span><span>创建<span lang="EN-US">squid</span>缓存目录</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">2005/03/1710:27:44|CreatingSwapDirectories</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2squid]#servicesquidstart#</span><span>启动<span lang="EN-US">squid</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>启动<span lang="EN-US">squid</span>：<span lang="EN-US">.[</span>确定<span lang="EN-US">]</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">4.</span><span>设置透明代理</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>编辑<span lang="EN-US">/etc/squid/squid.conf</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>在<span lang="EN-US">2067</span>行添加以下配置</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">httpd_accel_hostvirtual</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">httpd_accel_port80</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">httpd_accel_with_proxyon</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">httpd_accel_uses_host_headeron</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>重新启动<span lang="EN-US">squid</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2squid]#servicesquidrestart</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>停止<span lang="EN-US">squid</span>：<span lang="EN-US">..[</span>确定<span lang="EN-US">]</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>启动<span lang="EN-US">squid</span>：<span lang="EN-US">.[</span>确定<span lang="EN-US">]</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>修改<span lang="EN-US">/etc/xxxiptables</span>脚本，加入</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-tnat-APREROUTING-ieth1-ptcp&#8211;dport80-jREDIRECT&#8211;to-ports3128</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2squid]#cat/etc/xxx</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">#!/bin/bash</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">echo&#8221;1&#8243;&gt;/proc/sys/net/ipv4/ip_forward</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">INET_IFACE=&#8221;eth0&#8243;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">INET_IP=&#8221;210.75.18.36&#8243;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">LAN_IFACE=&#8221;eth1&#8243;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">LAN_IP=&#8221;192.168.10.2&#8243;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">LAN_IP_RANGE=&#8221;192.168.10.0/24&#8243;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">IPT=&#8221;/sbin/iptables&#8221;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/depmod-a</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeip_tables</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeiptable_nat</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeip_nat_ftp</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeipt_mac</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeipt_state</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/modprobeipt_LOG</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">forTABLEinfilternatmangle;do</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-t$TABLE-F</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-t$TABLE-X</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">done</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-PINPUTDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-POUTPUTDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-PFORWARDDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-tnat-PPREROUTINGACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-tnat-PPOSTROUTINGACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-tnat-POUTPUTACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AINPUT-ilo-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AOUTPUT-olo-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AINPUT-ieth1-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AOUTPUT-oeth1-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AINPUT-ieth0-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AOUTPUT-oeth0-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-mstate&#8211;stateESTABLISHED,RELATED-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.18-mmac&#8211;mac-source00:10:DC:6B:C6:31-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.111-mmac&#8211;mac-source00:10:5C:C0:2B:C1-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.13-mmac&#8211;mac-source4C:00:10:A3:38:5D-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.113-mmac&#8211;mac-source00:E0:4C:00:0C:2B-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.166-mmac&#8211;mac-source00:10:DC:61:B4:78-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.10-mmac&#8211;mac-source78:06:18:25:88:40-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.173-mmac&#8211;mac-source00:0F:1F:4D:EC:99-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.212-mmac&#8211;mac-source00:10:DC:6A:C0:C0-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.23-mmac&#8211;mac-source00:07:95:D8:C6:39-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-s192.168.10.52-mmac&#8211;mac-source00:02:A5:2E:B9:56-jACCEPT</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/iptables-AFORWARD-ptcp&#8211;dport6881:6890-jDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/iptables-AINPUT-ptcp&#8211;dport6881:6890-jDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">/sbin/iptables-AOUTPUT-ptcp&#8211;dport6881:6890-jDROP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-AFORWARD-ptcp-jLOG&#8211;log-levelinfo&#8211;log-prefix&#8221;INPUTpackets&#8221;</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">iptables-tnat-APREROUTING-ieth1-ptcp&#8211;dport80-jREDIRECT&#8211;to-ports3128</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">if["$INET_IFACE"=ppp0];then</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-tnat-APOSTROUTING-o$INET_IFACE-jMASQUERADE</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">else</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">$IPT-tnat-APOSTROUTING-o$INET_IFACE-jSNAT&#8211;to$INET_IP</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">fi</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>再执行<span lang="EN-US">/etc/xxx</span>即可</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">5.</span><span>限制下载<span lang="EN-US">BT</span>文件</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>修改<span lang="EN-US">/etc/squid/squid.conf</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>在<span lang="EN-US">444</span>行增加<span lang="EN-US">aclBTurlpath_regex-i\.torrent$#</span>如果还需禁止下载<span lang="EN-US">mp3</span>等等，可以设定为<span lang="EN-US">aclBTurlpath_regex-i\.torrent$\.mp3$</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>在<span lang="EN-US">1762</span>行增加<span lang="EN-US">http_accessdenyBT#</span>注意：必须放在<span lang="EN-US">http_accessallowmyclientshttp_accessallowlocalhost</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">http_accessdenyall</span><span>三句配置之前</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>重新启动<span lang="EN-US">squid</span></span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span lang="EN-US">[root@test2squid]#servicesquidrestart</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left"><span>停止<span lang="EN-US">squid</span>：<span lang="EN-US">.[</span>确定<span lang="EN-US">]</span></span><span lang="EN-US"></span></p>
<p>
<!-- Begin alimama Adserver code -->
<script type="text/javascript"><!--
google_ad_client = "pub-8438729971248494";
/* 728x90, ������ 10-2-7 */
google_ad_slot = "4752526529";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Alimama Adserver code -->
<br />
<span>启动<span lang="EN-US">squid</span>：<span lang="EN-US">.</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.evanjiang.net.cn/archives/136.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
