Linux中iptables详解
首先要注意的是iptables不是防火墙,而是实现防火墙功能的工具。
1.iptables的两张框架图:
表:
raw表: 对报文设置一个标志,决定数据包是否被状态跟踪机制处理
mangle表: 主要用于修改数据包
nat表: 主要用处是网络地址转换、端口映射
fileter表: 主要用于过滤包
一般情况我们对filter表做配置的更多。
链:
INPUT: 作用于进入本机的包
OUTPUT: 作用于本机送出的包
FORWARD: 匹配穿过本机的数据包(转发)
PREROUTING: 用于修改目的地址(DNAT)
POSTROUTING:用于修改源地址 (SNAT)
2.iptables的基本操作
iptables的三种状态:
ACCEPT 允许
DROP 丢弃
REJECT 拒绝
DROP和REJECT的区别:DROP是直接不让进入,而REJECT是先让进入然后再拒绝,DROP更安全,所以一般拒绝都用DROP。
iptables默认的规则是允许,即
3.iptables的配置:
iptables的两种配置思路:
1)默认允许,拒绝特别;
2)默认拒绝,允许特别;
二者都有自己的特点,看情况而定。但是注意:如果要选择第二种配置思路,配置前切记先把ssh设置为ACCEPT,因为一般机器不在我们身边,一旦配置默认拒绝,那我们的远程登录就会断开连接,那问题就大了。
配置默认拒绝前设置:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
还有一种方法:做一个计划任务,让iptables定期停止,即执行service iptables stop,这样的话即使配置默认拒绝前没有允许ssh也没关系,等到计划任务生效的时间iptables就会自动清除所有的配置,包括默认规则。
iptables的基本语法:
不加-t时默认是filter
语法参数:
-I:第一行插入
-A:最后追加
-i/o:指的是数据要进入或出去所要经过的端口,如eth1,eth0,pppoe等
-p:你所要指定的协议
-s:指定来源ip,可以是单个ip如192.168.109.131,也可以是一个网络 192.168.109.0/24,还可以是一个域名如163.com,如果你填写的是域名系统会自动解析出他的ip并在iptables里显示
--sport:来源端口
-d:指定目标ip
--dport:目标端口
-j:执行参数ACCEPT或DROP,REJECT一般不用
如果配置的是INPUT(进入),则来源ip是运程ip,目标端口就是本机;OUTPUT相反,相信可以理解。
4.iptables的执行优先级:
iptables的执行顺序是自上而下,当有配置产生冲突时,前面执行的生效。
5.删除iptables
有时我们需要删除其中一条或几条iptables,那就不能iptables -F 了,删除某一条iptables常用的有两种方法:
1.修改配置文件
删除相应的行,然后service iptables restart,再service iptables save.
注意:
修改完配置文件不能先save,一定要先restart才能save,要不然就白做了。因为save会在iptables服务启动时重新加载,要是在重启之前直接先调用了service iptables save 那么你 的/etc/sysconfig/iptables 配置就回滚到上次启动服务的配置了。
2.命令删除
1)如果你记得配置时的写法,那么可以直接iptables -D 后跟上配置时的写法。如:
iptables -D INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP
2)一般的方法: