Linux虚拟机如何配置防火墙规则
导读:Linux 虚拟机防火墙配置实操指南 一、选择工具与准备 常见防火墙栈:iptables(底层规则引擎)、firewalld(CentOS/RHEL 7+/Fedora 动态管理)、ufw(Ubuntu 简易前端)。 操作前务必: 保留...
Linux 虚拟机防火墙配置实操指南
一、选择工具与准备
- 常见防火墙栈:iptables(底层规则引擎)、firewalld(CentOS/RHEL 7+/Fedora 动态管理)、ufw(Ubuntu 简易前端)。
- 操作前务必:
- 保留一条当前会话(如 SSH 连接),避免误封导致失联。
- 备份现有规则(iptables 示例:
iptables-save > /root/iptables-$(date +%F).bak)。 - 明确虚拟机网络模式(桥接/NAT)与访问来源网段,避免放通过宽。
二、按发行版常用做法
- firewalld(CentOS 7+/RHEL/Fedora)
- 启动与开机自启:
sudo systemctl start firewalld & & sudo systemctl enable firewalld - 开放端口(永久生效):
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent - 开放服务(预定义):
sudo firewall-cmd --zone=public --add-service=http --permanent - 使配置生效:
sudo firewall-cmd --reload - 查看:
sudo firewall-cmd --list-all - 启用 NAT/端口转发(虚拟机网关/路由场景):
sudo firewall-cmd --zone=public --add-masquerade --permanent & & sudo firewall-cmd --reload
- 启动与开机自启:
- ufw(Ubuntu/Debian 家族)
- 启用:
sudo ufw enable - 允许端口:
sudo ufw allow 22/tcp,80/tcp,443/tcp - 允许网段访问 SSH:
sudo ufw allow from 192.168.1.0/24 to any port 22 - 查看状态:
sudo ufw status verbose
- 启用:
- iptables(通用底层)
- 允许回环与已建立连接:
sudo iptables -A INPUT -i lo -j ACCEPT;sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - 允许 SSH:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT - 允许 HTTP/HTTPS:
sudo iptables -A INPUT -p tcp --dport 80,443 -j ACCEPT - 默认拒绝入站:
sudo iptables -P INPUT DROP - 保存规则:
- Debian/Ubuntu:
sudo apt-get install iptables-persistent & & sudo netfilter-persistent save - CentOS/RHEL:
sudo service iptables save或sudo iptables-save > /etc/sysconfig/iptables
- Debian/Ubuntu:
- 恢复规则:
sudo iptables-restore < /etc/iptables/rules.v4
- 允许回环与已建立连接:
三、常见场景与命令示例
- 场景A:仅放通 SSH(安全加固)
- firewalld:
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent & & sudo firewall-cmd --reload - ufw:
sudo ufw allow 22/tcp - iptables:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT & & sudo iptables -P INPUT DROP(务必保留会话,先放行再改默认策略)
- firewalld:
- 场景B:Web 服务器(HTTP/HTTPS)
- firewalld:
sudo firewall-cmd --zone=public --add-service=http --permanent & & sudo firewall-cmd --zone=public --add-service=https --permanent & & sudo firewall-cmd --reload - ufw:
sudo ufw allow 80,443/tcp - iptables:
sudo iptables -A INPUT -p tcp --dport 80,443 -j ACCEPT
- firewalld:
- 场景C:限制 SSH 来源网段(白名单)
- iptables:
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT;sudo iptables -A INPUT -p tcp --dport 22 -j DROP
- iptables:
- 场景D:虚拟机作为网关/NAT 上网与端口转发
- 启用 NAT:
sudo firewall-cmd --zone=public --add-masquerade --permanent & & sudo firewall-cmd --reload - 端口转发(示例:宿主机访问 8080 转发到虚拟机 80):
sudo firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80 --permanent & & sudo firewall-cmd --reload
- 启用 NAT:
四、验证与故障排查
- 端口连通性测试:
- TCP 探测:
nc -vz < IP或域名> 80或telnet < IP> 443 - 本机监听:
ss -tulpen | grep -E '(:80|:443|:22)'
- TCP 探测:
- 防火墙状态与规则核对:
- firewalld:
sudo firewall-cmd --state、sudo firewall-cmd --list-all - ufw:
sudo ufw status verbose - iptables:
sudo iptables -L -n -v
- firewalld:
- 云平台安全组/宿主机防火墙:确保云平台控制台与宿主机(如 VMware Workstation 宿主防火墙)也放通对应端口(如 22/80/443),否则虚拟机内放行仍无法访问。
五、安全与维护建议
- 原则:仅开放必要端口、默认拒绝、最小权限;对关键变更先在测试环境验证。
- 加固:限制 SSH 来源网段、限制速率(如
iptables -I INPUT -p tcp --dport 22 -m limit --limit 10/min -j ACCEPT)、开启日志与定期审计。 - 持久化:规则变更后及时保存(firewalld 用
--permanent并reload;iptables 使用发行版提供的持久化机制)。 - 备份与回滚:变更前备份规则,保留可快速恢复的脚本/快照。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux虚拟机如何配置防火墙规则
本文地址: https://pptw.com/jishu/765555.html
