傻东iptables总结

On 2011年02月10日, in tips, by netoearth

来源:傻东の学习笔记

iptables是个好东西,但是各种规则对于刚上手的朋友来说很不友好,一开始会摸不着头脑。傻东经过一段时间的研究,终于摸着点门道,不敢私 藏,更怕忘记,因此写下此文,与大家分享。本文中的内容是终端下输的命令,不是/etc/sysconfig/iptables中的内容。第一页为概略介 绍,第二页为详细规则演示,文中代码若有不正之处,欢迎留言指出!

说明:文中“|”表示“或”

对iptables操作的一般过程如下:

列出iptable内容

1 iptables -L -n

清除预设表filter中的所有规则链的规则

1 iptables -F

清除预设表filter中使用者自定链中的规则

1 iptables -X

修改规则,下面会有详细介绍

保存iptables中规则

1 service iptables save
2 /etc/init.d/iptables save

重启iptables服务

1 service iptables restart
2 /etc/init.d/iptables restart

iptables规则介绍如下:

对应关系

1 INPUT   --dport -s
2 OUTPUT  --sport -d

添加规则

1 #INPUT/OUTPUT链
2 iptables -A INPUT|OUTPUT -s 源IP -d 目的IP -p all|tcp|udp|icmp --sport 源端口 --dport 目的端口 -j ACCEPT|DROP
3 #FORWARD链
4 iptables -A FORWARD -i 输入网卡 -o 输出网卡 -m state --state RELATED,ESTABLISHED -j ACCEPT|DROP
5 #NAT表
6 iptables -t nat -A PREROUTING -i 输入网卡 -s 源IP -d 目的IP --sport 源端口 --dport 目的端口 -j ACCEPT|DROP

删除规则

1 #INPUT/OUTPUT链
2 iptables -D INPUT|OUTPUT -s 源IP -d 目的IP -p all|tcp|udp|icmp --dport 端口 -j ACCEPT|DROP
3 #FORWARD链
4 iptables -D FORWARD -i 输入网卡 -o 输出网卡 -m state --state RELATED,ESTABLISHED -j ACCEPT|DROP

一、INPUT|OUTPUT链

01 #1、允许rsync到远程服务器
02 iptables -A OUTPUT -p tcp --sport 873 -d 目的IP -j ACCEPT
03 #2、允许WWW服务的80端口
04 iptables -A INPUT -p tcp --dport 80 -j ACCEPT
05 iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
06 #3、允许邮件服务的25和110端口
07 iptables -A INPUT -p tcp --dport 25 -j ACCEPT
08 iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
09 iptables -A INPUT -p tcp --dport 110 -j ACCEPT
10 iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT
11 #4、允许FTP服务的21和20端口
12 iptables -A INPUT -p tcp --dport 21 -j ACCEPT
13 iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT
14 iptables -A INPUT -p tcp --dport 20 -j ACCEPT
15 iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT
16 #5、允许DNS服务的53端口
17 iptables -A INPUT -p tcp --dport 53 -j ACCEPT
18 iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
19 #6、允许rsync的873端口
20 iptables -A INPUT -p all --dport 873 -j ACCEPT
21 iptables -A OUTPUT -p all --sport 873 -j ACCEPT
22 #7、允许NRPE的5666端口
23 iptables -A INPUT -s 源IP -p all --dport 5666 -j ACCEPT
24 iptables -A OUTPUT -d 目的IP -p all --sport 5666 -j ACCEPT
25 #8、允许Ping
26 iptables -A INPUT -p icmp -j ACCEPT
27 iptables -A OUTPUT -p icmp -j ACCEPT
28 #9、允许loopback!(不然会导致DNS无法正常关闭等问题)
29 iptables -A INPUT -i lo -p all -j ACCEPT
30 iptables -A OUTPUT -o lo -p all -j ACCEPT
31 #10、只允许某IP或某网段的机器进行SSH连接
32 iptables -A INPUT -s 192.168.0.8|192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
33 #11、允许所有已经建立的和相关的连接
34 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
35 iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
36 #12、拒绝非法连接
37 iptables -A INPUT   -m state --state INVALID -j DROP
38 iptables -A OUTPUT  -m state --state INVALID -j DROP

二、FORWARD链

01 #1、开启转发功能(在做NAT时,FORWARD默认规则是DROP时,必须做)
02 iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
03 iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
04 #2、丢弃坏的TCP包
05 iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
06 #3、处理IP碎片数量,防止攻击,允许每秒100个
07 iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
08 #4、设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.
09 iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
10 #5、禁止非法连接
11 iptables -A FORWARD -m state --state INVALID -j DROP

三、NAT表

1 #1、防止外网用内网IP欺骗
2 iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
3 iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
4 iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
5 #2、禁止与某IP或IP段的所有连接
6 iptables -t nat -A PREROUTING  -d 192.168.0.8|192.168.0.0/24 -j DROP
7 #3、禁止连接某IP或IP段的FTP的21端口
8 iptables -t nat -A PREROUTING  -p tcp --dport 21 -d 192.168.0.8|192.168.0.0/24 -j DROP
Tagged with:  

Comments are closed.