以下是使用iptables对Debian系统进行安全加固的关键步骤:
设置默认策略
将默认策略设为DROP,仅允许明确放行的流量,阻断未授权访问。
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
允许必要服务
iptables -A INPUT -p tcp --dport 22 -s <trusted_ip> -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
限制连接数与速率
connlimit模块限制单个IP的并发连接数(如限制80端口每IP最多5个新连接)。iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j REJECT
limit模块限制连接速率(如每秒最多1个新连接,突发5个)。iptables -A INPUT -p tcp --syn --dport 80 -m limit --limit 1/second --limit-burst 5 -j ACCEPT
防范常见攻击
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
INVALID状态包)。iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
日志记录与监控
记录被拒绝的连接尝试,便于分析异常流量。
iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
规则持久化
安装iptables-persistent工具,保存规则并设置开机自动加载。
sudo apt install iptables-persistent
sudo netfilter-persistent save
高级防护(可选)
ufw(简化版防火墙工具)管理规则,适合新手。sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw deny 23/tcp
fail2ban动态封禁恶意IP,增强防护能力。注意事项:
iptables -L -n查看规则,nc或telnet测试端口连通性)。