iptables是基于netfilter框架实现的防火墙工具,基本功能是实现对数据包的过滤,依据规则链对数据包处理的位置不同进行如下分类:
处理流入的数据包:INPUT
处理流出的数据包:OUTPUT
处理转的发数据包:FORWAARD
在进行路由选择前处理数据包:PREROUTING
在进行路由选择后处理数据包:POSTROUTING
对数据包的处理动作:一般为ACCEPT LOG DROP REJECT
常用的是INPUT规则链:
iptables -L -nv #查看已有的规则链
iptables -D INPUT 3 #删除INPUT链中的第3条
service iptables save #保存已添加的规则链,让重启后也可以生效,不然使用iptables添加的规则链会在重启后失效.
iptables -P INPUT ACCEPT #设置默认策略INPUT规则链为ACCEPT,当然也可以是DROP,要设置为DROP时需要小心,若其它规则不对,很可能直接和服务器断开.
iptables -I INPUT -p icmp -j ACCEPT #向INPUT链中添加允许ICMP协议流量进入的策略
#如下,向INPUT链中添加只允许指定网段的主机访问本机的139,445端口,丢弃来自其它所有主机的流量.
iptables -I INPUT -s 192.168.1.0/24 -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 139,445 -j DROP
#如下,向INPUT链中添加只允许指定网段的主机访问本机的22端口,丢弃来自其它所有主机的流量.
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
#如下,只要发送端或接收端只要有一方已经成功建立了连接,那么我们就认为这个状态是 ESTABLISHED,特殊情况下使用.向INPUT链中添加是udp协议和ESTABLISHED状态的的流量允许通过.
iptables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT