- 工信部备案号 滇ICP备05000110号-1
- 滇公网安备53011102001527号
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
- CN域名投诉举报处理平台:电话:010-58813000、邮箱:service@cnnic.cn
在云计算和服务器运维中,防火墙是保护系统安全的第一道防线。Linux系统提供了多种防火墙管理工具,其中firewalld是Red Hat系发行版(如CentOS、RHEL、Fedora)默认的防火墙管理工具,相比传统的iptables提供了更友好、动态的配置方式。本文将详细介绍firewalld的基本概念、常用操作和实际配置示例。
firewalld采用zone(区域)和service(服务)的概念来管理防火墙规则:
· Zone:定义信任级别,如public(公共区域)、trusted(信任区域)等
· Service:预定义的应用程序规则集,如http、https、ssh等
· 运行时配置:临时生效,重启后丢失
· 永久配置:写入配置文件,永久生效
# 查看firewalld运行状态
sudo systemctl status firewalld
# 启动firewalld
sudo systemctl start firewalld
# 停止firewalld
sudo systemctl stop firewalld
# 设置开机自启
sudo systemctl enable firewalld
# 禁止开机自启
sudo systemctl disable firewalld
# 查看默认区域
sudo firewall-cmd --get-default-zone
# 查看所有可用区域
sudo firewall-cmd --get-zones
# 查看当前区域配置
sudo firewall-cmd --list-all
# 查看所有区域配置
sudo firewall-cmd --list-all-zones
# 添加服务到当前区域(运行时)
sudo firewall-cmd --add-service=http
# 永久添加服务
sudo firewall-cmd --add-service=http --permanent
# 从当前区域移除服务
sudo firewall-cmd --remove-service=http
# 永久移除服务
sudo firewall-cmd --remove-service=http --permanent
# 重载配置(应用永久规则)
sudo firewall-cmd --reload
# 开放TCP端口(运行时)
sudo firewall-cmd --add-port=8080/tcp
# 永久开放端口
sudo firewall-cmd --add-port=8080/tcp --permanent
# 开放UDP端口
sudo firewall-cmd --add-port=53/udp
# 关闭端口
sudo firewall-cmd --remove-port=8080/tcp
sudo firewall-cmd --remove-port=8080/tcp --permanent
# 查看当前默认区域
sudo firewall-cmd --get-default-zone
# 设置默认区域为public
sudo firewall-cmd --set-default-zone=public
# 查看指定网卡的区域
sudo firewall-cmd --get-zone-of-interface=eth0
# 将网卡分配到指定区域
sudo firewall-cmd --zone=public --add-interface=eth0
sudo firewall-cmd --zone=public --change-interface=eth0
假设需要配置一台运行Nginx的Web服务器,开放HTTP(80)和HTTPS(443)端口:
# 1. 查看当前状态
sudo firewall-cmd --state
# 2. 添加http和https服务
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
# 3. 如果使用非标准端口,如8080
sudo firewall-cmd --add-port=8080/tcp --permanent
# 4. 限制SSH访问只允许特定IP
# 先移除所有SSH访问
sudo firewall-cmd --remove-service=ssh --permanent
# 添加只允许192.168.1.0/24网段SSH访问
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept' --permanent
# 5. 应用配置
sudo firewall-cmd --reload
# 6. 验证配置
sudo firewall-cmd --list-all
对于MySQL数据库服务器,通常只需要开放数据库端口给应用服务器:
# 1. 移除不需要的服务
sudo firewall-cmd --remove-service=ssh --permanent
sudo firewall-cmd --remove-service=http --permanent
# 2. 开放MySQL端口(默认3306)
sudo firewall-cmd --add-port=3306/tcp --permanent
# 3. 限制只允许特定IP访问数据库
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="3306" protocol="tcp" accept' --permanent
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.101" port port="3306" protocol="tcp" accept' --permanent
# 4. 应用配置
sudo firewall-cmd --reload
富规则提供更细粒度的控制:
# 允许特定IP访问特定端口
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.50" port port="22" protocol="tcp" accept' --permanent
# 拒绝特定IP访问
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" drop' --permanent
# 设置端口转发
sudo firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
# 创建新区域
sudo firewall-cmd --new-zone=webserver --permanent
# 为新区域添加服务
sudo firewall-cmd --zone=webserver --add-service=http --permanent
sudo firewall-cmd --zone=webserver --add-service=https --permanent
sudo firewall-cmd --zone=webserver --add-service=ssh --permanent
# 添加网卡到新区域
sudo firewall-cmd --zone=webserver --add-interface=eth1 --permanent
# 应用配置
sudo firewall-cmd --reload
售前咨询
售后咨询
备案咨询
二维码

TOP