其实,iptables 与 firewalld 都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。iptables服务会把配置好的防火墙策略交由内核层面的 netfilter 网络过滤器来处理,而 firewalld 服务则是把配置好的防火墙策略交由内核层面的 nftables 包过滤框架来处理。

from 《Linux就该这么学》

目前 iptables 已经在新版的Linux操作系统中逐渐被 firewalld 取代

iptables 命令

由于Linux版本的不同,使用该服务,可能需要提前使用 yum | apt 安装该服务

添加规则

将 INPUT 规则链设置为只允许指定网段的主机访问本机的 22 端口,拒绝来自其他所有主机的流量:

1
2
3
4
5
6
7
8
[root@linuxprobe ~]# iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT 
[root@linuxprobe ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT
[root@linuxprobe ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.10.0/24 anywhere tcp dpt:ssh
REJECT tcp -- anywhere anywhere tcp dpt:ssh reject-with icmp-port-unreachable
………………省略部分输出信息………………

-I表示 insert 一条规则(默认从head插入,也可指定在第几条规则前插入)

-D为删除一条规则(添加规则序号)

-A为附加规则

防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到拒绝动作前面,否则所有的流量就将被拒绝掉,从而导致任何主机都无法访问我们的服务。

Iptables 的临时性

使用 iptables 命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令:

1
2
[root@linuxprobe ~]# service iptables save 
iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ]

Q&A

  • iptables 和 firewalld 配置是否会冲突?
    • 不会冲突。从本质上讲二者只是配置防火墙的服务,并不是真的防火墙。