防火墙系列之firewall

firewalld 介绍

防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别 
drop: 丢弃所有进入的包,而不给出任何响应 
block: 拒绝所有外部发起的连接,允许内部发起的连接 
public: 允许指定的进入连接 
external: 同上,对伪装的进入连接,一般用于路由转发 
dmz: 允许受限制的进入连接 
work: 允许受信任的计算机被限制的进入连接,类似 workgroup 
home: 同上,类似 homegroup 
internal: 同上,范围针对所有互联网用户 
trusted: 信任所有连接

firewall-cmd命令需要firewalld进程处于运行状态。我们可以使用systemctl status/start/stop/restart firewalld来控制这个守护进程。firewalld进程为防火墙提供服务。
当我们修改了某些配置之后(尤其是配置文件的修改),firewall并不会立即生效。可以通过两种方式来激活最新配置systemctl restart firewalld和firewall-cmd --reload两种方式,前一种是重启firewalld服务,建议使用后一种“重载配置文件”。重载配置文件之后不会断掉正在连接的tcp会话,而重启服务则会断开tcp会话。

1.1 服务使用

systemctl start firewalld    # 启动,
systemctl enable firewalld   # 开机启动
systemctl stop firewalld     # 关闭
systemctl disable firewalld  # 取消开机启动

1.2 查看防火墙配置

[root@linux-node1 ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces: 
sources: 
services: dhcpv6-client ssh
ports: 80/tcp 666/tcp 9092/tcp 8085/tcp 9200/tcp 10051/tcp 10050/tcp 10091/tcp 667/tcp #开放的端口
protocols: 
masquerade: yes #端口转发,必须开启这个
forward-ports: port=666:proto=tcp:toport=22:toaddr=172.16.221.0 #端口转发设置
port=667:proto=tcp:toport=59741:toaddr=172.16.220.252
source-ports: 
icmp-blocks: 
rich rules: 
rule family="ipv4" source address="172.16.221.1" port port="5601" protocol="tcp" accept
rule family="ipv4" source address="172.16.221.1" port port="8080" protocol="tcp" accept

1.3 开启端口&关闭端口

firewall-cmd --remove-port=80/tcp --permanent # 阻止通过tcp访问80
firewall-cmd --add-port=80/udp --permanent    # 开放通过udp访问80

1.4 查看开放的端口

[root@linux-node1 ~]# firewall-cmd --list-ports  # 查看开放的端口
80/tcp 666/tcp 9092/tcp 8085/tcp 9200/tcp 10051/tcp 10050/tcp 10091/tcp 667/tcp

1.5 永久修改

firewall-cmd --add-port=667/tcp --permanent ##如果需要修改后,必须添加--permanent

1.6 重载服务

所有防火墙配置完毕后,需要重载服务

firewall-cmd --reload

1.7 伪装IP

防火墙可以实现伪装IP的功能,端口转发就会用到这个功能。

firewall-cmd --query-masquerade              # 检查是否允许伪装IP
firewall-cmd --add-masquerade --permanent    # 允许防火墙伪装IP
firewall-cmd --remove-masquerade --permanent # 禁止防火墙伪装IP

1.8 端口转发

端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。

转发的目的如果不指定ip的话就默认为本机,如果指定了ip却没指定端口,则默认使用来源端口。
如果配置好端口转发之后不能用,可以检查下面两个问题:
- 比如我将80端口转发至8080端口,首先检查本地的80端口和目标的8080端口是否开放监听了
- 其次检查是否允许伪装IP,没允许的话要开启伪装IP
# 将80端口的转发至本机8080

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent

# 将80端口转发至192.168.0.1的8080端口

firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 --permanent

1.9 移除端口转发

firewall-cmd --remove-forward-port=port=59744:proto=tcp:toaddr=172.16.220.252:toport=22 --permanent
firewall-cmd --reload
原文地址:https://www.cnblogs.com/syavingcs/p/8243506.html