如何在Debian Overlay中设置防火墙
在Debian Overlay环境中,防火墙配置的核心是通过iptables(传统工具)或nftables(新一代工具)定义流量过滤规则,保障容器或节点的网络安全。以下是具体步骤:
首先确保系统软件包最新,然后安装所需的防火墙工具:
sudo apt update && sudo apt upgrade -y
sudo apt install iptables nftables -y # 同时安装iptables(传统)和nftables(推荐)
iptables是Debian默认的防火墙工具,适合需要兼容旧系统的场景。
默认拒绝所有输入(INPUT)、转发(FORWARD)流量,允许所有输出(OUTPUT)流量(可根据需求调整):
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
本地服务(如数据库、SSH)需要通过回环接口通信,必须允许:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
避免误杀已建立的连接(如下载、SSH会话),提升稳定性:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
根据服务需求开放端口(以SSH、HTTP、HTTPS为例):
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # SSH远程管理
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP网站服务
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS加密网站
Debian默认不保存iptables规则,需通过iptables-persistent工具持久化:
sudo apt install iptables-persistent -y
sudo netfilter-persistent save # 保存当前规则到/etc/iptables/rules.v4
sudo netfilter-persistent reload # 重启后自动加载规则
nftables是Linux内核新一代防火墙工具,语法更简洁、性能更优,适合新系统部署。
编辑默认配置文件或直接通过命令创建规则集:
sudo nft add table ip filter # 创建filter表(用于过滤流量)
sudo nft add chain ip filter input { type filter hook input priority 0 \; policy drop \; } # 输入链,默认拒绝
sudo nft add chain ip filter forward { type filter hook forward priority 0 \; policy drop \; } # 转发链,默认拒绝
sudo nft add chain ip filter output { type filter hook output priority 0 \; policy accept \; } # 输出链,默认允许
sudo nft add rule ip filter input iif lo accept # 允许回环接口
sudo nft add rule ip filter input ct state established,related 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 # 导出规则到配置文件
sudo systemctl enable nftables # 开机启动nftables服务
sudo systemctl start nftables # 启动nftables服务
若Overlay网络(如Docker Swarm、Kubernetes)跨主机通信,需额外开放Docker相关端口(以Docker Swarm为例):
# 允许Docker Swarm节点间通信(默认端口)
sudo iptables -A INPUT -p tcp --dport 2377 -j ACCEPT # Swarm管理端口
sudo iptables -A INPUT -p tcp --dport 7946 -j ACCEPT # 节点间通信端口
sudo iptables -A INPUT -p udp --dport 7946 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4789 -j ACCEPT # VXLAN隧道端口
对于Kubernetes集群,需开放API Server端口(6443)、**kubelet端口(10250-10255)**等:
sudo iptables -A INPUT -p tcp --dport 6443 -j ACCEPT # Kubernetes API Server
sudo iptables -A INPUT -p tcp --dport 10250 -j ACCEPT # kubelet只读端口
sudo iptables -A INPUT -p tcp --dport 10255 -j ACCEPT # kubelet只读端口(旧版本)
通过以下命令检查规则是否生效:
sudo iptables -L -n -v # 查看iptables规则及流量统计
sudo nft list ruleset # 查看nftables规则集
sudo netstat -tulnp # 查看监听端口(确认服务是否正常)
通过以上步骤,可在Debian Overlay环境中快速搭建防火墙,保障系统网络安全。