CentOS防火墙设置技巧
导读:CentOS防火墙设置技巧(基于firewalld) 1. 安装与启动firewalld CentOS 7及以上版本默认使用firewalld作为防火墙管理工具。若未安装,可通过以下命令安装: sudo yum install firewa...
CentOS防火墙设置技巧(基于firewalld)
1. 安装与启动firewalld
CentOS 7及以上版本默认使用firewalld
作为防火墙管理工具。若未安装,可通过以下命令安装:
sudo yum install firewalld -y
安装完成后,启动服务并设置开机自启:
sudo systemctl start firewalld
sudo systemctl enable firewalld
验证状态:
sudo firewall-cmd --state # 显示"running"表示运行中
2. 查看防火墙状态与规则
- 查看运行状态:
sudo systemctl status firewalld
- 查看当前所有规则(包括区域、端口、服务):
sudo firewall-cmd --list-all
- 查看开放的端口:
sudo firewall-cmd --list-ports
- 查看默认区域:
sudo firewall-cmd --get-default-zone
3. 管理端口规则(开放/关闭)
开放端口(永久生效)
使用--permanent
参数确保重启后规则仍有效,格式为:
sudo firewall-cmd --permanent --zone=<
区域>
--add-port=<
端口号>
/<
协议>
示例(开放HTTP端口80/tcp):
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
应用更改:
sudo firewall-cmd --reload
关闭端口(永久生效)
sudo firewall-cmd --permanent --zone=<
区域>
--remove-port=<
端口号>
/<
协议>
示例(关闭HTTP端口80/tcp):
sudo firewall-cmd --permanent --zone=public --remove-port=80/tcp
应用更改:
sudo firewall-cmd --reload
临时开放/关闭端口(当前会话有效)
若无需永久生效,可省略--permanent
参数:
# 临时开放
sudo firewall-cmd --zone=public --add-port=80/tcp
# 临时关闭
sudo firewall-cmd --zone=public --remove-port=80/tcp
无需重载,立即生效。
4. 配置区域策略
firewalld通过**区域(Zone)**划分网络信任级别,默认区域为public
(公共网络,严格限制)。可根据需求修改:
- 查看所有可用区域:
sudo firewall-cmd --get-zones
- 修改默认区域:
示例(将默认区域设为sudo firewall-cmd --set-default-zone=< 区域>
home
,适用于家庭网络):sudo firewall-cmd --set-default-zone=home
- 将接口绑定到特定区域(如将
eth0
设为public
):sudo firewall-cmd --zone=public --add-interface=eth0
5. 使用rich规则实现精细控制
rich规则支持基于IP地址、协议、端口、动作的复杂过滤,例如:
- 允许特定IP访问SSH(22/tcp):
sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='22' accept"
- 拒绝特定IP段访问所有端口:
sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
- 限制某端口仅允许TCP访问:
sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' port protocol='tcp' port='80' accept"
应用更改后,需重载配置:
sudo firewall-cmd --reload
6. 管理服务而非单独端口
firewalld内置了常见服务(如HTTP、HTTPS、SSH)的规则,直接开放服务更便捷:
- 开放服务:
示例(开放SSH服务):sudo firewall-cmd --permanent --zone=public --add-service=< 服务名>
sudo firewall-cmd --permanent --zone=public --add-service=ssh
- 关闭服务:
sudo firewall-cmd --permanent --zone=public --remove-service=< 服务名>
- 查看可用服务:
sudo firewall-cmd --get-services
应用更改:
sudo firewall-cmd --reload
这种方式可自动处理服务的端口和协议,避免手动输入端口号。
7. 日志记录与监控
启用防火墙日志,便于排查问题和监控异常:
sudo firewall-cmd --permanent --zone=<
区域>
--add-log-prefix="Firewall: "
示例(为public
区域启用日志):
sudo firewall-cmd --permanent --zone=public --add-log-prefix="Firewall: "
应用更改:
sudo firewall-cmd --reload
日志默认存储在/var/log/messages
,可通过以下命令实时查看:
sudo tail -f /var/log/messages | grep Firewalld
8. 结合SELinux强化安全
SELinux(Security-Enhanced Linux)与firewalld配合,提供更细粒度的访问控制:
- 启用SELinux:
永久生效需编辑sudo setenforce 1 # 临时启用
/etc/selinux/config
,将SELINUX=enforcing
。 - 配置SELinux端口标签(若需开放非标准端口):
示例(将8080/tcp添加到http_port_t
标签,允许HTTP服务使用):
安装sudo semanage port -a -t http_port_t -p tcp 8080
policycoreutils-python-utils
包以使用semanage
命令:sudo yum install policycoreutils-python-utils -y
9. 最佳实践
- 最小化开放端口:仅开放业务必需的端口(如HTTP 80、HTTPS 443、SSH 22),关闭不必要的端口(如FTP 21、Telnet 23)。
- 定期审查规则:每月检查一次防火墙规则,移除不再使用的端口或服务。
- 备份配置:定期备份firewalld配置,防止误操作导致服务中断:
sudo cp -r /etc/firewalld /etc/firewalld.bak
- 禁用不必要的服务:通过
systemctl disable < 服务名>
关闭不需要的服务(如FTP、Telnet),减少攻击面。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS防火墙设置技巧
本文地址: https://pptw.com/jishu/730100.html