iptables增加、删除、修改、查询、保存防火墙策略教程
一.查看现有防火墙策略
# iptables有filter、nat、mangle、raw四张表 # filter表下默认有PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING五条链 # 默认查看filter表、所有链的策略 iptables -L -n
#--line-number参数会显示策略编号,该编号在删除策略时使用 iptables -L -n --line-number # 查看指定表的所有策略 iptables -t <table_name> -L -n # 查看指定链的策略 iptables -L <chain_name> -n
二.增加防火墙策略(以22端口为例)
iptables -A INPUT -s 192.168.220.0/24 -p TCP --dport 22 -j ACCEPT #增加网段 iptables -A INPUT -s 192.168.1.1 -p TCP --dport 22 -j ACCEPT #增加单个IP iptables -A INPUT -p TCP --dport 22 -j DROP
说明:
1. -A代理在末尾追加,如果要在开头插入使用-I
2.多IP使用逗号(半角)相隔,多端口添加-m multiport然后端口使用逗号(半角)相隔
iptables -A INPUT -s 127.0.0.1,1192.168.1.1 -p tcp -m multiport --dport 22,23 -j ACCEPT iptables -A INPUT -p tcp -m multiport --dport 22,23 -m comment --comment "deny all 22,23" -j DROP
3.对于连续IP合用--src-range
iptables -I INPUT -m iprange --src-range 192.168.220.128-192.168.220.139 -p tcp -m multiport --dport 22,23 -m comment --comment "subnet:22,23" -j ACCEPT
注意这个语句的结果中source会变成0.0.0.0/0,但不用担心他会对所有IP放行,后边有source IP range的描述那是起作用的IP:
4. 如果原来没有策略或者不冲突的情况下,-A和-I的结果是一样的;但是在“远程添加防火墙”和“限制22端口”两个条件下,-I可能会让你陷入致命的麻烦:
iptables -I INPUT -p TCP --dport 22 -j DROP iptables -I INPUT -s 192.168.1.1 -p TCP --dport 22 -j ACCEPT iptables -I INPUT -s 192.168.220.0/24 -p TCP --dport 22 -j ACCEPT
看起来这三句和-A那三句结果是一样的,但防火墙策略是即时生效的也就是在“iptables -I INPUT -p TCP --dport 22 -j DROP”执行后,你的ssh就马上会断开了后边两句根本不会执行
5.-A等参数后接的是链名,比如前面我们都是INPUT链;类似的,如果我们要操作自定义的规则链,只要将INPUT改成自己的链名即可。规则链创建删除命令如下:
# 创建新规则链 iptables -N <chain_name> # 将新建的链加追加到INPUT链 iptables -A INPUT -j <chain_name>
# 将新建的链从INPUT链移除
iptables -D INPUT -j <chain_name>
# 删除规则链
iptables -X <chain_name>
三.修改防火墙策略
iptables -R INPUT 2 -s 192.168.1.1 -p TCP --dport 22 -j DROP #2是--line-nember查到的,所有参数都要写-R不是在原策略基础上修改而就是直接取化,所以这里的-s虽然原来就是192.168.1.1但还是要写,不然结果就是DROP掉所有ip对22端口的连接请求
四.删除防火墙策略
iptables -D INPUT 2 #2是--line-number查到的,此句会删除第2条策略(从1开始编号) iptables -F #此句会清空所有防火墙规则,慎用
五.保存防火墙规则
上边对防火墙的修改只是临时的,并没有存入配置文件(/etc/sysconfig/iptables),防火墙服务重启之后策略会退回到之前保存的策略状态;要防火墙配置永久生效要进行保存
service iptbales save