Linux --- firewalld 1

一、概要

1. 环境

(1) CentOS 7

(2) Rocky Linux 9.3

2. 承上启下

Linux --- firewalld 系列

二、firewalld服务

1. 查看状态

systemctl status firewalld

2. 开启

sudo systemctl start firewalld

3. 设置开机启动

sudo systemctl enable firewalld

4. 同时开启并设置开机启动

sudo systemctl enable --now firewalld

5. 重启

sudo systemctl restart firewalld

6. 关闭

sudo systemctl stop firewalld

7. 禁用

sudo systemctl disable firewalld

8. 同时关闭并禁用

sudo systemctl disable --now firewalld

三、firewall-cmd

1. 查看

(1) 状态

firewall-cmd --state

(2) 版本

firewall-cmd --version

(3) 默认Zone的信息

sudo firewall-cmd --list-all

2. 重新加载规则

修改firewalld的配置后,务必执行该命令,新配置才会生效:

sudo firewall-cmd --reload

3. 端口操作

(1) 查询8080端口规则

firewall-cmd --query-port=8080/tcp

(2) 临时(重启无效)开放8080端口

sudo firewall-cmd --add-port=8080/tcp

(3) 永久开放8080端口

sudo firewall-cmd --permanent --add-port=8080/tcp

(4) 移除(永久)8080端口规则

sudo firewall-cmd --permanent --remove-port=8080/tcp

4. 服务操作

(1) 查看所有服务

sudo firewall-cmd --get-services

(2) 添加服务,会自动放开该服务的接口

sudo firewall-cmd --permanent --zone={Zone Name} --add-service={Service Name}

例子:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service={http,https}
sudo firewall-cmd --permanent --zone=trusted --add-service=ssh

(3) 移除服务

sudo firewall-cmd --zone=public --remove-service=http --permanent

四、Zone

1. 查看

(1) 列出所有Zone的详细信息

sudo firewall-cmd --list-all-zones

(2) 列出所有Zone的名称

sudo firewall-cmd --get-zones

(3) 查看某个Zone的信息

sudo firewall-cmd --zone={Zone Name} --list-all

(4) 查看当前活跃的Zone

sudo firewall-cmd --get-active-zones

2. 默认Zone

(1) 查看默认zone

sudo firewall-cmd --get-default-zone

(2) 设置默认zone

sudo firewall-cmd --set-default-zone={Zone Name}

3. 编辑

(1) 创建Zone

sudo firewall-cmd --permanent --new-zone={Zone Name}

(2) 删除Zone

sudo firewall-cmd --permanent --delete-zone={Zone Name}

(3) 将网卡添加到某个Zone

sudo firewall-cmd --permanent --zone={Zone Name} --change-interface={Interface name}

例:将虚拟网卡tun0添加到trusted Zone

sudo firewall-cmd --permanent --zone=trusted --change-interface=tun0

4. Target

(1) 概念

对于每个Zone,Linux都有一个target属性,它决定如何处理入站流量,RHEL目前有以下Target:

default: 默认的target,此时将由firewalld的配置其他规则来处理入站流量;

ACCEPT: 接受所有的流量,除非定义了特定规则,属于黑名单模式;

REJECT: 拒绝所有流量,除非定义了特定规则,属于白名单模式。此种模式会回复请求方并告知数据包被拒绝;

DROP: 丢弃所有流量,除非定义了特定规则,属于白名单模式。此种模式不会回复请求方,直接丢弃。

(2) 配置

sudo firewall-cmd --permanent --zone=<zone-name> --set-target=<default|ACCEPT|REJECT|DROP>

(3) 测试

a. 备份nft表

sudo nft list ruleset > before.nft

b. “public”Zone的默认target是default,将其target改为ACCEPT:

sudo firewall-cmd --permanent --zone=public --set-target=ACCEPT
sudo firewall-cmd --reload

c. 再次备份nft表

sudo nft list ruleset > after.nft

d. 此时对比两个nft文件,发现:

在public zone的所有chain中,移除了rule,并新增了accept

reject with icmpx admin-prohibited

五、端口转发

1. NAT (Network Address Translation)

NAT包括SNAT和DNAT:

(1) SNAT (source networkaddress translation)

又称为源地址转换,比如内网中有多台机器,各自有内网的IP(多数是192.168.x.x),访问web服务器的时候,路由器可以将报头中的内网IP替换成路由器的公网IP。

(2) DNAT(destination networkaddress translation)

又称为目的地址转换,比如集群内有多台服务器(网段为192.168.0.1 ~ 192.168.0.200),我们需要访问www.test.com, 它位于Server A(192.168.0.66),而www.test.com的公网IP为(8.8.8.8),这其实是www.test.com的网关地址。当对www.test.com的请求到达网关后,网关会将请求头中目的地IP变为Server A的内网地址192.168.0.66,然后再转发。

2. IP伪装

(1) 查看防火墙是否允许伪装IP

sudo firewall-cmd --query-masquerade

(2) 允许防火墙伪装IP

sudo firewall-cmd --permanent --add-masquerade
sudo firewall-cmd --permanent --zone=public --add-masquerade

(3) 禁止防火墙伪装IP

sudo firewall-cmd --permanent --remove-masquerade
sudo firewall-cmd --permanent --zone=public --remove-masquerade

六、direct

1. direct规则文件

通过firewall-cmd命令创建的防火墙direct规则都存储在:

/etc/firewalld/direct.xml

添加防火墙规则时,firewall-cmd不会对规则参数进行校验,而是会直接存到规则文件中,当运行firewall-cmd reload命令时会进行检验,如果配置有误就会报错,例如:

此时,你可以编辑规则文件,然后再执行reload命令。

七、参考

1. 官方

https://firewalld.org/documentation/

https://docs.rockylinux.org/guides/security/firewalld-beginners/

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-using_firewalls

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html-single/configuring_firewalls_and_packet_filters/index

2. Zone

https://www.answertopia.com/rocky-linux/rocky-linux-firewall-configuration-with-firewalld/

3. 其他

https://www.linode.com/docs/guides/introduction-to-firewalld-on-centos/

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-rocky-linux-9

posted @ 2021-02-01 10:37  白马黑衣  阅读(426)  评论(0编辑  收藏  举报