1. 配置UFW防火墙基础规则
Ubuntu默认使用UFW(Uncomplicated Firewall)作为防火墙管理工具,其核心策略是“默认拒绝所有入站流量,允许所有出站流量”,从根源上限制未授权访问。首先启用UFW并设置默认规则:
sudo ufw enable # 启用UFW
sudo ufw default deny incoming # 默认拒绝所有入站连接
sudo ufw default allow outgoing # 允许所有出站连接
然后仅开放必要的服务端口(如SSH用22端口、HTTP用80端口、HTTPS用443端口),避免开放无关端口(如Telnet、FTP等高风险服务端口)。例如允许SSH端口:
sudo ufw allow 22/tcp # 允许TCP协议的22端口(SSH)
通过减少开放端口数量,降低被端口扫描工具(如Nmap)发现的概率。
2. 限制端口访问频率(防暴力扫描)
端口扫描工具通常会在短时间内发送大量连接请求(如每秒数十次),UFW的limit命令可有效限制单个IP对特定端口的连接速率。例如,限制SSH端口(22/tcp)的连接尝试:
sudo ufw limit 22/tcp # 限制SSH端口:允许每分钟最多6次连接,超过则拒绝并记录
该规则的原理是:前6次连接尝试会被允许,后续在60秒窗口期内的连接将被拒绝。这种机制可阻止自动化扫描工具快速枚举端口,同时不影响正常用户的访问。
3. 仅允许可信IP访问关键端口
若服务器仅由特定IP(如公司内网、个人固定IP)访问,可将关键端口(如SSH、数据库)的访问权限限制为可信IP段,彻底阻断其他IP的扫描行为。例如,仅允许IP192.168.1.100访问SSH端口:
sudo ufw allow from 192.168.1.100 to any port 22/tcp # 允许指定IP访问SSH
sudo ufw deny 22/tcp # 拒绝其他所有IP访问SSH
此方法可大幅缩小攻击面,即使扫描到端口开放,也无法从非信任IP建立连接。
4. 结合Fail2Ban自动封禁扫描IP
Fail2Ban是一款入侵防御工具,可监控日志文件(如/var/log/auth.log),检测到多次失败的端口扫描或登录尝试后,自动将攻击源IP加入防火墙黑名单(默认封禁10分钟)。安装并配置Fail2Ban的步骤如下:
sudo apt install fail2ban # 安装Fail2Ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 复制配置文件(避免升级覆盖)
编辑/etc/fail2ban/jail.local,启用SSH防护并设置参数:
[sshd]
enabled = true # 启用SSH防护
port = 22 # 监控SSH端口(若修改了默认端口,需同步调整)
filter = sshd # 使用sshd过滤规则(默认已配置)
logpath = /var/log/auth.log # 日志文件路径
maxretry = 3 # 3次失败尝试后触发封禁
bantime = 600 # 封禁时间(秒),此处为10分钟
findtime = 600 # 检测时间窗口(秒),10分钟内累计3次失败则封禁
重启Fail2Ban使配置生效:
sudo systemctl restart fail2ban
Fail2Ban可有效应对端口扫描、暴力破解等攻击,自动封禁恶意IP,减少服务器暴露风险。
5. 隐藏端口降低扫描概率
端口扫描的前提是攻击者知道目标端口的存在,通过修改服务默认端口可降低被扫描到的概率。例如,将SSH默认端口22改为非知名端口(如2222):
sudo nano /etc/ssh/sshd_config # 编辑SSH配置文件
# 找到“#Port 22”行,取消注释并修改为:
Port 2222
保存后重启SSH服务:
sudo systemctl restart sshd
同时需在UFW中开放新端口并关闭旧端口:
sudo ufw allow 2222/tcp # 允许新端口
sudo ufw deny 22/tcp # 关闭旧端口
需注意,修改端口后需告知所有合法用户,避免因端口变更导致无法访问。
6. 启用UFW日志监控可疑行为
UFW的日志功能可记录所有被拒绝的连接尝试,通过分析日志可及时发现端口扫描行为。启用UFW日志:
sudo ufw logging on # 开启日志记录(默认日志路径为/var/log/ufw.log)
查看日志可使用以下命令:
sudo tail -f /var/log/ufw.log # 实时查看日志
日志中若出现大量“DENY IN”记录(如同一IP在短时间内多次尝试连接不同端口),则可能存在端口扫描。可根据日志信息进一步调整防火墙规则(如封禁该IP)。