我的iptables总结
iptables是个好东西,但是各种规则对于刚上手的朋友来说很不友好,一开始会摸不着头脑。傻东经过一段时间的研究,终于摸着点门道,不敢私藏,更怕忘记,因此写下此文,与大家分享。本文中的内容是终端下输的命令,不是/etc/sysconfig/iptables中的内容。第一页为概略介绍,第二页为详细规则演示,文中代码若有不正之处,欢迎留言指出!
说明:文中“|”表示“或”
对iptables操作的一般过程如下:
列出iptable内容
iptables -L -n
清除预设表filter中的所有规则链的规则
iptables -F
清除预设表filter中使用者自定链中的规则
iptables -X
修改规则,下面会有详细介绍
保存iptables中规则
service iptables save /etc/init.d/iptables save
重启iptables服务
service iptables restart /etc/init.d/iptables restart
iptables规则介绍如下:
参数说明:
INPUT --dport -s OUTPUT --sport -d -d IP或IP段 -s IP或IP段 -p 匹配TCP/UDP/ICMP,可使用相应的整数值,ICMP是1,TCP是6,UDP是17,缺省设置ALL是0,协议列表以英文逗号分隔,可以以“!”取反 -i 输入接口 -o 输出接口
添加规则
#INPUT/OUTPUT链 iptables -A INPUT|OUTPUT -s 源IP -d 目的IP -p tcp|udp|icmp --sport 源端口 --dport 目的端口 -j ACCEPT|DROP #FORWARD链 iptables -A FORWARD -i 输入接口 -o 输出接口 -m state --state RELATED,ESTABLISHED -j ACCEPT|DROP #NAT表 iptables -t nat -A PREROUTING -i 输入接口 -s 源IP -d 目的IP --sport 源端口 --dport 目的端口 -j ACCEPT|DROP
删除规则
#INPUT/OUTPUT链 iptables -D INPUT|OUTPUT -s 源IP -d 目的IP -p tcp|udp|icmp --dport 端口 -j ACCEPT|DROP #FORWARD链 iptables -D FORWARD -i 输入接口 -o 输出接口 -m state --state RELATED,ESTABLISHED -j ACCEPT|DROP
概略介绍结束,详细规则请看下页
#1、允许rsync到远程服务器 iptables -A OUTPUT -p tcp --sport 873 -d 目的IP -j ACCEPT #2、允许WWW服务的80端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT #3、允许邮件服务的25和110端口 iptables -A INPUT -p tcp --dport 25 -j ACCEPT iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp --dport 110 -j ACCEPT iptables -A OUTPUT -p tcp --dport 110 -j ACCEPT #4、允许FTP服务的21和20端口 iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT #5、允许DNS服务的53端口 iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT #6、允许rsync的873端口 iptables -A INPUT -p all --dport 873 -j ACCEPT iptables -A OUTPUT -p all --sport 873 -j ACCEPT #7、允许NRPE的5666端口 iptables -A INPUT -s 源IP -p all --dport 5666 -j ACCEPT iptables -A OUTPUT -d 目的IP -p all --sport 5666 -j ACCEPT #8、允许Ping iptables -A INPUT -p icmp -j ACCEPT iptables -A OUTPUT -p icmp -j ACCEPT #9、允许loopback!(不然会导致DNS无法正常关闭等问题) iptables -A INPUT -i lo -p all -j ACCEPT iptables -A OUTPUT -o lo -p all -j ACCEPT #10、只允许某IP或某网段的机器进行SSH连接 iptables -A INPUT -s 192.168.0.8|192.168.0.0/24 -p tcp --dport 22 -j ACCEPT #11、允许所有已经建立的和相关的连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #12、拒绝非法连接 iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP
二、FORWARD链
#1、开启转发功能(在做NAT时,FORWARD默认规则是DROP时,必须做) iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT #2、丢弃坏的TCP包 iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP #3、处理IP碎片数量,防止攻击,允许每秒100个 iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT #4、设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包. iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT #5、禁止非法连接 iptables -A FORWARD -m state --state INVALID -j DROP
三、NAT表
#1、防止外网用内网IP欺骗 iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP #2、禁止与某IP或IP段的所有连接 iptables -t nat -A PREROUTING -d 192.168.0.8|192.168.0.0/24 -j DROP #3、禁止连接某IP或IP段的FTP的21端口 iptables -t nat -A PREROUTING -p tcp --dport 21 -d 192.168.0.8|192.168.0.0/24 -j DROP
上一篇: Apache prefork和worker性能调优说明下一篇: 服务器服务监测脚本(更新)
[...] 列出iptable内容 [...]
[...] 我的iptables总结 [...]
[...] 服务器安全是个大问题,一般使用linux服务器,用得最多,最基础的就是iptables防火墙了。关于iptables详细用法可以参考我另一篇日志:我的iptables总结,本文将与大家分享一下一个简单方便的脚本用于管理iptables服务,相对于采用service的管理方式更加灵活。 [...]