在Debian系统上构筑防线:用防火墙抵御端口扫描
服务器暴露在公网,就像一座不设防的城堡,端口扫描往往是攻击者发起的第一波“侦察”。好在,Debian系统为我们提供了坚实的工具来构筑这道防线——无论是经典的iptables,还是更易上手的ufw(Uncomplicated Firewall)。下面,我们就来聊聊具体的配置方法与步骤。

使用iptables配置防火墙:精细化控制
iptables是Linux内核自带的强大防火墙工具,虽然命令行略显复杂,但能实现极其精细的控制。它的核心思路很简单:先明确放行哪些必要的连接,然后默认拒绝其他一切。
- 安装iptables(如果尚未安装):
sudo apt update
sudo apt install iptables
- 查看当前的iptables规则:
动手前先看一眼现状,总没错。
sudo iptables -L -n -v
- 添加规则以允许特定IP访问特定端口:
这是关键步骤。例如,如果你只想从特定管理IP访问SSH,可以这样设置。当然,实际应用中,你可能需要根据服务开放相应的端口。
sudo iptables -A INPUT -p tcp --dport 22 -s 你的IP地址 -j ACCEPT # 允许SSH端口
sudo iptables -A INPUT -p tcp --dport 80 -s 你的IP地址 -j ACCEPT # 允许HTTP端口
sudo iptables -A INPUT -p tcp --dport 443 -s 你的IP地址 -j ACCEPT # 允许HTTPS端口
sudo iptables -A INPUT -p tcp --dport 3306 -s 你的IP地址 -j ACCEPT # 允许MySQL端口
- 拒绝所有其他入站连接:
设置默认策略为拒绝,这才是防火墙生效的核心。
sudo iptables -P INPUT DROP
- 保存iptables规则:
内存中的规则重启会消失,必须保存到文件。
sudo iptables-sa ve > /etc/iptables/rules.v4
- 设置iptables在启动时自动加载规则:
创建启动脚本,确保规则持久化。
sudo nano /etc/network/if-pre-up.d/iptables
添加以下内容:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables/rules.v4
赋予执行权限:
sudo chmod +x /etc/network/if-pre-up.d/iptables
使用ufw配置防火墙:化繁为简
如果你觉得iptables的语法让人头疼,那么ufw就是为你准备的。它的命令直观得多,底层依然调用iptables,但管理起来轻松不少。
- 安装ufw(如果尚未安装):
sudo apt update
sudo apt install ufw
- 启用ufw:
一条命令即可开启防火墙。
sudo ufw enable
- 允许特定端口:
语法非常直白。通常,Web服务器需要开放80和443,管理则需要22(SSH)。
sudo ufw allow 80/tcp # 允许HTTP端口
sudo ufw allow 443/tcp # 允许HTTPS端口
sudo ufw allow 22/tcp # 允许SSH端口
- 查看ufw状态:
随时检查哪些端口是开放的。
sudo ufw status
- 禁用ufw(如果需要):
临时关闭防火墙,但切记,这只是为了调试,完成后应立即重新启用。
sudo ufw disable
几个必须留意的注意事项
- 知己知彼: 配置前,务必厘清你的服务器到底需要对外提供哪些服务,以及可能从哪些IP段访问。盲目开关端口会带来麻烦。
- 谨慎操作: 尤其是在使用iptables设置默认DROP策略时,一定要先确保放行了你的SSH管理端口,否则很可能把自己关在门外。
- 动态维护: 安全不是一劳永逸的。定期审查防火墙规则,根据业务变化和安全威胁情报进行更新,这才是长治久安之道。
说到底,防火墙是服务器安全的基础设施。通过以上步骤,你就能在Debian系统上建立起有效的访问控制,大幅降低被端口扫描和后续攻击利用的风险。记住,最小的必要开放,就是最大的安全。
