linux防火墙iptables与firewalld

iptables 与 firewalld 都不是真正的防火墙, 它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。iptables 服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理,而 firewalld 服务 则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理。
一般而言,防火墙策略规则的设置有两种:一种是放行, 一种是阻止。当防火墙的默认策略为拒绝时,就要设置允许规则,否则谁都进不来;如果防火墙的默认策略为允许时,就要设置拒绝规则,否则谁都能进来,防 火墙也就失去了防范的作用。
iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则 链,而规则链则依据数据包处理位置的不同进行分类,具体如下:
- 在进行路由选择前处理数据包 (PREROUTING)
- 处理流入的数据包 (INPUT)
- 处理流出的数据包(OUTPUT)
- 处理转发的数据包(FORWARD)
- 在进行路由选择后处理数据包(POSTROUTING )
从内网向外网发送的流量一般都是可控且良性的,因此我们使用最多的就是 INPUT 规则链,该规则链可以增大黑客人员从外网入侵内网的难度.
iptables 命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配, 一旦匹配成功,iptables 就会根据策略规则所预设的动作来处理这些流量。 防火墙策略规则的匹配顺序是从上至下的,因此要把较为严格、优先级较高的策略规则 放到前面,以免发生错误.
通过iptables -L 查看已有的防火墙规则链,如图:

通过iptables -F清空已有规则链,然后再次使用iptables -L 查看,如图:

只允许指定网段的主机访问本机的 22 端口 ,其余全部拒绝。
iptables -I INPUT -s 10.88.5.0/24 -p tcp –dport 22 -j ACCEPT

防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到 拒绝动作前面,否则所有的流量就将被拒绝掉。
向 INPUT 规则链中添加拒绝所有人访问本机 8888 端口的策略规则:
- iptables -I INPUT -p tcp –dport 8888 -j REJECT //TCP
- iptables -I INPUT -p udp –dport 8888 -j REJECT //UDP

添加拒绝 192.168.10.5 主机访问本机 80 端口的策略 规则:
iptables -I INPUT -p tcp -s 192.168.10.5 –dport 80 -j REJECT
向 INPUT 规则链中添加拒绝所有主机访问本机 1000~1024 端口的策略规则:
- iptables -A INPUT -p tcp –dport 1000:1024 -j REJECT
- iptables -A INPUT -p udp –dport 1000:1024 -j REJECT
注意:使用 iptables 命令配置的防火墙规则默认会在系统下一次重启时失效,如果 想让配置的防火墙策略永久生效,还要执行保存命令: service iptables save
iptables常用参数说明:
- -P : 设置默认策略
- -F : 清空规则链
- -L : 查看规则链
- -A : 在规则链的末尾加入新规则
- -I num :在规则链的头部加入新规则(num指的是INPUT或者OUTPUT等)
- -D num : 删除某一条规则
- -s : 匹配来源地址 IP/MASK,加叹号“!”表示除这个 IP 外
- -d : 匹配目标地址
- -i 网卡名称 : 匹配从这块网卡流入的数据
- -o 网卡名称 : 匹配从这块网卡流出的数据
- -p : 匹配协议,如 TCP、UDP、ICMP
- –dport num : 匹配目标端口号
- –sport num : 匹配来源端口号


