⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netfilter的高级使用.htm

📁 这是我对防火墙技术的一些见解
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0059)http://www.xagoogle.com/resource/netfilter/netfilter002.htm -->
<HTML><HEAD><TITLE>New Page 1</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1400" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY>
<P align=center>&lt;<A 
href="http://www.xagoogle.com/resource/netfilter/netfilter001.htm" name=1><SPAN 
class=atitle2>netfilter 和 Linux 防火墙介绍</SPAN></A>|<A 
href="http://www.xagoogle.com/resource/">main</A>|<SPAN class=atitle2><A 
href="http://www.xagoogle.com/resource/netfilter/netfilter003.htm">内核防火墙netfilter入门&nbsp;</A></SPAN>&gt;</P>
<H1>Netfilter的高级使用</H1><BR>创建时间:2001-08-24<BR>文章属性:转载<BR>文章来源:<A 
href="mailto:santa2001@263.net">santa2001@263.net</A><BR>文章提交:<A 
href="https://www.xfocus.net/bbs/index.php?lang=cn&amp;act=Profile&amp;do=03&amp;MID=2721">inburst</A> 
(inburst_at_263.net)<BR><BR>Netfilter的高级使用<BR>santa<BR>santa2001@263.net<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;netfilter有一些功能在标准发行的linux内核里面没有包括,例如基于时间的控制、dropped-table、反端口扫描等等。这些功能大部分将来会慢慢加入到linux内核中,但目前都没有经过仔细测试,所以要慎重使用。<BR>&nbsp;&nbsp; 
要使用这些功能,&nbsp;&nbsp;&nbsp;&nbsp;请先下载最新的iptables源码。解压后,执行<BR>make pending-patches 
KERNEL_DIR=&lt;&lt;where-your-kernel-is&gt;&gt;看看你的内核是不是太老了,然后make 
patch-o-matic,按照提示选择想要安装的新功能。下面是我觉得有用的一些功能:<BR>1.&nbsp;&nbsp;&nbsp;&nbsp;ah-esp 
增加两个扩展,允许匹配ipsec包中ah或esp包头中的一段SPI(security parameters 
index)。<BR>2.&nbsp;&nbsp;&nbsp;&nbsp;ct-netlink 
使用户空间程序可以通过netlink获得连接跟踪的状态,并可经由用户空间改变连接状态。这个补丁与其他大多数补丁冲突。<BR>3.&nbsp;&nbsp;&nbsp;&nbsp;dropped-table 
加了一个drop表,被drop的包遍历这个表。和其他大部分补丁冲突。<BR>4.&nbsp;&nbsp;&nbsp;&nbsp;ftos 
扩展的tos,可以设置tos为0x0到0xff之间的任何值,用于简单的Qos。<BR>5.&nbsp;&nbsp;&nbsp;&nbsp;iplimit 
限制每客户到主机或网络的并发连接数。例如:<BR>iptables -p tcp --syn --dport 23 -m iplimit 
--iplimit-above 2 -j REJECT<BR>(每客户最多两个telnet连接),等效于iptables -p tcp --syn 
--dport 23 -m iplimit ! --iplimit-above 2 -j ACCEPT<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
限制到每个c类网络最多16个http连接<BR>iptables -p tcp --syn --dport 80 -m iplimit 
--iplimit-above 
16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<BR>&nbsp;&nbsp;&nbsp;&nbsp;--iplimit-mask 
24 -j REJECT<BR>6.&nbsp;&nbsp;&nbsp;&nbsp;ipv4options 
匹配ip操作,使用该功能可以过滤掉源路由、记录路由、时间戳等ip操作。iptables -m ipv4options 
–help可以得到详细的帮助。例如iptables -A input -m ipv4options --rr -j DROP 
过滤掉记录路由的包,iptables -A input -m ipv4options --ts -j DROP 
过滤掉带时间戳操作的ip包。<BR>7.&nbsp;&nbsp;&nbsp;&nbsp;irc-conntrack-nat 对irc的DCC(Direct 
Client-to-Client)协议的支持。<BR>8.&nbsp;&nbsp;&nbsp;&nbsp;length 
允许以指定值或指定范围匹配包长度。例如POD这样的大包可以直接drop。最小包长为0,最大的是0xffff。<BR>9.&nbsp;&nbsp;&nbsp;&nbsp;mport 
对multiport功能的增强。可以对单个端口和一段连续端口混合指定。看来是很好,不过我测试的时候这个功能不能用(2.4.6 &amp; 
2.4.9内核)。<BR>10.&nbsp;&nbsp;&nbsp;&nbsp;netlink 
用户空间可以经由netlink接收包。一个可用的用户空间程序fwmon (<A href="http://firestorm.geek-ware.co.uk/" 
target=_blank>http://firestorm.geek-ware.co.uk/</A>)。这个补丁基本类似ipchains的-o操作。<BR>11.&nbsp;&nbsp;&nbsp;&nbsp;netmap 
为nat表增加了一个NETMAP目标。提供一对一的网络映射支持。它可以在PREROUTING链中改变流入包的目标地址,在POSTROUTING链中改变输出包的源地址。使用范例如下:<BR>iptables 
-t nat -A PREROUTING -d 1.2.3.0/24 -j NETMAP --to 5.6.7.0/24<BR>iptables -t nat 
-A POSTROUTING -s 5.6.7.0/24 -j NETMAP --to 
1.2.3.0/24<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>12.&nbsp;&nbsp;&nbsp;&nbsp;nth 
提供对第n个包的匹配。<BR>13.&nbsp;&nbsp;&nbsp;&nbsp;pkttype 
按类匹配包。例如broadcast、multicast等。使用范例如下:<BR>iptables -A INPUT -m pkttype --pkt-type 
broadcast -j LOG。<BR>14.&nbsp;&nbsp;&nbsp;&nbsp;pool 
提供一种方法,用位图中的每一位代表一个地址,使用时需要一个用户空间程序ippool。<BR>15.&nbsp;&nbsp;&nbsp;&nbsp;psd 
端口扫描察觉,设计思想来自于Solar 
Designer的scanlogd。支持如下选项:<BR>a.&nbsp;&nbsp;&nbsp;&nbsp;--psd-weight-threshold 
&lt;threshold&gt;<BR>同一主机到不同目标端口发出多少包之后匹配<BR>b.&nbsp;&nbsp;&nbsp;&nbsp;--psd-delay-threshold 
&lt;delay&gt;<BR>同一主机到不同目标端口的连接间隔多少时间之内匹配<BR>c.&nbsp;&nbsp;&nbsp;&nbsp;--psd-lo-ports-weight 
&lt;weight&gt;<BR>访问多少个特权目标端口后匹配<BR>d.&nbsp;&nbsp;&nbsp;&nbsp;--psd-hi-ports-weight 
&lt;weight&gt;<BR>访问多少个非特权端口后匹配。<BR>16.&nbsp;&nbsp;&nbsp;&nbsp;realm 
使用前要求设置Qos配置里的CONFIG_NET_CLS_ROUTE4,允许在iptables里使用realm 
key,可以依照匹配的路由表项分类输出包。<BR>17.&nbsp;&nbsp;&nbsp;&nbsp;record-rpc 
增加两个模块ip_conntrack_rpc_udp和ip_conntrack_rpc_tcp,分别记录tcp和udp的portmap请求,增加record-rpc模块,可以鉴别一个rpc连接是一个到portmap的映射请求还是一个portmap映射后的连接。用这种方法可以方便的实现rpc过滤。<BR>18.&nbsp;&nbsp;&nbsp;&nbsp;SAME 
类似于标准的SNAT,不过为客户端的每个连接提供相同的ip地址。同时提供—nodst选项,选择源ip的时候不会使用这个选项后的ip地址。与dropped-table不兼容。<BR>19.&nbsp;&nbsp;&nbsp;&nbsp;snmp-nat 
这个模块实现snmp负载的ALC(应用层网关),结合nat,它允许网络管理系统存取多个私有网络,即使他们的ip地址冲突也没有关系。他通过改变snmp负载中的ip地址来匹配ip层的nat映射。这是SNMP-ALG的基本形式,在rfc2962中有详细的描述。<BR>20.&nbsp;&nbsp;&nbsp;&nbsp;string 
允许匹配含有特定字符串的包。可以做个简单的ids。<BR>21.&nbsp;&nbsp;&nbsp;&nbsp;tcp-MSS 
增加tcp-MSS目标。允许调整tcp syn包里的MSS域,用于控制连接包的最大长度。<BR>一些防火墙或主机会很不适当的过滤掉type 3、code 
4(需要分片)的icmp包。表现出来的现象如下:<BR>a.&nbsp;&nbsp;&nbsp;&nbsp;浏览网页时,什么也没有收到连接就挂起了。<BR>b.&nbsp;&nbsp;&nbsp;&nbsp;小邮件能收到,大邮件收不到。<BR>c.&nbsp;&nbsp;&nbsp;&nbsp;ssh工作的很好,但scp在握手成功后就挂起了。<BR>Tcp-MSS目标就是用来解决此类问题的。目前发行的linux的内核从2.4.7开始已经包含了这个补丁。<BR>22.&nbsp;&nbsp;&nbsp;&nbsp;tcp-window-tracking 
这个补丁是依据Guido van Rooij [1]写的论文'Real Stateful TCP Packet Filtering in IP 
Filter'实现的tcp连接跟踪记录,可以对已经建立的tcp连接进行连接跟踪。增加了Window scaling支持。<BR>[1] <A 
href="http://www.iae.nl/users/guido/papers/tcp_filtering.ps.gz" 
target=_blank>http://www.iae.nl/users/guido/papers/tcp_filtering.ps.gz</A><BR>23.&nbsp;&nbsp;&nbsp;&nbsp;time 
增加对时间的匹配,可以指定某条规则在什么时间触发,在什么时间无效。iptables -m time 
–help可以得到详细的帮助。这个补丁增加了如下参数:<BR>a.--timestart HH:MM<BR>何时触发<BR>b.--timestop 
HH:MM<BR>何时无效<BR>c.--days Tue,Mon...<BR>一周中的某几天有效<BR>例如-m time --timestart 8:00 
--timestop 18:00 --days 
Mon,Tue,Wed,Thu,Fri就是说每周的周一到周五从8:00到18:00这条规则有效。<BR>需要注意的是这个补丁目前还不能处理时区,使用时只能使用UTC时间。<BR>24.&nbsp;&nbsp;&nbsp;&nbsp;TTL 
增加一个TTL目标。可以使用户用指定值递增或递减ttl值。<BR>25.&nbsp;&nbsp;&nbsp;&nbsp;ulog 
增加一个ULOG目标。跳到这个目标的包使用netlink multicast 
sockets送到用户空间守护进程。不像LOG目标,后者只能通过syslog来察看。Libipulog目录下是接收ulog信息的库文件。用户空间守护进程的一个实现ulogd可以从<A 
href="http://www.gnumonks.org/projects/ulogd" 
target=_blank>http://www.gnumonks.org/projects/ulogd</A>得到。<BR>因为条件所限,以上所写的大多没有经过测试,错漏之处,欢迎指正。 

<P align=center><A name=author1><SPAN class=atitle2>本文转自网络</SPAN></A> 
如果您觉得违反了你的权益请<A href="mailto:harryxin7277@sina.com">通知</A>我,我会在作相应的修改</P>
<P> </P></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -