Linux虚拟机防火墙规则怎么配置
导读:Linux 虚拟机防火墙规则配置指南 一、选择工具与准备 常见防火墙工具:iptables(底层、灵活)、firewalld(CentOS/RHEL 默认、基于区域与动态管理)、ufw(Ubuntu 常用、简洁)。先确认系统默认工具并避免...
Linux 虚拟机防火墙规则配置指南
一、选择工具与准备
- 常见防火墙工具:iptables(底层、灵活)、firewalld(CentOS/RHEL 默认、基于区域与动态管理)、ufw(Ubuntu 常用、简洁)。先确认系统默认工具并避免同时启用多个冲突服务。
- 查看与切换要点:
- 查看 firewalld:sudo systemctl status firewalld;启动/开机自启:sudo systemctl start|enable firewalld
- 查看 ufw:sudo ufw status;启用:sudo ufw enable
- 查看 iptables:sudo iptables -L -v -n
- 如改用 iptables,建议先停止并禁用 firewalld/ufw,避免规则互相覆盖。
二、通用安全基线规则(以 iptables 为例)
- 设定默认策略(谨慎:先确保已放行 SSH,避免锁死):
- 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 conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- 放行管理端口(示例为 SSH 22,远程操作务必先放行):
- sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
- 放行业务端口(示例为 HTTP/HTTPS 80/443):
- sudo iptables -A INPUT -p tcp --dport 80,443 -j ACCEPT
- 保存与持久化(不同发行版方式不同):
- Debian/Ubuntu:sudo sh -c “iptables-save > /etc/iptables/rules.v4”
- RHEL/CentOS(若仍使用 iptables 服务):sudo service iptables save
- 说明:规则自上而下匹配,务必将“放行已建立连接”与“放行 SSH”置于靠前位置,避免误锁。
三、按发行版常用做法
- firewalld(CentOS/RHEL 7+/Fedora)
- 启用与开机自启:sudo systemctl start|enable firewalld
- 设置默认区域:sudo firewall-cmd --set-default-zone=public
- 放行端口/服务(永久生效):sudo firewall-cmd --zone=public --add-port=80/tcp --permanent;sudo firewall-cmd --zone=public --add-service=ssh --permanent
- 使配置生效:sudo firewall-cmd --reload
- 查看:sudo firewall-cmd --list-all
- ufw(Ubuntu/Debian 常见)
- 启用:sudo ufw enable;状态:sudo ufw status verbose
- 放行端口/服务:sudo ufw allow 22/tcp;sudo ufw allow 80,443/tcp
- 拒绝来源 IP:sudo ufw deny from 192.168.1.100
- 重置:sudo ufw reset
- 提示:firewalld 与 ufw 都支持按“区域/服务/端口”管理,修改后记得重载或确认状态。
四、虚拟机常见网络场景
- 端口转发(DNAT,宿主机端口 → 虚拟机端口)
- 例:将宿主机 8080 转发到虚拟机 80
- sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination < 虚拟机IP> :80
- 若经宿主机上网,需开启 MASQUERADE:sudo iptables -t nat -A POSTROUTING -j MASQUERADE
- 仅允许内网网段访问 SSH(白名单)
- sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
- sudo iptables -A INPUT -p tcp --dport 22 -j DROP
- 重要提示:在云/虚拟化环境中,还需确保云平台安全组或虚拟网络 ACL 同步放行对应端口,否则虚拟机内部放行仍无法从外部访问。
五、验证、日志与维护
- 验证连通性
- 本机:ss -tlnp | grep -E ‘(:22|:80|:443)’
- 外部:nc -vz < 虚拟机IP> 22 / curl -I http://< 虚拟机IP>
- 查看与审计
- iptables:sudo iptables -L -v -n --line-number;日志:sudo tail -f /var/log/syslog | grep iptables
- firewalld:sudo firewall-cmd --list-all;日志:sudo journalctl -f -u firewalld
- ufw:sudo ufw status numbered;日志:sudo tail -f /var/log/ufw.log
- 变更与回滚
- 规则顺序影响结果,必要时用 -I 将关键规则插到前面;删除按编号:iptables -D INPUT
- 定期备份与回滚脚本化,变更前先保存当前规则并在测试环境验证。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux虚拟机防火墙规则怎么配置
本文地址: https://pptw.com/jishu/774829.html
