查看当前所有防火墙规则
- 1、iptables -L -n -v
- 要显示输入或输出链规则,且结果中有行号,可以运行
- 1、iptables -L INPUT -n -v
- 2、iptables -L OUTPUT -n --line-numbers
- 3、iptables -L OUTPUT -n --line-numbers | less
- 4、iptables -L OUTPUT -n --line-numbers | grep 202.54.1.1
删除规则
- 1、iptables -D INPUT 4将IP地址202.54.1.1从规则中删除:
- 1、iptables -D INPUT -s 202.54.1.1 -j DROP
拒绝所有IP访问
- 1、iptables -P INPUT DROP (拒绝入栈)/使用这个命令之前必须把你当前IP添加到允许里面去
- 2、iptables -P OUTPUT DROP (拒绝出栈)/这命令用不得,特别是远程进去的、
屏蔽入栈 IP 地址访问
- 1、iptables -A INPUT -s 1.2.3.4 -j DROP
- 2、iptables -A INPUT -s 192.168.0.0/24 -j DROP
屏蔽入栈端口请求
如果我们想80端口上屏蔽所有的服务请求,可以运行:
- 1、iptables -A INPUT -p tcp --dport 80 -j DROP
- 2、iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
只想屏蔽IP地址1.2.3.4对80端口的请求,可以运行: - 1、iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP
- 2、iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
屏蔽出栈IP地址
首先获取一个域名的IP地址,要屏蔽访问域名cyberciti.biz的网络数据包,可以运行:
- 1、host -t a cyberciti.biz
- 1、 iptables -A OUTPUT -d 75.126.153.206 -j DROP
允许一些列 IP 地址访问
- iptables -A INPUT -s 192.190.1.1 -j ACCEPT
- iptables -A OUTPUT -s 192.190.1.1 -j ACCEPT
- iptables -A FORWARD -s 192.190.1.1 -j ACCEPT
- service iptables save保存规则
允许所有本机向外的访问 - iptables -A OUTPUT -j ACCEPT
- 1、运行IP地址范围192.168.1.100 到192.168.1.200 访问80端口
- 2、 iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT
- 3、#NAT示例
- 4、iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25
下面的命令可以允许7000到7010范围内的TCP端口访问: - 1、iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT
解决重启iptables服务重启所有连接
- (1)重启后永久性生效:
开启:chkconfig iptables on
关闭:chkconfig iptables off - (2) 即时生效,重启后失效:
开启:service iptables start
关闭:service iptables stop - 当重启iptables服务时,它会断开所有已建立的连接。这是因为在重启防火墙时,会卸载IPTABLES_MODULES_UNLOAD模块。
要解决这个问题,可以编辑/etc/sysconfig/iptables-config
vi /etc/init.d/iptables
- IPTABLES_MODULES_UNLOAD = no
屏蔽或开启常用的TCP、UDP端口:
- 1、可以使用DROP替换ACCEPT,实现端口屏蔽。
- 2、打开22端口(SSH)
- 3、iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
- 4、iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
- 5 、打开TCP/UDP631端口(打印服务)
- 6 、iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT
- 7、 iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT
- 8、打开123端口,允许局域网用户进行NTP时间同步
- 9、iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT
- 10、打开25端口(SMTP)
- 11、 iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT
- 12、 打开DNS端口
- 13、iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
- 14、iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
- 15、打开http/https端口
- 16、iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
- 17、iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
- 18、打开TCP110端口(POP3)
- 19、iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT
- 20、打开TCP143端口
- 21、iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT
- 22、为局域网用户开启Samba访问
- 23、iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT
- 24、iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT
- 25、iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
- 26、iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT
- 27、为局域网用户开启代理服务器访问
- 28、iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT
- 29、为局域网用户开启MySQL访问
- 30、iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
限制客户端IP的并发连接数
我们可以使用connlimit模块限制客户端IP的并发连接数。下面的命令允许每个客户端只能并发3个ssh连接:
- 1、iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
设置HTTP并发连接为20个:
iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP
参数说明:
connlimit-above 3:连接数超过3个自动匹配
connlimit-mask 24:子网掩码匹配
测试防火墙
- 测试端口是否开放:
- 1、netstat -tulpn
测试 TCP 80端口是否开放: - 1、netstat -tulpn | grep :80