笔者第一次接触到netfilter/iptables,在centos7中已经被阉割了,在debian中也需要手动开启,但是怀着学习的精神把netfilter/iptables过一遍,在以后的实践中也是一种简单易得的防火墙解决方法。
netfilter/iptables是应用于主机的基于包过滤的免费软件防火墙。netfilter是防火墙安全框架,位于内核空间。iptables是命令行工具,位于用户空间,用来操作netfilter框架。
netfilter/iptables分为:表(tables)、链(chains)、规则(Policy)。
表与链的对应关系如下,规则为要添加的drop或者accept等动作。
表:filter表用于对数据包进行过滤,用于防火墙规则;nat表用于修改数据包的IP地址、端口号等信息,用于网关路由器;mangle表用于修改数据包的TOS,用于实现服务质量;raw表用于决定数据包是否被状态跟踪机制处理。
链:INPUT链,处理输入数据包;OUTPUT链,处理输出数据包;FORWARD链:处理转发数据包;PREROUTING链:用于目标地址转换(DNAT),POSTOUTING链:用于源地址转换(SNAT)。
规则:accept,接收数据包;DROP,丢弃数据包;REDIRECT,重定向、映射、透明代理;SNAT,源地址转换;DNAT,目标地址转换;MASQUERADE,IP伪装(NAT),用于ADSL;LOG,日志记录。

iptables 是采取数据包过滤机制工作的,对请求的数据包的包头数据进行分析,并根据预先设定的规则匹配来决定是否可以进入、流出、流经主机。
iptables --h可以查看 iptables具体用法。规则的执行顺序认为从前到后依次执行,遇到匹配的规则就不在继续向下检查。
netfilter/iptables路由次序图:

查看iptables 的所有链和规则:iptables -L -n
iptables命令选项顺序:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
需要注意的是 iptables默认标记的是filter表。
下面的命令的方式只在当时生效,如果想要重起后也起作用,那就要保存写到/etc/sysconfig/iptables文件里面。
1、禁止ssh的22端口
iptables -A INPUT -p tcp --dport 22 -j DROP
2、eth0网卡禁止网段10.0.0.0/24
iptables -t filter -A INPUT –i eth0 -s 10.0.0.0/24 -j DROP
3、屏蔽单个IP,-I是添加规则到第一行,-A是添加到后面。
iptables -I INPUT -s 192.168.56.28 -j DROP
4、允许icmp包,即允许ping
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
网友评论