红帽在rhel7版本时引入了firewalld防火墙,用来代替iptables,到rhel8之后,已完全用弃用iptables,只保留firewalld防火墙。firewall-cmd是firewalld服务的主要命令行接口,我们可以用它来动态地添加、删除和修改防火墙规则,以保护系统的网络安全。

一、基本语法

# firewall-cmd 【选项】 命令
常见选项有:
--list-all:列出区域的所有已存在的规则
--reload:重新加载防火墙配置文件
--zone:指定要操作的区域(如 Public/DMZ/Trusted/Block等)
--add-port:添加端口,没有指定操作区域的话,默认为Public区域
--remove-port:移除端口,没有指定操作区域的话,默认为Public区域
--add-service:添加服务,没有指定操作区域的话,默认为Public区域
--remove-service:移除服务,没有指定操作区域的话,默认为Public区域
--permanent:使配置永久生效(包括重启)

### 列出所有可用的区域
# firewall-cmd --get-zones
block dmz drop external home internal nm-shared public trusted work

各区域功能说明如下:
### block:用于阻止特定流量或访问
### dmz:常用于放置对外提供服务的服务器,与内部网络隔离,比如web网站,ftp网站等
### drop:通常用于丢弃不符合安全策略的数据包
### external:表示外部网络,可能是互联网或其他外部连接
### home:适用于家庭网络环境
### internal:用于内部网络,保护敏感信息和资源
### nm-shared:可能用于共享网络资源的区域
### public:提供公共访问的区域,如网站等
### trusted:表示信任的区域,通常包含受信任的设备或用户
### work:适用于工作场所的网络区域

二、查看firewalld是否运行

# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-11-23 14:10:32 CST; 2 weeks 0 days ago
       Docs: man:firewalld(1)
   Main PID: 1303 (firewalld)
      Tasks: 3 (limit: 1235012)
     Memory: 46.8M
        CPU: 4.178s
     CGroup: /system.slice/firewalld.service
             └─1303 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

Nov 23 14:10:30 jyjf241 systemd[1]: Starting firewalld - dynamic firewall daemon...
Nov 23 14:10:32 jyjf241 systemd[1]: Started firewalld - dynamic firewall daemon.

三、启停firewalld

systemctl start firewalld
systemctl enable firewalld
systemctl stop firewalld

四、添加端口到区域

### 临时添加,不需要重载防火墙配置
firewall-cmd --add-port=80/tcp          #打开tcp 80端口
firewall-cmd --remove-port 21/tcp   #移除tcp 21端口
firewall-cmd --zone=dmz --add-port=8080/tcp #加入一个8080端口到DMZ区域

五、添加服务到区域

### 临时添加,不需要重载防火墙配置
firewall-cmd --zone=public --add-service=http   #将http服务添加到public区域,--zone=public一般情况下可以省略
firewall-cmd --zone=public --remove-service=http   #将http服务从public区域删除,--zone=public一般情况下可以省略

六、永久添加

firewall-cmd --add-port=80/tcp  --permanent #打开tcp 80端口
firewall-cmd --add-service=http --permanent #永久将http服务添加到public区域
firewall-cmd --reload                       #重新加载防火墙配置
firewall-cmd --list-all                     #列出public区域的所有规则

七、富规则

firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.1.66/32 port port="22" protocol="tcp" reject' --permanent
firewall-cmd --zone=public --add-rich-rule="rule family=ipv4 source address='10.10.10.0/24' service name='ssh' drop" --permanent
firewall-cmd --zone=public --add-rich-rule="rule family=ipv4 source address='172.25.25.25/32' port port=22 procotol=tcp accept" --permanent
firewall-cmd --reload

drop与reject的区别。drop是直接丢弃数据,不向客户端反馈数据,有点像黑洞,reject会返回一个拒绝的数据包。一般边界防火墙用dorp比较好,内部主机网络用reject比较好。
声明:欢迎大家光临本站,学习IT运维技术,转载本站内容,请注明内容出处”来源刘国华教育“。如若本站内容侵犯了原著者的合法权益,请联系我们进行处理。