Debian防火墙定制化指南
导读:Debian防火墙定制化指南 一 工具选型与适用场景 UFW(Uncomplicated Firewall):基于 iptables 的前端,语法简洁,适合桌面与服务器快速上手,默认策略为拒绝入站、允许出站,便于快速放行常见服务(如 SS...
Debian防火墙定制化指南
一 工具选型与适用场景
- UFW(Uncomplicated Firewall):基于 iptables 的前端,语法简洁,适合桌面与服务器快速上手,默认策略为拒绝入站、允许出站,便于快速放行常见服务(如 SSH/HTTP/HTTPS)。
- firewalld:支持区域(zone)与服务(service)概念,规则可运行时生效且可回滚,适合需要按网络环境(如 public/internal/trusted)做细粒度与动态管理的场景。
- iptables:传统且灵活,适合精确控制与复杂策略;需配合持久化方案(如 iptables-persistent 或手动保存/恢复脚本)。
- nftables:新一代 Netfilter 框架,语法更现代,适合新项目或希望替代 iptables 的场景。
二 快速上手 UFW
- 安装与启用
- 安装:
sudo apt update & & sudo apt install ufw - 默认策略:
sudo ufw default deny incoming;sudo ufw default allow outgoing - 启用:
sudo ufw enable(远程操作务必先放行 SSH,避免锁死)
- 安装:
- 常用规则
- 放行端口/服务:
sudo ufw allow 22/tcp或sudo ufw allow OpenSSH - 放行 HTTP/HTTPS:
sudo ufw allow http;sudo ufw allow https - 按来源放行:
sudo ufw allow from 203.0.113.10 to any port 22 - 按接口放行:
sudo ufw allow in on eth0 to any port 3306 - 端口范围:
sudo ufw allow 7100:7200/tcp - 协议区分:
sudo ufw allow 101/tcp;sudo ufw allow 101/udp
- 放行端口/服务:
- 管理与持久化
- 查看状态:
sudo ufw status verbose - 删除规则:
sudo ufw delete allow 80/tcp - 重置:
sudo ufw reset - 规则导出(便于备份/迁移):
sudo ufw export > /etc/ufw/user.rules
- 查看状态:
三 使用 firewalld 做区域化与细粒度控制
- 安装与启动
- 安装:
sudo apt install firewalld - 启动与开机自启:
sudo systemctl start firewalld;sudo systemctl enable firewalld - 查看状态:
sudo firewall-cmd --state
- 安装:
- 基础配置
- 区域与默认区:
sudo firewall-cmd --get-zones;sudo firewall-cmd --set-default-zone=public - 放行端口/服务:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent;sudo firewall-cmd --add-service=ssh --permanent - 使配置生效:
sudo firewall-cmd --reload - 运行时与永久规则:带 –permanent 为重启后保留;不带为运行时临时规则
- 区域与默认区:
- 富规则与精细控制
- 仅允许指定来源访问 SSH:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100/32" service name="ssh" accept' - 查询端口:
sudo firewall-cmd --query-port=60091/tcp
- 仅允许指定来源访问 SSH:
四 使用 iptables 与 nftables 精确控制
- iptables 常用做法
- 基本放行与状态控制
- 回环与已建立连接:
sudo iptables -A INPUT -i lo -j ACCEPT - 已建立/相关连接:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - 放行常见服务:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT(SSH);80/443(HTTP/HTTPS) - 按需放行 ICMP(ping):
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
- 回环与已建立连接:
- 默认策略(谨慎):
sudo iptables -P INPUT DROP(务必先确保已放行 SSH,避免失联) - 持久化与恢复
- 保存:
sudo iptables-save > /etc/iptables/rules.v4 - 恢复:
sudo iptables-restore < /etc/iptables/rules.v4 - 使用 iptables-persistent:
sudo apt install iptables-persistent(安装时选择保存当前规则;后续可用sudo netfilter-persistent save|start管理)
- 保存:
- 基本放行与状态控制
- nftables 快速示例
- 查看规则集:
sudo nft list ruleset - 放行某来源访问 SSH:
sudo nft add rule inet filter input tcp dport 22 ip saddr 192.168.1.100 accept - 保存与自启
- 导出规则:
sudo nft list ruleset > /etc/nftables.conf - 开机加载(示例):创建
/etc/network/if-pre-up.d/nftables,内容#!/bin/sh /sbin/nft -f /etc/nftables.conf,并sudo chmod +x
- 导出规则:
- 查看规则集:
五 实战案例与运维要点
- 实战案例
- 端口转发(DNAT)与出口源地址转换(SNAT)
- 启用转发:
sudo sysctl -w net.ipv4.ip_forward=1 - DNAT 将公网 80/TCP 转发至内网 192.168.1.100:80:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80 - SNAT 将内网 192.168.1.0/24 出站源地址改为 203.0.113.5:
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.5
- 启用转发:
- 只允许指定来源访问 SSH
- UFW:
sudo ufw allow from 203.0.113.10 to any port 22 - firewalld:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.10/32" service name="ssh" accept' - iptables:
sudo iptables -A INPUT -p tcp --dport 22 -s 203.0.113.10 -j ACCEPT
- UFW:
- 端口转发(DNAT)与出口源地址转换(SNAT)
- 运维要点
- 变更前备份规则;变更后逐步验证;远程操作务必先放行 SSH 或使用带外管理
- 区分运行时与永久规则(firewalld 使用 –permanent 并
reload) - 保持最小暴露面:仅开放必要端口与服务;对管理口与敏感服务使用来源白名单
- 建议启用日志以便审计与故障排查(如记录被拒绝的连接)
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian防火墙定制化指南
本文地址: https://pptw.com/jishu/769193.html
