<?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="http://www.187299.com/archives/tag/iptables/feed" rel="self" type="application/rss+xml" />
	<link>http://www.187299.com</link>
	<description>寻觅生命中的那一片浅草......</description>
	<lastBuildDate>Wed, 16 Nov 2011 11:25:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>iptables can not start</title>
		<link>http://www.187299.com/archives/1621</link>
		<comments>http://www.187299.com/archives/1621#comments</comments>
		<pubDate>Fri, 09 Jul 2010 07:14:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[ip]]></category>

		<guid isPermaLink="false">http://www.187299.com/?p=1621</guid>
		<description><![CDATA[Today,I want to start iptables on my CentOS box for security reason I type service iptables start but there is no output then I type service iptables status it shows Firewall is stopped. After some googles,I solve it type this command system-config-secur... ]]></description>
			<content:encoded><![CDATA[<p>Today,I want to start iptables on my CentOS box for security reason<br />
I type<br />
service iptables start<br />
but there is no output<br />
then I type<br />
service iptables status<br />
it shows<br />
Firewall is stopped.<br />
After some googles,I solve it<br />
type this command<br />
system-config-securitylevel<br />
set Security Level to be  Enabled<br />
hit ok<br />
at last<br />
service iptables start</p>
]]></content:encoded>
			<wfw:commentRss>http://www.187299.com/archives/1621/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iptables的妙用——条件限速</title>
		<link>http://www.187299.com/archives/1563</link>
		<comments>http://www.187299.com/archives/1563#comments</comments>
		<pubDate>Fri, 30 Apr 2010 02:38:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://www.187299.com/?p=1563</guid>
		<description><![CDATA[某些路由器具有所谓的流量控制中具有“惩罚性限速”的功能：（例如）192.168.1.100在120秒内平均速率超过100KB/S，那么把该IP 列入惩罚队列，惩罚队列速率是40KB/S. 其实，利用iptables的也可以实... ]]></description>
			<content:encoded><![CDATA[<p>某些路由器具有所谓的流量控制中具有“惩罚性限速”的功能：（例如）192.168.1.100在120秒内平均速率超过100KB/S，那么把该IP<br />
列入惩罚队列，惩罚队列速率是40KB/S.</p>
<p>其实，利用iptables的也可以实现类似的功能。脚本如下：</p>
<p>iptables -t mangle -N LMT<br />
iptables -t mangle -N LMT2<br />
iptables -t mangle -I FORWARD -d 192.168.1.100 -m length --length 128: -j LMT<br />
iptables -t mangle -A LMT -m recent --rdest --name badguy --rcheck --seconds 60 -j LMT2<br />
iptables -t mangle -A LMT -m limit --limit 100/sec --limit-burst 5000 -j RETURN<br />
iptables -t mangle -A LMT -m recent --rdest --name badguy --set -j RETURN<br />
iptables -t mangle -A LMT2 -m limit --limit 50/sec --limit-burst 5000 -j RETURN<br />
iptables -t mangle -A LMT2 -j DROP<br />
复制代码</p>
<p>上面代码是用limit限制计算速率，为了更准确，使用了数据包长度筛选: “-m length --length 128:”，这样更准确一点。<br />
一般限制为100/s，按照数据包平均大小1000Bytes来算，大概就是100KB/S。<br />
如果超出，限制变为50/sec，大约50KB/S。</p>
<p>当然，这只是一个示范性的例子了，其中limit模块也可以改用更为强大的hashlimit，hashsped等模块。<br />
还可以用connlimit使用连接数作为限制条件。。。。。。。。。。<br />
如果再把这些模块结合MARK和TC流量控制，就实现了某些路由器的所谓“条件限速”“P2P惩罚”等功能。</p>
<p>转载自：http://linux.chinaunix.net/bbs/thread-1156170-1-1.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.187299.com/archives/1563/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>巧用Recent模块加固Linux安全</title>
		<link>http://www.187299.com/archives/1535</link>
		<comments>http://www.187299.com/archives/1535#comments</comments>
		<pubDate>Sun, 28 Mar 2010 06:00:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iptables]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.187299.com/archives/1535</guid>
		<description><![CDATA[本文来自: IT运维专家网(LinuxTone.Org) 作者: 守住每一天 日期: 2009-10-3 13:45 阅读: 312 人 打印 收藏 Linux, 模块, 加固, Recent 原文链接：http://bbs.linuxtone.org/thread-3920-1-1.html IT运维专家网--"自由平等，互... ]]></description>
			<content:encoded><![CDATA[<p>本文来自: IT运维专家网(LinuxTone.Org) 作者: 守住每一天 日期: 2009-10-3 13:45 阅读: 312 人 打印 收藏<br />
Linux, 模块, 加固, Recent<br />
原文链接：http://bbs.linuxtone.org/thread-3920-1-1.html IT运维专家网--"自由平等，互助分享！" 众所周知，Linux可以通过编写iptables规则对进出Linux主机的数据包进行过滤等操作，在一定程度上可以提升Linux主机的安全性，在新版本内核中，新增了recent模块，该模块可以根据源地址、目的地址统计最近一段时间内经过本机的数据包的情况，并根据相应的规则作出相应的决策，详见：http://snowman.net/projects/ipt_recent/<br />
1、通过recent模块可以防止穷举猜测Linux主机用户口令，通常可以通过iptables限制只允许某些网段和主机连接Linux机器的22/TCP端口，如果管理员IP地址经常变化，此时iptables就很难适用这样的环境了。通过使用recent模块，使用下面这两条规则即可解决问题：<br />
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name SSH --rsource -j DROP<br />
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource -j ACCEPT<br />
应用该规则后，如果某IP地址在一分钟之内对Linux主机22/TCP端口新发起的连接超过4次，之后的新发起的连接将被丢弃。<br />
2、通过recent模块可以防止端口扫描。<br />
-A INPUT -m recent --update --seconds 60 --hitcount 20 --name PORTSCAN --rsource -j DROP<br />
-A INPUT -m recent --set --name PORTSCAN --rsource -j DROP<br />
应用该规则后，如果某个IP地址对非Linux主机允许的端口发起连接，并且一分钟内超过20次，则系统将中断该主机与本机的连接。<br />
详细配置如下：<br />
*filter<br />
:INPUT DROP [0:0]<br />
:FORWARD ACCEPT [0:0]<br />
:OUTPUT ACCEPT [458:123843]<br />
-A INPUT -i lo -j ACCEPT<br />
-A INPUT -i tap+ -j ACCEPT<br />
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT<br />
-A INPUT -m recent --update --seconds 60 --hitcount 20 --name PORTSCAN --rsource -j DROP<br />
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT<br />
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name SSH --rsource -j DROP<br />
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource -j ACCEPT<br />
-A INPUT -p udp -m udp --dport 53 -j ACCEPT<br />
-A INPUT -p tcp -m tcp --dport 53 -m state --state NEW -j ACCEPT<br />
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT<br />
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT<br />
-A INPUT -m recent --set --name PORTSCAN --rsource -j DROP<br />
COMMIT</p>
<p>以上配置说明，本机开放可供服务的端口有22/TCP（有连接频率限制）,53/TCP/UDP, 80/TCP, 443/TCP，所有发往本机的其他ip报文则认为是端口扫描，如果一分钟之内超过20次，则封禁该主机，攻击停止一分钟以上自动解封。<br />
在这只是取个抛砖引玉的作用，通过recent模块还可以实现很多更复杂的功能，例如：22/TCP端口对所有主机都是关闭的，通过顺序访问23/TCP 24/TCP 25/TCP之后，22/TCP端口就对你一个IP地址开放等等。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.187299.com/archives/1535/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用iptables的string模块禁止浏览器对80的访问</title>
		<link>http://www.187299.com/archives/1418</link>
		<comments>http://www.187299.com/archives/1418#comments</comments>
		<pubDate>Thu, 17 Dec 2009 09:55:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://www.187299.com/?p=1418</guid>
		<description><![CDATA[有个软件监听的是80端口，但不提供Web服务 麻烦的是又可以通过ip:80访问到，还有输出 这样就不和谐了 80是不能封的，封了客户端就连接不了 想到用iptables禁止浏览器对80的访问 问了些QQ群的朋... ]]></description>
			<content:encoded><![CDATA[<p>有个软件监听的是80端口，但不提供Web服务<br />
麻烦的是又可以通过ip:80访问到，还有输出<br />
这样就不和谐了</p>
<p>80是不能封的，封了客户端就连接不了<br />
想到用iptables禁止浏览器对80的访问<br />
问了些QQ群的朋友，可以实现</p>
<p>先看下有没有string这个模块<br />
iptables -m string --help<br />
如果有，它会提示一堆帮助信息，没有则显示<br />
iptables v1.2.11: Couldn't load match `string':/lib64/iptables/libipt_string.so: cannot open shared object file: No such file or directory</p>
<p>已知iptables v1.3.5是有的</p>
<p>规则，HTTP就是我们要过滤的关键字，--algo，指定使用的算法，有2中，分别是kmp，bm<br />
/sbin/iptables -I INPUT -p tcp -m string --string HTTP --algo kmp --dport 80 -j DROP</p>
<p>保存规则<br />
/sbin/iptables-save</p>
]]></content:encoded>
			<wfw:commentRss>http://www.187299.com/archives/1418/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iptables v1.2.11: Unknown arg `–dport’</title>
		<link>http://www.187299.com/archives/1304</link>
		<comments>http://www.187299.com/archives/1304#comments</comments>
		<pubDate>Thu, 05 Nov 2009 16:23:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iptables]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.187299.com/?p=1304</guid>
		<description><![CDATA[iptables -A RH-Firewall-1-INPUT -s 192.168.1.0/27 –dport 161 -j ACCEPT iptables v1.2.11: Unknown arg `–dport’ Try `iptables -h’ or ‘iptables –help’ for more information. 改为这样就好了 iptables -A RH-Firewall-1-INPUT -p tcp -s 192.16... ]]></description>
			<content:encoded><![CDATA[<p>iptables -A RH-Firewall-1-INPUT -s 192.168.1.0/27 –dport 161 -j ACCEPT<br />
iptables v1.2.11: Unknown arg `–dport’<br />
Try `iptables -h’ or ‘iptables –help’ for more information.</p>
<p>改为这样就好了<br />
iptables -A RH-Firewall-1-INPUT -p tcp -s 192.168.1.0/27 -m state –state NEW -m tcp –dport 161 -j ACCEPT</p>
<p>要在前面加 -p tcp</p>
]]></content:encoded>
			<wfw:commentRss>http://www.187299.com/archives/1304/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>iptables的SNAT和DNAT</title>
		<link>http://www.187299.com/archives/967</link>
		<comments>http://www.187299.com/archives/967#comments</comments>
		<pubDate>Fri, 05 Jun 2009 01:59:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iptables]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.187299.com/?p=967</guid>
		<description><![CDATA[SNAT和DNAT是通过NAT表实现的 SNAT： 将172.16.1.78转换成192.168.1.19 iptables -t nat -A POSTROUTING -s 172.16.1.78 -j SNAT --to-source 192.168.1.19 DNAT: iptables -t nat -A PREROUTING -d 192.168.1.19 -p tcp -m tcp --dport 80 -j DNAT --to-desti... ]]></description>
			<content:encoded><![CDATA[<p>SNAT和DNAT是通过NAT表实现的</p>
<p>SNAT：</p>
<p>将172.16.1.78转换成192.168.1.19<br />
iptables -t nat -A POSTROUTING -s 172.16.1.78 -j SNAT --to-source 192.168.1.19</p>
<p>DNAT:</p>
<p>iptables -t nat -A PREROUTING -d 192.168.1.19 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.1.78</p>
<p>这样访问192.168.1.19的端口就会转发到172.16.1.78的80端口上，如果想转发到172.16.1.78的8080端口上，可以用如下命令</p>
<p>iptables -t nat -A PREROUTING -d 192.168.1.19 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.1.78:8080</p>
<p>当然还需要在filter里允许访问80，8080端口，当然，这里允许了对局域网所有主机80，8080端口的访问，为安全，应该进一步细化规则</p>
<p>iptables -A FORWARD -p tcp -m tcp --dport 80 -j ACCEPT</p>
<p>iptables -A FORWARD -p tcp -m tcp --dport 8080 -j ACCEPT</p>
]]></content:encoded>
			<wfw:commentRss>http://www.187299.com/archives/967/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何恢复iptables的默认设置</title>
		<link>http://www.187299.com/archives/964</link>
		<comments>http://www.187299.com/archives/964#comments</comments>
		<pubDate>Fri, 05 Jun 2009 01:28:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://www.187299.com/?p=964</guid>
		<description><![CDATA[/usr/local/sbin/iptables -P INPUT ACCEPT /usr/local/sbin/iptables -P FORWARD ACCEPT /usr/local/sbin/iptables -P OUTPUT ACCEPT # # reset the default policies in the nat table. # /usr/local/sbin/iptables -t nat -P PREROUTING ACCEPT /usr/local/sbin/iptables... ]]></description>
			<content:encoded><![CDATA[<p>/usr/local/sbin/iptables -P INPUT ACCEPT<br />
/usr/local/sbin/iptables -P FORWARD ACCEPT<br />
/usr/local/sbin/iptables -P OUTPUT ACCEPT</p>
<p>#<br />
# reset the default policies in the nat table.<br />
#<br />
/usr/local/sbin/iptables -t nat -P PREROUTING ACCEPT<br />
/usr/local/sbin/iptables -t nat -P POSTROUTING ACCEPT<br />
/usr/local/sbin/iptables -t nat -P OUTPUT ACCEPT</p>
<p>#<br />
# flush all the rules in the filter and nat tables.<br />
#<br />
/usr/local/sbin/iptables -F<br />
/usr/local/sbin/iptables -t nat -F</p>
<p>#<br />
# erase all chains that's not default in filter and nat table.<br />
#<br />
/usr/local/sbin/iptables -X<br />
/usr/local/sbin/iptables -t nat -X'</p>
<p>转载自：<a href="http://www.7880.com/Info/Article-657b9d40.html" target="_blank">http://www.7880.com/Info/Article-657b9d40.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.187299.com/archives/964/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iptables配置工具比较</title>
		<link>http://www.187299.com/archives/856</link>
		<comments>http://www.187299.com/archives/856#comments</comments>
		<pubDate>Thu, 14 May 2009 15:56:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iptables]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.187299.com/?p=856</guid>
		<description><![CDATA[本文将对iptables的配置做一个综述并且重点介绍一些iptables的配置工具。本文的讨论将着眼于linux内核的IP防火墙以及其各种界面的配置工具，比如：GUI或者脚本(shell、Perl或者特定的配置语言)。... ]]></description>
			<content:encoded><![CDATA[<p>本文将对iptables的配置做一个综述并且重点介绍一些iptables的配置工具。本文的讨论将着眼于linux内核的IP防火墙以及其各种界面的配置工具，比如：GUI或者脚本(shell、Perl或者特定的配置语言)。使用这些工具能够简化iptables的配置减少配置的错误。关于 iptables的知识请参考Rusty Russell写的Linux iptables HOWTO。</p>
<p><span id="more-856"></span></p>
<p>在过去几年中，linux作为防火墙平台的应用显著增长。从早期1.2版内核的ipfwadm开始，Linux的防火墙代码也走过了很长一段路程了。在2.4版的Linux内核中，使用了netfilter体系。在最新的2.4版中，Linux大大加强了安全性，例如：更好的加密支持和 netfilter体系的使用。netfilter具有完全的向后兼容性。</p>
<p>本文将对iptables的配置做一个综述并且重点介绍一些iptables的配置工具。本文的讨论将着眼于linux内核的IP防火墙以及其各种界面的配置工具，比如：GUI或者脚本(shell、Perl或者特定的配置语言)。使用这些工具能够简化iptables的配置减少配置的错误。关于 iptables的知识请参考Rusty Russell写的Linux iptables HOWTO。</p>
<p>使用命令行配置iptables的困难</p>
<p>使用iptables的命令行接口来配置iptables防火墙对一个人来说是一个挑战，用户很难指定所有IP报文的行为。用户需要对 TCP/IP 和应用层协议有较深的了解。象其前辈ipchains一样，iptables把IP过滤规则归并到链中，IP报文遍历规则链接受处理，还可以送到另外的链接受处理，或者最后由默认策略(ACCEPT、DROP、REJECT)处理。有些网络应用程序比其它一些程序更容易穿过防火墙，因此需要理解网络连接的建立和断开。</p>
<p>我们看一下POP3协议，这是最简单的协议之一。允许所有向内目标端口是110的报文通过通过无法解决所有的管理问题，因为这样只能使客户端向发出申请，而服务器却无法应答。另外，如果使用网络地址转换(NAT)和其它方式的报文转发，也存在许多问题。因为防火墙的配置将影响到整个企业的安全，所以应该特别小心。下面将大概地讨论iptables的配置，要获得更多细节请参考linux iptables HOWTO</p>
<p>iptables的命令行选项</p>
<p>在进入这时的讨论之前，我们看一下iptables命令行选项的一个总结。</p>
<p>规则链维护选项</p>
<p>1.建立新的规则链(-N)</p>
<p>2.删除一个空的规则链(-X)</p>
<p>3.改变一个内置规则链的策略(-P)</p>
<p>4.列出一条规则链中的规则(-L)</p>
<p>5.擦写一条规则链中的规则(-F)</p>
<p>规则维护</p>
<p>1.在一条规则链中加入一条新的规则(-A)</p>
<p>2.删除一条规则链中某个位置的规则(-D)</p>
<p>iptables的优点</p>
<p>在讨论各种iptables配置工具之前，让我们看一下iptables的优点，尤其是netfilter比ipchains具有的优势。</p>
<p>iptables允许建立状态(stateful)防火墙，就是在内存中保存穿过防火墙的每条连接。这种模式对于有效地配置FTP和DNS以及其它网络服务是必要的。</p>
<p>iptables能够过滤TCP标志任意组合报文，还能够过滤MAC地址。</p>
<p>系统日志比ipchains更容易配置，扩展性也更好。</p>
<p>对于网络地址转换(Network Address Translation)和透明代理的支持，netfilter更为强大和易于使用。</p>
<p>iptable能够阻止某些DOS攻击，例如SYS洪泛攻击。</p>
<p>iptables配置工具</p>
<p>现在，我们看一下linux iptables的一些配置工具。我主要关注每个工具的特征、弹性和易用性。我们将讨论以下的工具：</p>
<p>MonMotha's Firewall 2.3.5 作者：MonMotha</p>
<p>Firewallscript (iptables 4.4c-3 devel) 作者：Patrik Hildingsson</p>
<p>Ferm-0.0.18 作者：Auke Kok</p>
<p>AGT-0.83 作者：Andy Gilligan</p>
<p>Knetfilter-1.2.4 作者：Luigi Genoni</p>
<p>gShield-2.0.2 作者：R. Gregory</p>
<p>MonMotha的Firewall 2.3.5</p>
<p>MonMotha写的Firewall 2.3.5是一个大约30K的shell脚本。目前，主要适用于基于主机的保护，因为一些基于网络的选项正在开发中。这个脚本的界面(例如：给 iptables传递配置选项的方法)有点混乱。不过，它不需要配置文件而且安装容易，直接复制到任何地方都可以。默认情况下，它根本不做什么，实际上根本就不执行，也缺少文档。这个脚本对于拨号用户可能有点用处。</p>
<p>Firewallscript</p>
<p>Firewallscript(IFS 4.4d)也是一个bash脚本，大约有85K。这个脚本可以用于基于主机和网络的防护。首次运行时，它会直接产生一个配置文件。不过，在默认情况下，这个文件不起什么作用，只有测试作用。这个脚本可以配置NAT和地址伪装。这个脚本非常复杂，但是缺少文档，因此最好能够仔细阅读它的代码，使用 iptables -L命令哪个链已经生效，什么被允许/拒绝。这个脚本的IP报文追踪功能还可以为你提供娱乐。此外，它还会自动探测、加载iptables需要的内核模块。这个脚本和上一个脚本还具有取消(undo)功能，能够恢复iptables原来的配置文件。</p>
<p>Ferm</p>
<p>Ferm是一个Perl脚本，使用一种类C语言写成的配置文件。这种语言非常容易阅读和理解。这个脚本有很好的文档和丰富的示例作为参考。</p>
<p>这是一个例子：</p>
<p>-----------------------------------------------------------------------------</p>
<p># simple workstation example for ferm</p>
<p>chain input {</p>
<p>if ppp0 # put your outside interface here</p>
<p>{</p>
<p>proto tcp goto fw_tcp;</p>
<p>proto udp goto fw_udp;</p>
<p>proto icmp goto fw_icmp;</p>
<p>}</p>
<p>}</p>
<p>chain fw_tcp proto tcp {</p>
<p>dport ssh ACCEPT;</p>
<p>syn DENY log;</p>
<p>dport domain ACCEPT;</p>
<p>dport 0:1023 DENY log;</p>
<p>}</p>
<p>chain fw_udp proto udp {</p>
<p>DENY log;</p>
<p>}</p>
<p>chain fw_icmp proto icmp {</p>
<p>icmptype (</p>
<p>destination-unreachable time-exceeded</p>
<p>) ACCEPT;</p>
<p>DENY log;</p>
<p>}</p>
<p>-----------------------------------------------------------------------------</p>
<p>这个配置文件将使ferm产生iptables如下规则：允许向外的ssh和DNS报文通过;阻塞所有的UDP报文;只允许两种类型的ICMP消息通过：目的不可达和超时，并绝拒绝和日志其它类型的ICMP消息。</p>
<p>AGT</p>
<p>AGT是一个使用C语言编写的程序。从它的代码来看，目前还处于开发阶段。不支持automake，需要手工编辑Makefile文件，文档也不是很丰富，但是其配置文件非常简单。下面就是一个配置文件：</p>
<p>NEW | FROM-INT</p>
<p>NEW | RESET</p>
<p>|| FROM-INT | icmp | ACCEPT |||||</p>
<p>|| FROM-INT | tcp | ACCEPT ||||| pop3</p>
<p>|| FROM-INT | tcp | ACCEPT ||||| imap</p>
<p>|| RESET | tcp | REJECT --reject-with tcp-reset |||||</p>
<p>这样的文件格式，加上缺乏必要的文档，对使用者来说是一个很大的挑战。而且最好多花些时间学学iptables。</p>
<p>knetfilter</p>
<p>knetfilter是一个非常棒的图形化iptables配置工具，它是基于KDE的(有KDE1和KDE2两个版本)。 knetfilter非常易于上手，你可以很容易地使用它来配置基于主机保护的规则和规则列表;保存和恢复测这些规则和规则列表;测试规则和规则列表(在同一个面板上运行 tcpdump网络嗅探器)，这一切只要点几下鼠标就可以了。它也支持NAT和网络地址伪装的配置。但是，对于拨号工作站，knetfilter工作的不太好，因为它需要本地IP，而且只探测eth0网络接口，不进行PPP探测。这个工程的文档也很少，不过因为是基于图形界面，所以即使不用手册也可以很好地使用。</p>
<p>gShield</p>
<p>gShield是一个bash shell脚本，可能是当前最成熟的一个工具。它的文档非常丰富，配置文件也比较合理直观，还能够设置NAT。它不但能够处静态IP地址，还能够处理动态IP地址(例如：PPP)。</p>
<p>gShield还有图形界面，目前仍然处于早期开发阶段，可以从http://members.home.com/vhodges/gshieldconf.html下载。不过，它似乎只兼容gShield的早期版本(1.x)。</p>
<p>下面是一个示例配置文件：</p>
<p>FW_ROOT="/etc/firewall"</p>
<p>IPTABLES=`which iptables`</p>
<p>LOCALIF="eth0"</p>
<p>DNS="24.31.195.65"</p>
<p>LTIME="20/m"</p>
<p>ALLOW_DHCP_LEASES="YES"</p>
<p>...</p>
<p>gShield使用的默认配置非常安全，特别适合不愿意摆弄配置文件的用户，不过软件的编者建议用户最好能够通读整个配置文件。据README 文件讲，gShield实现了"类tcpwrapper风格的服务访问控制功能"，使用这个功能用户可以很容易地阻塞/允许某项服务，而不必考虑报文方向之类的问题，只要关心什么客户连接到服务器就可以了。</p>
<p>结论</p>
<p>虽然本文介绍了一些防火墙配置工具，但是实际上目前还没有理想的配置工具。最好的配置工具还是iptables命令，这里介绍的这些工具，只适用于对于使用iptables命令行感觉困难的用户。</p>
<p>曾经用过 Easy Firewall Generator for IPTables</p>
<p>转载自：<a href="http://sec.chinabyte.com/221/8645721.shtml" target="_blank">http://sec.chinabyte.com/221/8645721.shtml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.187299.com/archives/856/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iptables limit 参数备忘</title>
		<link>http://www.187299.com/archives/782</link>
		<comments>http://www.187299.com/archives/782#comments</comments>
		<pubDate>Fri, 08 May 2009 02:28:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.187299.com/?p=782</guid>
		<description><![CDATA[* 限制特定封包傳入速度 * 限制特定埠口連入頻率 * iptables Log 記錄參數備忘 * 自定 Chain 使用備忘 * 防治 SYN-Flood 碎片攻擊 限制 ping (echo-request) 傳入的速度 限制前, 可正常每 0.2 秒 ping 一次 ping yo... ]]></description>
			<content:encoded><![CDATA[<p>* 限制特定封包傳入速度<br />
* 限制特定埠口連入頻率<br />
* iptables Log 記錄參數備忘<br />
* 自定 Chain 使用備忘<br />
* 防治 SYN-Flood 碎片攻擊<br />
<span id="more-782"></span></p>
<p>限制 ping (echo-request) 傳入的速度</p>
<p>限制前, 可正常每 0.2 秒 ping 一次</p>
<p>ping your.linux.ip -i 0.2</p>
<p>限制每秒只接受一個 icmp echo-request 封包</p>
<p>iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT<br />
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP</p>
<p>--limit 1/s 表示每秒一次; 1/m 則為每分鐘一次</p>
<p>--limit-burst 表示允許觸發 limit 限制的最大次數 (預設 5)</p>
<p>再以每 0.2 秒 ping 一次, 得到的回應是每秒一次</p>
<p>ping your.linux.ip -i 0.2</p>
<p>限制 ssh 連入頻率</p>
<p>建立自訂 Chain, 限制 tcp 連線每分鐘一次, 超過者觸發 Log 記錄 (記錄在 /var/log/messages)</p>
<p>iptables -N ratelimit<br />
iptables -A ratelimit -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT<br />
iptables -A ratelimit -p tcp --syn -m limit --limit 1/m --limit-burst 1 -j ACCEPT<br />
iptables -A ratelimit -p tcp -j LOG --log-level "NOTICE" --log-prefix "[RATELIMIT]"<br />
iptables -A ratelimit -p tcp -j DROP</p>
<p>引用自訂 Chain, 限制 ssh (tcp port 22) 連入頻率</p>
<p>iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/16 -j ACCEPT (特定 IP 來源不受限制)<br />
iptables -A INPUT -p tcp --dport 22 -j ratelimit</p>
<p>參考資料: Mike's Blog - How to limit attack attempts in Linux</p>
<p>sshd_config 設定備忘:</p>
<p>* LoginGraceTime 30 密碼輸入時限為 30 秒<br />
* MaxAuthTries 2 最多只能輸入 3 次密碼</p>
<p>同理可證</p>
<p>iptables -N pinglimit<br />
iptables -A pinglimit -m limit --limit 1/s --limit-burst 1 -j ACCEPT<br />
iptables -A pinglimit -j DROP</p>
<p>iptables -A INPUT -p icmp --icmp-type echo-request -j pinglimit</p>
<p>亦可達到每秒只接受一個 echo-request 封包</p>
<p>補充: 清除自訂 Chain</p>
<p>iptables -L -n --line-number<br />
iptables -D INPUT n<br />
iptables -F ratelimit<br />
iptables -X ratelimit</p>
<p>防治 SYN-Flood 碎片攻擊</p>
<p>iptables -N syn-flood<br />
iptables -A syn-flood -m limit --limit 100/s --limit-burst 150 -j RETURN<br />
iptables -A syn-flood -j DROP</p>
<p>iptables -I INPUT -j syn-flood</p>
<p>模擬攻擊</p>
<p>wget http://www.xfocus.net/tools/200102/naptha-1.1.tgz<br />
wget ftp://rpmfind.net/linux/freshrpms/redhat/7.0/libnet/libnet-1.0.1b-1.src.rpm<br />
tar -zxf naptha-1.1.tgz<br />
rpmbuild --recompile libnet-1.0.1b-1.src.rpm<br />
cp -r /var/tmp/libnet-buildroot/usr/* /usr/local/<br />
cd naptha-1.1<br />
make</p>
<p>./synsend your.linux.host.ip 80 local.host.eth0.ip 0.1</p>
<p>若成功抵擋, 不久後會出現 Can't send packet!: Operation not permitted 的訊息</p>
<p>相關網頁:</p>
<p>* <a href="http://www.netfilter.org/documentation/HOWTO/cn/packet-filtering-HOWTO.html#toc7" target="_blank">Linux 2.4 Packet Filtering HOWTO </a>(big5)</p>
<p>Posted by Jamyy at 2006年03月17日 09:08<br />
Trackback Pings</p>
<p>TrackBack URL for this entry:<br />
<a href="http://cha.homeip.net/cgi-bin/mt/mt-tb.cgi/179" target="_blank">http://cha.homeip.net/cgi-bin/mt/mt-tb.cgi/179</a></p>
<p>转载自：<a href="http://cha.homeip.net/blog/archives/2006/03/iptables_limit.html" target="_blank">http://cha.homeip.net/blog/archives/2006/03/iptables_limit.html</a><a href="http://hi.baidu.com/baijy/blog/item/ee54e48830bac095a4c272fc.html" target="_blank"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.187299.com/archives/782/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fedora 8下的NAT配置</title>
		<link>http://www.187299.com/archives/161</link>
		<comments>http://www.187299.com/archives/161#comments</comments>
		<pubDate>Fri, 11 Jul 2008 05:36:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[NAT]]></category>

		<guid isPermaLink="false">http://www.momati.net/archives/161</guid>
		<description><![CDATA[这个是在物理机环境下做的，系统有两块网卡，eth0用于ADSL拨号，eth1用于连接局域网内的主机，保持eth0,eth1为激活状态。 1、建立拨号连接 按照以下步骤操作： 系统 ---&#62; 管理 ----&#62; 网络 ---... ]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;">这个是在物理机环境下做的，系统有两块网卡，eth0用于ADSL拨号，eth1用于连接局域网内的主机，保持eth0,eth1为激活状态。</span></p>
<p><span style="font-size: small;">1、建立拨号连接<br />
按照以下步骤操作：<br />
系统 ---&gt; 管理 ----&gt; 网络 ---&gt; 新建 ---&gt; 添加新设备类型---&gt;选择xDSL 连接，输入用户名和密码，然后点击激活，文件 ---&gt; 保存<br />
此时，系统应该拨号成功并可以上网</span></p>
<p><span style="font-size: small;"><span id="more-161"></span><br />
</span></p>
<p><span style="font-size: small;">2、 修改eth1的IP地址为192.168.2.1，网关为192.168.2.1</span></p>
<p><span style="font-size: small;">3、开启系统的转发功能<br />
# echo 1 &gt; /proc/sys/net/ipv4/ip_forward</span></p>
<p><span style="font-size: small;">以上修改为临时性的，为使系统重启后，转发功能依然生效，需作如下修改</span></p>
<p><span style="font-size: small;"># vi /etc/sysctl.conf<br />
将net.ipv4.ip_forward = 0<br />
修改为 net.ipv4.ip_forward = 1</span></p>
<p><span style="font-size: small;">4、修改防火墙设置<br />
在filter表里接受来自192.168.2.0/24的转发<br />
# iptables -I FORWARD -p ip -s 192.168.2.0/24 -j ACCEPT<br />
伪装192.168.2.0/24网络的IP为拨号链接获得的公网IP<br />
# iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.2.0/24 -j MASQUERADE<br />
保存防火墙的规则<br />
# service iptables save<br />
查看filter表的规则<br />
# iptables -L<br />
查看nat表的规则<br />
# iptables -t nat -L</span></p>
<p><span style="font-size: small;">5、修改局域网计算机IP为192.168.2.123或其他192.168.2.0网段的IP，网关修改为192.168.2.1即可以上网。</span></p>
<p><span style="font-size: small;">6、已知问题<br />
当只有eth0为激活状态时，系统可以正常上网，而当激活了eth1时，系统无法上网，用route命令查看系统路由表，发现默认网关由原来的ADSL获得<br />
的IP转变为eth1的IP地址192.168.2.1<br />
解决办法<br />
查看路由表<br />
# route<br />
删除网关<br />
# route del default gw 192.168.2.1<br />
修改网关为<br />
# route add -net 0.0.0.0 dev ppp0</span></p>
<p><span style="font-size: small;">参考文章：http://www.fengnet.com/showart.asp?art_id=636&amp;cat_id=9</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.187299.com/archives/161/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

