在 CentOS 中,防火墙是通过 firewalld
服务管理的。
firewalld
提供了灵活的管理规则的方式,并支持动态修改防火墙配置。
下面是一些常用的 firewalld
操作和用法:
1. 检查防火墙状态
查看防火墙是否正在运行:
sudo systemctl status firewalld
检查当前防火墙的状态和配置:
sudo firewall-cmd --state sudo firewall-cmd --list-all
2. 启动和停止防火墙
启动防火墙:
sudo systemctl start firewalld
停止防火墙:
sudo systemctl stop firewalld
重启防火墙:
sudo systemctl restart firewalld
使防火墙在系统启动时自动启动:
sudo systemctl enable firewalld
禁止防火墙在系统启动时自动启动:
sudo systemctl disable firewalld
3. 配置区域
防火墙使用区域(zones)来组织规则。每个区域定义了一组规则,可以分配给不同的网络接口。
列出所有可用区域:
sudo firewall-cmd --list-all-zones
查看当前网络接口所在的区域:
sudo firewall-cmd --get-active-zones
将接口分配到特定区域,例如,将 eth0
接口分配到 public
区域:
sudo firewall-cmd --zone=public --change-interface=eth0
4. 添加和删除服务
防火墙规则通常是基于服务的。可以使用以下命令添加或删除服务规则:
允许特定服务通过防火墙(例如,HTTP 服务):
sudo firewall-cmd --zone=public --add-service=http --permanent
删除服务(例如,HTTP 服务):
sudo firewall-cmd --zone=public --remove-service=http --permanent
切记更新后要重新加载防火墙配置,否则不生效
重新加载防火墙配置(在使用 --permanent
选项后):
sudo firewall-cmd --reload
5. 添加和删除端口
允许特定端口通过防火墙(例如,端口 8080):
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
删除端口规则(例如,端口 8080):
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
切记更新后要重新加载防火墙配置,否则不生效
重新加载防火墙配置(在使用 --permanent
选项后):
sudo firewall-cmd --reload
6. 设置默认区域
设置默认区域(例如,将 public
设为默认区域):
sudo firewall-cmd --set-default-zone=public
7. 配置服务和端口的临时规则
如果只需要临时添加规则而不修改永久配置,可以省略 --permanent
选项:
临时允许 HTTP 服务:
sudo firewall-cmd --zone=public --add-service=http
临时允许端口 8080:
sudo firewall-cmd --zone=public --add-port=8080/tcp
8. 查看和修改现有规则
查看已添加的服务:
sudo firewall-cmd --zone=public --list-services
查看已添加的端口:
sudo firewall-cmd --zone=public --list-ports
查看所有规则:
sudo firewall-cmd --list-all
9. 添加自定义规则
你可以添加自定义的规则,使用 rich rules
:
添加允许特定 IP 地址访问特定端口(例如,允许 IP 192.168.1.100
访问端口 3306):
sudo firewall-cmd --zone=public --add-rich-rule='rule family=\"ipv4\" source address=\"192.168.1.100\" port port=\"3306\" protocol=\"tcp\" accept' --permanent
删除自定义规则:
sudo firewall-cmd --zone=public --remove-rich-rule='rule family=\"ipv4\" source address=\"192.168.1.100\" port port=\"3306\" protocol=\"tcp\" accept' --permanent
10. 查看和管理日志
启用和查看防火墙日志:
sudo firewall-cmd --set-log-denied=all
查看防火墙日志:
防火墙日志通常会被记录在 /var/log/messages
或其他系统日志文件中。可以使用 grep
或 less
命令查看日志:
sudo grep 'firewalld' /var/log/messages
使用这些基本命令和配置选项,你可以有效地管理和配置 CentOS 上的防火墙。