1查看当前所有防火墙规则
命令:iptables -L -n -v
要显示输入或者输出链规则,且结果中有行号,可以运行
iptables -L input -n -v
iptables -L output -n --line -namubers
iptables -L output -n --line -numbers|less
iptables -L output -n -line -numbers|grep 202.54.1.1
2删除规则
命令:iptables -D INPUT 4
将IP地址202.54.1.1从规则中删除:
命令: iptables -D INPUT -s 202.54.1.1 -j DROP
3拒绝所有IP访问
命令: iptables -P INPUT DROP (拒绝入栈)/使用这个命令之前必须把你当前IP添加到允许中去
命令: iptables -P OUTPUT DROP (拒绝出栈)/这个命令用不得,特别是远程进入的
4屏蔽入栈IP地址访问
iptables -A INPUT -s 1.2.3.4 -j DROP
iptables -A INPUT -s 192.168.0.0/24 -j DROP
5屏蔽入栈端口请求
如果我们想在80 端口上面屏蔽所有的服务请求,可以运行:
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
只是想屏蔽地址1.2.3.4对80端口的请求,可以运行:
iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP
iptables -A INPUT -i ech1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
6屏蔽出栈IP地址
首先获取一个域名的IP地址,要屏蔽访问域名baidu.com的网络数据包,可以运行:
host -t baidu.com
iptables -A OUTPUT -d 1.2.3.4 -j DROP
7允许一系列IP地址访问
iptables -A INPUT -s 192.190.1.1. -j ACCEPT
iptables -A OUTPUT -s 192.190.1.1 -j ACCEPT
iptablels -A FORWARD -s 192.190.1.1 -j ACCEPT
service iptables save 保存规则
允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
运行IP地址方位192.168.1.100 到192.168.1.200访问80端口
iptables -A INPUT -p tcp --destination -port 80 -m iprange --src -range 192.168.1.100-192.168.1.200 -jACCEPT
下面的命令可以允许7000 到7010方位内的TCP端口访问:
iptables -A INPUT -m state --state NEW -m tcp --dport 7000:7010 -j ACCEPT
8解决重启iptables 服务重启所有连接:
重启后永久生效
开启:chkconfig iptables on
关闭: chkconfig iptables off
即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
当重启iptables服务时,他会断开所有已建立的连接,这是因为在重启防火墙时,会卸载 IPTABLES_MODULES_UNLOAD 模块
要解决这个问题,可以编辑/etc/sysconfig/iptables-config
vi /etc/init.d/iptables
IPTABLES_MODULES_UNLOAD=no
9屏蔽或者开启常用的TCP、UDP端口
可以使用DROP 替换ACCEPT,实现端口屏蔽
打开22端口(ssh)
iptables -A inPUT -m state --state NEW -m TCP -p tcp --dport 22 -j ACCEPT
打开TCP/UDP631 端口(打印服务)
iptables -A INPUT -s 192.168.1.0/24 -p udp -m --dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m --dport 631 -j ACCEPT
打开123端口,允许局域网用户进行NTP时间同步
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT
打开25 端口(SMTP)
iptables -A input -m state --state NEW -p tcp --dport 25 -j ACCEPT
打开DNS端口
iptables -A INPUT -m state --state NEW -p udp -- dport 53 ACCEPT
iptables -A INPUT -m state -- state NEW -p tcp --dport 53 -j ACCEPT
打开http/https 端口
iptables -A INPUT -m state --state NEW -p --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCept
打开TCP110 端口(POP3)
IPtable是 -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT
打开TCP143 端口
iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT
为局域网用户开启Samba访问
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT
为局域网用户开启代理服务器访问
iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT
为局域网开启MySQL访问
iptables -l INPUT -p tcp --dport 3306 -j ACCEPT
10限制客户端IP的并发连接数
我们可以使用connlimit 模块限制哭护短IP的并发连接数,下面的命令允许每个客户端职能并发3个ssh连接:
iptables -A INPUT -p tcp --svn --dport 22 -m connlimit -adove 3 -j REJECT
设置HTTP并发连接20个:
iptables -p tcp --syn --dport 80 -m connlimit -adove 20 --connlimit -mask 24 -j DROP
参数说明:
--connlimit -adove 3:连接数超过3个自动匹配
--connlimit -mask 24:子网掩码匹配
测试防火墙
测试端口是否开放:
netstat -tulpn
测试TCP 80 端口是个开放
netstat -tu;pn|grep :80
如果80端口开放,请确保启动Apache服务器:
service httpd start
并确保打开iptables防火墙80端口:
iptables -L INPUT -v -n |greo 80
如果80端口没有开放,可以运行下面的命令:
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
service iptables save
下面使用telnet 命令测试是否可以连接到80 端口:
telnet www.baidu.com 80
使用Crit日志级别
iptables -A INPUT -s 1.2.3.4 -p tcp --destination -port 80 -j LOG --log -level crit
屏蔽ICMP ping请求
我们可以通过允许下面的命令屏蔽ping请求:
iptables -A INPUT -p icmp -type echno -request -j DROP
iptables -A INPUT -i eth1 -p icmp --icmp -type echo -request -j DROP
也可以按照特定额网段和主机限制ping请求:
iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp -type exho -request -j ACCEPT
根据MAC地址允许或者阻止数据包的传入
iptables -A INPUT -m mac -- mac -source 00:0F:FA:91:04:08 -j DROP
参考:http://www.csdn.net/article/2012-01-17/310905