温馨提示×

Ubuntu防火墙如何实现自动化管理

小樊
80
2025-05-20 04:33:45
栏目: 智能运维

在Ubuntu系统中,可以使用 Uncomplicated Firewall (UFW)Firewalld 来实现防火墙的自动化管理。以下是两种方法的详细介绍:

使用UFW进行自动化管理

  1. 安装UFW(如果尚未安装):

    sudo apt update sudo apt install ufw 
  2. 启用UFW

    sudo ufw enable 
  3. 配置UFW规则

    • 允许特定端口:
      sudo ufw allow 22/tcp # 允许SSH sudo ufw allow 80/tcp # 允许HTTP sudo ufw allow 443/tcp # 允许HTTPS 
    • 允许特定IP地址或子网:
      sudo ufw allow from 192.168.1.0/24 to any port 22 # 允许来自192.168.1.0/24网段的SSH连接 
    • 删除规则:
      sudo ufw delete allow 22/tcp # 删除允许22端口的规则 
  4. 查看当前规则

    sudo ufw status verbose 
  5. 保存规则(确保重启后规则仍然有效):

    sudo ufw save 
  6. 自动化脚本(例如,firewall.sh):

    #!/bin/bash ufw disable echo y | ufw reset ufw allow from xxx.xxx.xxx.xxx ufw allow from xx.xx.xx.0/24 ufw allow from 192.168.101.0/24 to any port 161 proto udp ufw allow 80/tcp ufw allow 1:500/tcp ufw enable 

使用Firewalld进行自动化管理

  1. 安装Firewalld(如果尚未安装):

    sudo apt update sudo apt install firewalld 
  2. 启用Firewalld

    sudo systemctl start firewalld sudo systemctl enable firewalld 
  3. 配置Firewalld规则

    • 添加新的规则:
      sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept' 
  4. 重新加载防火墙规则

    sudo firewall-cmd --reload 
  5. 自动化脚本(例如,firewall_manager.py):

    import firewalld fw = firewalld.Firewall() # 获取当前运行状态 status = fw.getStatus() print("Firewalld status:", status) # 添加一个新的区域 new_zone = "myzone" if not fw.zoneExists(new_zone): fw.newZone(new_zone, {"target": "ACCEPT", "icmp-block-inversion": "no"}) print(f"New zone '{new_zone}' created.") else: print(f"Zone '{new_zone}' already exists.") # 将新区域设置为默认区域 fw.setDefaultZone(new_zone) print(f"Default zone set to '{new_zone}'.") # 向新区域添加一条规则,允许来自IP地址192.168.1.100的SSH流量 source_ip = "192.168.1.100" service = "ssh" fw.addRichRule(f"rule family=\"ipv4\" source address=\"{source_ip}\" service name=\"{service}\" accept", new_zone) print(f"Added rule to allow SSH traffic from {source_ip}.") # 重新加载防火墙配置 fw.reload() print("Firewalld configuration reloaded.") 

通过上述方法,可以实现Ubuntu防火墙的自动化管理。根据具体需求,可以选择使用UFW或Firewalld,并通过脚本进一步自动化配置过程。

0