ubuntu

Ubuntu防火墙如何防止端口扫描

小樊
57
2025-10-04 03:51:30
栏目: 智能运维

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)。

0
看了该问题的人还看了