Debian防火墙自动化管理实现方法
ufw是Debian默认推荐的简化防火墙管理工具,通过命令行提供直观的规则配置,支持自动持久化规则。
sudo apt update && sudo apt install ufw # 安装ufw sudo ufw enable # 启用ufw(默认拒绝所有入站,允许所有出站) #!/bin/bash sudo ufw allow 22/tcp # 允许SSH sudo ufw allow 80/tcp # 允许HTTP sudo ufw allow 443/tcp # 允许HTTPS sudo ufw reload # 重新加载规则(无需重启服务) /etc/ufw/ufw.conf,启用后会随系统启动自动加载,无需额外操作。firewalld采用“区域(Zone)”和“服务(Service)”模型,支持动态更新规则(无需重启服务),适合复杂环境。
sudo apt install firewalld # 安装firewalld sudo systemctl start firewalld # 启动服务 sudo systemctl enable firewalld # 开机自启 #!/bin/bash sudo firewall-cmd --set-default-zone=public # 设置默认区域为public sudo firewall-cmd --zone=public --add-service=ssh --permanent # 允许SSH(永久生效) sudo firewall-cmd --zone=public --add-service=http --permanent # 允许HTTP sudo firewall-cmd --zone=public --add-service=https --permanent # 允许HTTPS sudo firewall-cmd --reload # 重新加载配置(使永久规则生效) --permanent参数的规则会保存到/etc/firewalld/zones/public.xml,firewall-cmd --reload可自动加载这些规则。nftables是Debian 10+的默认防火墙框架,支持更高效的规则管理和脚本化配置。
sudo apt install nftables # 安装nftables sudo systemctl start nftables # 启动服务 sudo systemctl enable nftables # 开机自启 #!/bin/bash sudo nft flush ruleset # 清除所有现有规则 sudo nft add table ip filter # 创建filter表 sudo nft add chain ip filter input { type filter hook input priority 0 \; } # 创建input链 sudo nft add rule ip filter input ct state established,related accept # 允许已建立连接 sudo nft add rule ip filter input iif lo accept # 允许本地回环 sudo nft add rule ip filter input tcp dport 22 accept # 允许SSH sudo nft add rule ip filter input tcp dport 80 accept # 允许HTTP sudo nft add rule ip filter input tcp dport 443 accept # 允许HTTPS sudo nft list ruleset > /etc/nftables.conf # 保存规则到配置文件 /etc/nftables.conf后,systemctl enable nftables会确保开机自动加载。编写Shell脚本可批量执行防火墙配置命令,适用于大规模环境或频繁变更场景。
#!/bin/bash # 清除旧规则 iptables -F iptables -X # 设置默认策略(拒绝所有入站,允许所有出站) iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允许本地回环和已建立连接 iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # 允许SSH、HTTP、HTTPS iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 保存规则 iptables-save > /etc/iptables/rules.v4 chmod +x firewall_script.sh sudo ./firewall_script.sh /etc/network/if-pre-up.d/目录(如/etc/network/if-pre-up.d/firewall),并赋予执行权限,系统启动时会自动执行脚本。对于多台Debian服务器,可使用Ansible、Puppet、Chef等自动化工具,通过编写Playbook或Manifest实现防火墙规则的集中配置与同步。
firewall.yml):- hosts: debian_servers become: yes tasks: - name: Install ufw apt: name: ufw state: present - name: Enable ufw command: ufw enable - name: Allow SSH ufw: rule: allow port: 22 proto: tcp - name: Allow HTTP ufw: rule: allow port: 80 proto: tcp 运行Playbook:ansible-playbook -i inventory firewall.yml 该方式可实现“一次编写,多处执行”,大幅减少重复劳动。