分享
 
 
 

linux常见命令(12)

王朝system·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

当然也可以在前面加上'!',意即所有不是初始连接的包。

7.3.6.2 UDP 扩展

这些扩展在指定'-p udp'时自动加载。可以提供 '--source-port'、'--sport'、'--destination-port'和'--dport'等和TCP类似的选项。

7.3.6.3 ICMP扩展

这些扩展在指定'-p icmp'时自动加载。只提供一个新的选项:

--icmp-type

可以跟'!',icmp类型名称(如'host-unreachable')或者数值(如'3'),或者数值类型/代码(如'3/3')。用'-p icmp --help'可以列出可用的icmp类型名。

7.3.6.4 其他匹配的扩展

这些netfilter包中的其他扩展尚属于演示阶段,(如果安装了的话)可以用'-m'来启用。

mac

--mac-source

可以跟一个'!',后面是以太网地址,用冒号分隔的16近制表示,如`--mac-source 00:60:08:91:CC:B7'。

limit

此模块必须明确指定'-m limit'或'--match limit'。用来限制匹配的速率。就像抑制记录信息。只会匹配给定的数字/每秒(默认是每小时3个匹配,和5个触发)。可以有两个参数:

--limit

后面跟数字:指定每秒钟允许的匹配最大平均数。这个数字可以指定 明确的单位,使用'/second'、`/minute'、`/hour' 或者 `/day',或者 只写一部分(如'5/second'和'5/s'一样)。

--limit-burst

后面跟一个数字,指明在上面的limit起作用前最大的触发值。

这个匹配(项)通常和LOG目标结合起来使用,以对速率限制进行记录。 为了理解它是如何工作的,我们来看看下面这条规则,它使用默认限制参数 记录包。

# iptables -A FORWARD -m limit -j LOG

当这条规则第一次启用时,包开始被记录。实际上,由于默认触发是5,前五个包会被记录。然后,每隔20分钟再记录一次包,无论这期间有多少包到达。而且,每个不匹配包的20分钟间隔里,会恢复一个触发(值)。如果100分钟都没有包到达这个规则,那么所有触发都会恢复,回到起点。

提示:你目前不能以大于59小时的时间来创建这种规则,所以如果你设置一个平均率为一天,那么你的触发率必须小于3。

你也可以将此模块用于避免使用快速响应速率的各类拒绝服务攻击(DoS,Denial of Server)。

(译者:以下是较著名的攻击)

Syn-flood protection:

# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

Furtive port scanner:

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Ping of death:

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

这个模块工作原理类似于“节流阀”,以下是图示。

rate (pkt/s)

^ .---.

| / DoS | / Edge of DoS -|.....:.........\....................... DoS的边界 =

= (limit * | /: limit-burst) | / : \ .-.

| / : \ / | / : \ / End of DoS -|/....:..............:.../.......\..../. DoS结束

= limit | : :`-' `--'

-------------+-----+--------------+------------------> time (s)

LOGIC => Match | Didn't Match | Match

我们匹配由五个包触发的每秒一个包,不过每秒钟第四个包才开始进入(这个规则),进行三秒钟,然后重新开始。

<--Flood 1--> <---Flood 2--->

Total ^ Line __-- YNNN

Packets| Rate __-- YNNN

| mum __-- YNNN

10 | Maxi __-- Y

| __-- Y

| __-- Y

| __-- YNNN

|- YNNN

5 | Y

| Y Key: Y -> Matched Rule

| Y N -> Didn't Match Rule

| Y

|Y

0 +--------------------------------------------------> Time (seconds)

0 1 2 3 4 5 6 7 8 9 10 11 12

你可以看见,前五个包是允许超过一个包/每秒(这个速率)的,然后就开始限制。 如果有一个暂停,那么另一个触发也是允许的,但不能超过规则设置的最大速率。

owner

--uid-owner userid

根据给出的有效的(数值)user id来匹配包的创建进程。

--gid-owner groupid

根据给出的有效的(数值)group id 来匹配包的创建进程。

--pid-owner processid

根据给出的process id 来匹配包的创建进程。

--sid-owner sessionid

根据给出的 session group 来匹配包的创建进程。

unclean

这是试验性模块,必须明确指定'-m unclean'或者'--match unclean'。 它对包进行各种随机判断。此模块还未通过审核,所以不要用在安全设施上。 (可能造成更糟糕的结果,它自己可能还有Bug)。没有提供选项。

7.3.6.5 状态匹配

最有用的匹配标准是'state'扩展。它负责解释'ip_conntrack'模块的connection-tracking分析。 这是推荐使用的(好东东)。

通过指定'-m state'来允许附加的'--state'选项,匹配用逗号分割的状态列表('!'标志表明不符合那些状态(的状态))。

NEW

由新连接创建的包

ESTABLISHED

属于已存在连接的包(也就是说,响应的包)

RELATED

和一个已存在连接有关,但不是它的一部分的包。如ICMP错误,或者(已加载FTP模块)一个建立FTP数据连接的包。

INVALID

由于以下原因而不能被识别的包:包括内存不足和不是相应当前任何连接的ICMP错误。通常这些包会被丢弃。

这个强大的匹配扩展的一个例子:

# iptables -A FORWARD -i ppp0 -m state ! --state NEW -j DROP

7.4 目标规格

现在,我们知道了如何对包进行测试,但是我们还需要告诉那些匹配的包应该如何做。这被称作规则的目标。

有两个很简单的内建目标:DROP和ACCEPT。我们已经看过了。如果包匹配的规则,其目标是这二者中的一个,那么不再考虑更多的规则了:包的命运已经决定。

除此之外有两种目标:扩展的和用户定义的链。

7.4.1 用户定义链

iptables一个强大的特点是由ipchains继承来的可以让用户创建新的链,附加在三个内建的链上(INPUT、FORWARD和OUTPUT)。按照惯例,用户定义链使用小写以区分他们。(我们会在“Operations on an Entire Chains”中描述如何创建新的用户定义链)。

当包匹配的链的目标是一个用户定义链时,包就转移到用户定义链中的规则。如果 没有决定包的命运,那么包在(用户定义链)中的移动就结束了,并回到当前链的下一个规则。

搞搞ASCII艺术吧。考虑两个(笨蛋)链:INPUT(内建的)和test(用户定义的)。

`INPUT' `test'

---------------------------- ----------------------------

| Rule1: -p ICMP -j DROP | | Rule1: -s 192.168.1.1 |

|--------------------------| |--------------------------|

| Rule2: -p TCP -j test | | Rule2: -d 192.168.1.1 |

|--------------------------| ----------------------------

| Rule3: -p UDP -j DROP |

----------------------------

考虑一个由192.168.1.1到1.2.3.4的TCP包。它进入INPUT链,由Rule1检查 - 不匹配。 Rule2匹配,那么它的目标就是test,所以下一个检查由test开始。test中的第一个规则 Rule1是匹配的,但是没有指定目标,所以由第二个规则Rule2检查。结果是不匹配,而我们 到达了链的尾部。于是回到INPUT链,因为刚刚被Rule2检查,所以现在由Rule3来检查,仍然 不匹配。

所以这个包的路线是:

v __________________________

`INPUT' | / `test' v

------------------------|--/ -----------------------|----

| Rule1 | /| | Rule1 | |

|-----------------------|/-| |----------------------|---|

| Rule2 / | | Rule2 | |

|--------------------------| -----------------------v----

| Rule3 /--+___________________________/

------------------------|---

v

用户定义链可以跳转到另一个用户定义链(不过不能循环:如果发现循环,包就会被丢弃)。

7.4.2 iptables扩展:新目标

其他类型的扩展是目标。目标扩展由内核模块组成,而且iptables的一个可选扩展提供了新的命令行选项。有几个扩展是包含在默认netfilter发布中的。

LOG

--log-level

跟一个级别名称或数字。合适的名字是(忽略大小写)'debug'、'info'、'notice'、'warning'、'err'、'crit'、'alert'和'emerg',相当于数字7到0。请参考syslog.conf的手册获取这些级别的说明。默认是'warning'。

--log-prefix

跟一个最多29个字符的字符串,它被写入到log信息的开始处,这样可以区别出来。

这个模块最有用的就是跟在limit match后面,这样你就不会被你的log淹没了。

REJECT

此模块和'DROP'效果一样,除了会发送一个'port unreachable'的ICMP错误报文。注意如果属于以下情况,ICMP错误报文不会发送:

o 包一开始就是ICMP错误报文,或者是未知的ICMP类型。

o 包被作为无头的分片过滤了。

o 我们已经向那里发送了太多的ICMP错误报文(参见/proc/sys/net/ipv4/icmp ratelimit)。

7.4.3 特殊的内建目标

有两个特殊的内建目标:RETURN和QUEUE。

RETURN如同到达这个链的尾部:如果是内建的链的规则,那么这个链的默认规则将被执行。如果是用户定义链,当跳至这个链中的这条规则(包含RETURN)时,回到前面的链继续匹配。

QUEUE是一个特别的目标,会为用户空间进程队列这个包。要这样使用,需要两个部件:

o 一个"queue handler",处理用户空间与内核之间的机制。

o 和一个用户空间用来接收的应用程序,可能是操作,以及对包进行裁决。

IPv4 iptables的标准queue handler是 ip_queue 模块,跟随内核发布并标记为实验中。

下面是一个如何用iptables为用户空间进程队列包的快速例子:

# modprobe iptable_filter

# modprobe ip_queue

# iptables -A OUTPUT -p icmp -j QUEUE

在这个例子中,本地生成的送出ICMP包(如由ping产生)到达ip_queue模块,然后包被试图送往用户空间应用。如果没有用户空间应用在(那儿)等着,包就被丢弃了。

要写一个用户空间应用,需要libipq API。和iptables一起发布。在CVS的testsuite tools(如redirect.c)中可以找到相关例子。

可以通过这里检查ip_queue的状态:

/proc/net/ip_queue

队列的最大长度(也就是不包含返回包的送往用户空间包的数量)可以通过这里控制:

/proc/sys/net/ipv4/ip_queue_maxlen

默认队列长度是1024。一旦达到这个长度,新的包就会被丢弃,直到队列长度小于这个值。好的协议如TCP,会对丢弃的包作出拥挤的解释,而且在队列满了后会很理想的将它挡回。无论如何,如果默认值太小的话,最好是多实验以决定队列的最大长度。

7.5 对整个链进行操作

iptables一个非常有用的特性是可以将链中相关的规则成组。你可以随意给链取名,不过我建议使用小写字母以避免与内建的链和目标产生冲突。链的名称最长为31个字母。

7.5.1 创建新链

让我们创建一个新链。因为我是个充满想象的家伙,我叫它test。使用'-N'或'--new-chain'选项:

# iptables -N test

如此简单,现在你可以像上面说的那样放入规则了。

7.5.2 删除链

删除一个链同样简单,使用 '-X'或'--delete-chain'选项。为什么是'-X'?嗯,因为所有合适的字母都已经被使用了。

# iptables -X test

有几个删除链的限制:他们必须是空的(见下面的"Flushing a Chain")而且他们不能是任何规则的目标。你也不能删除任何一个内建的链。

如果你不指定链名的话,所有可以被删除的用户定义链都将被删除。

7.5.3 清空一个链

这是清除一个链中所有规则的简单方法,使用'-F' 或 '--flush'命令。

# iptables -F FORWARD

如果不指定链的话,所有链都将被清空。

7.5.4 对链进行列表

用'-L'或'--list'命令,你可以列出一个链中的所有规则。

用户定义链中的'refcnt'是有多少链的规则指向了它。这个值必须为0,然后才可以删除这个链。

如果链名被忽略,所有链都将被列出,即便是空的。

'-L'可以有三个选项。'-n'(数字)选项对于阻止iptables试图查找IP地址时非常有用,因为(如果你像大多数人一样使用DNS)如果你的DNS设置不太合适的话,可能会造成长时间的停顿,或者你滤掉了DNS请求。它还会让TCP或UDP端口以数字显示。

'-v'选项显示所有规则的细节,包括饱和字节计数器,TOS比较,以及接口。否则这些值是被忽略的。

注意,报和字节计数器可以分别使用'K'、'M'或者'G'来代替1000、1,000,000 和1,000,000,000。使用'-x'(扩展数字)标志来打印整个值,不管它有多大。

7.5.5 重置(清零)计数器

可以重置计数器非常有用。可以用'-Z'或'--zero'来完成。

考虑下面的:

# iptables -L FORWARD

# iptables -Z FORWARD

在上述例子中,有些包在'-L'和'-Z'命令之间通过。因此,你可以把'-L'和'-Z'一起使用,读取时就清空计数器。

第一頁    上一頁    第12頁/共15頁    下一頁    最後頁
第01頁 第02頁 第03頁 第04頁 第05頁 第06頁 第07頁 第08頁 第09頁 第10頁 
第11頁 第12頁 第13頁 第14頁 第15頁 
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有