Linux中如何配置防火墙
导读:Linux 防火墙配置实用指南 一、选择工具与准备 常见工具与适用场景 firewalld:RHEL/CentOS/Fedora 常用,基于 Netfilter/iptables 的前端,支持区域(Zone)、服务(Service)、富...
Linux 防火墙配置实用指南
一、选择工具与准备
- 常见工具与适用场景
- firewalld:RHEL/CentOS/Fedora 常用,基于 Netfilter/iptables 的前端,支持区域(Zone)、服务(Service)、富规则(Rich Rules),可动态更新而无需重启服务,适合服务器与多场景策略管理。
- iptables:内核 netfilter 的命令行工具,灵活强大,适合需要精细控制与脚本化管理的场景。
- ufw:Ubuntu 的简化前端,适合桌面与简单服务器环境。
- 操作前准备
- 使用 sudo 提权;先规划好要开放的端口/协议、源 IP/网段、网卡所属区域;变更前先备份规则;避免在生产环境直接设置过严的默认策略导致失联。
二、使用 firewalld 快速上手
- 安装与启停
- 安装(如未预装):Debian/Ubuntu 执行
sudo apt update & & sudo apt install firewalld;RHEL/CentOS 执行sudo yum install firewalld。 - 启动与开机自启:
sudo systemctl start firewalld、sudo systemctl enable firewalld;查看状态:sudo systemctl status firewalld或sudo firewall-cmd --state。
- 安装(如未预装):Debian/Ubuntu 执行
- 常用配置
- 查看与切换区域:
sudo firewall-cmd --get-default-zone、sudo firewall-cmd --set-default-zone=public --permanent;绑定网卡到区域:sudo firewall-cmd --zone=public --change-interface=eth0 --permanent。 - 开放服务与端口(临时与永久)
- 临时:
sudo firewall-cmd --zone=public --add-service=http、sudo firewall-cmd --zone=public --add-port=8080/tcp - 永久:
sudo firewall-cmd --zone=public --add-service=http --permanent、sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent - 使永久规则生效:
sudo firewall-cmd --reload
- 临时:
- 源 IP/网段与端口的精细化控制(富规则)
- 仅允许某 IP 访问某端口:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port=8080 protocol=tcp accept' --permanent - 允许某网段访问某端口:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="3306" accept'
- 仅允许某 IP 访问某端口:
- 查看与验证:
sudo firewall-cmd --list-all、sudo firewall-cmd --list-ports、sudo firewall-cmd --list-services、sudo firewall-cmd --get-active-zones - 临时规则:
sudo firewall-cmd --add-port=22/tcp --timeout=300(5 分钟) - 日志与排错:
sudo firewall-cmd --set-log-denied=all,查看日志journalctl -u firewalld -f。
- 查看与切换区域:
三、使用 iptables 直接配置
- 基本操作
- 查看规则:
sudo iptables -L -n -v - 清空规则:
sudo iptables -F;清空自定义链:sudo iptables -X;计数器归零:sudo iptables -Z - 默认策略:
sudo iptables -P INPUT DROP、sudo iptables -P FORWARD DROP、sudo iptables -P OUTPUT ACCEPT - 允许回环:
sudo iptables -A INPUT -i lo -j ACCEPT - 允许已建立连接:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- 查看规则:
- 常见规则示例
- 开放端口:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT、sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT - 限制来源 IP:
sudo iptables -A INPUT -s 203.0.113.10 -j ACCEPT - 丢弃某端口:
sudo iptables -A INPUT -p tcp --dport 23 -j DROP
- 开放端口:
- 持久化保存
- Debian/Ubuntu:
sudo iptables-save > /etc/iptables/rules.v4,或使用netfilter-persistent保存/恢复 - RHEL/CentOS:
sudo service iptables save或sudo iptables-save > /etc/sysconfig/iptables - 恢复:
sudo iptables-restore < /etc/iptables/rules.v4
- Debian/Ubuntu:
- 提示:规则顺序很重要,通常将更具体的 ACCEPT 规则放在前面,最后再设置默认 DROP。
四、使用 ufw 简化配置(Ubuntu 常见)
- 基本命令
- 启用/禁用:
sudo ufw enable、sudo ufw disable - 允许/拒绝端口:
sudo ufw allow 22、sudo ufw deny 23 - 允许来源 IP:
sudo ufw allow from 203.0.113.0/24 - 状态与规则查看:
sudo ufw status、sudo ufw status verbose
- 启用/禁用:
- 适合快速开启 SSH/HTTP/HTTPS 等常见服务。
五、生产环境最佳实践与排错
- 安全策略
- 最小权限原则:仅开放必要端口与协议;按网络环境划分区域;定期审查开放端口与服务。
- 开启拒绝日志:
sudo firewall-cmd --set-log-denied=all,结合journalctl -u firewalld审计异常访问。
- 高可用与自动化
- 使用 Ansible 等批量下发一致的 firewalld 规则,降低人为差异与运维风险。
- 故障排查
- 规则不生效:确认是否执行了
--reload;检查规则顺序与是否匹配到更高优先级规则;核对网卡所属区域与端口/协议是否正确;用nc -zv host port或curl验证连通性。
- 规则不生效:确认是否执行了
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux中如何配置防火墙
本文地址: https://pptw.com/jishu/769731.html
