linux

Linux虚拟机防火墙设置怎么做

小樊
41
2025-10-11 19:23:16
栏目: 云计算

Linux虚拟机防火墙设置指南
Linux虚拟机的防火墙配置需根据发行版选择合适工具(如Ubuntu/Debian用ufw、CentOS/RHEL/Fedora用firewalld、传统系统用iptables),以下是具体操作步骤:

一、Ubuntu/Debian系统(使用ufw)

ufw(Uncomplicated Firewall)是Ubuntu/Debian的默认防火墙工具,以简单易用著称。

  1. 安装ufw(若未安装):
    sudo apt update && sudo apt install ufw
    
  2. 启用ufw
    sudo ufw enable  # 启用后,默认拒绝所有入站流量、允许所有出站流量
    
  3. 查看ufw状态
    sudo ufw status  # 显示当前规则(允许/拒绝的端口/服务)
    
  4. 配置规则
    • 允许SSH(默认端口22):
      sudo ufw allow ssh  # 或 sudo ufw allow 22/tcp
      
    • 允许HTTP(端口80)/HTTPS(端口443):
      sudo ufw allow http  # 或 sudo ufw allow 80/tcp
      sudo ufw allow https # 或 sudo ufw allow 443/tcp
      
    • 拒绝特定IP访问(如192.168.1.100):
      sudo ufw deny from 192.168.1.100
      
  5. 删除规则
    • 删除允许SSH的规则:
      sudo ufw delete allow ssh
      

二、CentOS/RHEL/Fedora系统(使用firewalld)

firewalld是CentOS 7及以上版本的默认防火墙工具,支持动态规则管理和区域(Zone)概念。

  1. 启动firewalld并设置开机自启
    sudo systemctl start firewalld  # 启动服务
    sudo systemctl enable firewalld # 开机自动启动
    
  2. 查看firewalld状态
    sudo firewall-cmd --state  # 显示“running”表示运行中
    
  3. 配置规则
    • 允许SSH服务(预定义规则集):
      sudo firewall-cmd --permanent --add-service=ssh  # 永久生效
      sudo firewall-cmd --reload                     # 重新加载规则
      
    • 允许HTTP(端口80):
      sudo firewall-cmd --permanent --add-port=80/tcp  # 永久开放端口
      sudo firewall-cmd --reload
      
    • 拒绝特定IP访问(需结合富规则):
      sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop'
      sudo firewall-cmd --reload
      
  4. 删除规则
    • 删除允许SSH的服务规则:
      sudo firewall-cmd --permanent --remove-service=ssh
      sudo firewall-cmd --reload
      

三、传统系统(使用iptables,适用于CentOS 6等)

iptables是Linux早期的防火墙工具,功能强大但配置复杂,需手动保存规则。

  1. 查看当前规则
    sudo iptables -L -n -v  # 显示详细规则(-n表示不解析IP/端口)
    
  2. 清空现有规则(谨慎操作,避免锁死自己):
    sudo iptables -F  # 清空INPUT/OUTPUT/FORWARD链
    sudo iptables -t nat -F  # 清空NAT表规则
    
  3. 添加基础规则
    • 允许SSH(端口22)入站:
      sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
      
    • 允许HTTP(端口80)/HTTPS(端口443):
      sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
      
    • 设置默认策略(拒绝所有未明确允许的入站流量):
      sudo iptables -P INPUT DROP  # 输入链默认拒绝
      sudo iptables -P FORWARD DROP  # 转发链默认拒绝
      sudo iptables -P OUTPUT ACCEPT # 输出链默认允许
      
  4. 保存规则(防止重启丢失):
    • CentOS 6:
      sudo service iptables save  # 保存至/etc/sysconfig/iptables
      
    • Ubuntu(需安装iptables-persistent):
      sudo apt install iptables-persistent
      sudo netfilter-persistent save
      

四、防火墙配置原则

  1. 最小化开放端口:仅开放业务必需的端口(如Web服务器开80/443、SSH开22)。
  2. 默认拒绝策略:将INPUT链默认策略设为DROP,避免未授权访问。
  3. 分层防御:结合SELinux(若启用)、网络ACL等增强安全性。
  4. 日志记录:通过iptables的-j LOG选项记录可疑流量,便于排查问题。
  5. 定期审计:清理过期规则(如测试用的临时端口),更新策略以适应业务变化。

以上步骤覆盖了Linux虚拟机防火墙的常见配置场景,可根据实际需求选择工具并调整规则。操作前建议备份原有配置(如/etc/ufw/ufw.conf/etc/firewalld/),避免误操作导致系统无法访问。

0
看了该问题的人还看了