跳到主要内容

防火墙管理

防火墙是网络安全中一个重要的组件,通过防火墙可以保护网络中的主机和应用免受网络攻击。防火墙可以过滤网络中的非法流量,防止非法用户访问网络中的资源。

Firewall

firewall-cmd 是 Linux 中用来管理 firewalld 服务的命令行工具。firewalld 是一种动态的防火墙管理器,它支持网络/防火墙区域,以及临时和永久的规则。firewall-cmd 可以用来查询、添加、修改或删除 firewalld 的配置,以及重新加载或重启 firewalld 服务。firewall-cmd 命令的全称是 firewall command,它是 firewalld 的主要接口。

安装

> yum install -y firewalld
# GUI 图像用户界面
#> yum install -y firewall-config

查看状态

> systemctl start firewalld # 启动
> systemctl status firewalld # 查看firewalld当前状态
> systemctl enable firewalld # 开机启动
> systemctl stop firewalld # 关闭
> systemctl disable firewalld # 取消开机启动

查看开放端口命令

> firewall-cmd --list-ports
## 查看防火墙端口
> firewall-cmd --list-all

添加开放端口

# 对外网全部开放
> firewall-cmd --zone=public --add-port=5000/tcp --permanent
# 添加端口开放
> firewall-cmd --zone=public --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/24 port port=22 protocol=tcp accept'
# 删除端口开放
> firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=5000 protocol=tcp accept'

端口映射

# 添加
> firewall-cmd --permanent --add-forward-port=port=6106:proto=tcp:toport=5006
# 删除
> firewall-cmd --permanent --remove-forward-port=port=6203:proto=tcp:toport=5001
# 启用新配置
> firewall-cmd --reload
Tips

可以通过修改 /etc/firewalld/zones/public.xml 文件来添加防火墙规则,然后使用 firewall-cmd --reload 命令重新加载配置。

<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<port protocol="tcp" port="6400-6499"/>
<forward-port to-port="22" protocol="tcp" port="6400"/>
<forward-port to-port="8080" protocol="tcp" port="6401"/>
</zone>

iptables

iptables 是 Linux 系统中用于配置防火墙的命令行工具。它允许用户定义规则来控制网络流量,包括允许或拒绝特定的 IP 地址、端口和服务。iptables 可以用于保护 Linux 主机免受网络攻击,以及控制网络流量的方向和速率。

# 查看防火墙规则
> iptables -L -n -v
# 添加防火墙规则
> iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 删除防火墙规则
> iptables -D INPUT -p tcp --dport 22 -j ACCEPT
# 保存防火墙规则
> service iptables save

Semanage

semanage(Security Enhanced Linux Manage)是一个用于配置 SELinux 策略的工具。它可以帮助你调整端口上下文、布尔值、文件上下文等。它常用于修改服务绑定的非默认端口、映射 Linux 用户到 SELinux 用户身份、设置网络端口、接口、主机和文件的安全上下文映射。

# 添加通行规则(参数 -a)
> semanage port -a -t http_port_t -p tcp 8888
# 删除通行规则(参数 -d)
> semanage port -d -t http_port_t -p tcp 9090

参考