服务器端口扫描漏洞防护配置指南:零基础也能轻松上手

为什么服务器的端口扫描漏洞必须重视

端口扫描是攻击者的“侦察”手段——通过探测服务器上开放的端口,他们能快速锁定弱口令服务、过时版本或未修补的漏洞。
对于刚上线的云服务器,如果不做任何防护,几分钟内就会被扫描工具盯上。
本文的目标就是让零基础用户,通过几个实际步骤,大幅降低端口扫描带来的风险。

前置准备:你只需要一台Linux服务器(以CentOS 7/8或Ubuntu 20.04为例),以及root或sudo权限。
本文所有命令都可以直接复制执行,无需额外工具。

第一步:修改默认的SSH端口

绝大多数扫描攻击都瞄准默认的22号SSH端口。
改了它,就能拦下至少80%的扫描流量。

  1. 登录服务器(用你现有的方式)。
  2. 编辑SSH配置文件:sudo vi /etc/ssh/sshd_config
  3. 找到 #Port 22 这一行,去掉注释,将数字改成高位端口,例如 Port 22333(注意避开常用端口如80、443、3306)。
  4. 如果是Ubuntu,还要确保 PermitRootLogin 设为 no(避免root直接登录),再增加一个普通用户并赋予sudo权限。
  5. 保存文件并重启SSH服务:sudo systemctl restart sshd(CentOS)或 sudo systemctl restart ssh(Ubuntu)。
  6. 不要立即断开当前会话,新开一个终端用新端口测试登录(例如 ssh -p 22333 user@你的IP),确认能连上再关闭旧会话。

避坑:记得在云服务商的安全组/防火墙中放行新端口,否则你会把自己锁在外面。

第二步:配置防火墙——只放行必需端口

用iptables或firewalld(推荐firewalld,CentOS 7+默认)严格限制入站流量。

使用firewalld(CentOS)

sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-port=22333/tcp  # 放行SSH新端口
sudo firewall-cmd --permanent --add-port=80/tcp     # 网站服务
sudo firewall-cmd --permanent --add-port=443/tcp    # HTTPS
sudo firewall-cmd --reload
sudo firewall-cmd --list-all  # 确认只有这三个端口开放

使用UFW(Ubuntu)

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22333/tcp comment 'SSH new port'
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

关键点:只开放业务必需的端口。
如果你不需要远程连接数据库,就不要放行3306端口。
如果必须开放,一定要限制来源IP(如 sudo ufw allow from 你的公司IP to any port 3306)。

第三步:部署Fail2ban——自动封禁频繁扫描的IP

Fail2ban会监控日志文件,当发现某个IP在短时间内尝试登录失败多次,就会自动添加iptables规则临时封禁它。

  1. 安装:sudo yum install -y fail2ban(CentOS)或 sudo apt install -y fail2ban(Ubuntu)。
  2. 创建自定义配置文件:sudo vi /etc/fail2ban/jail.local
  3. 写入以下基础内容(针对SSH服务):
[sshd]
enabled = true
port = 22333          # 改成你实际使用的端口
filter = sshd
logpath = /var/log/secure  # CentOS默认路径;Ubuntu是 /var/log/auth.log
maxretry = 3         # 3次失败就封禁
bantime = 3600       # 封禁1小时(单位秒)
findtime = 300       # 5分钟内达到3次则封禁
  1. 启动服务:sudo systemctl start fail2ban 并设为开机启动:sudo systemctl enable fail2ban
  2. 检查状态:sudo fail2ban-client status sshd。如果看到 Banned IP list: 有内容,说明已成功拦截扫描IP。

避坑:别把 maxretry 设得太小(比如1),否则正常误输密码也会被封。
另外,如果修改了SSH端口,务必在 jail.local 里指定 port,否则Fail2ban仍然监控默认22端口。

第四步:验证防护效果

执行完以上配置,最好自己模拟一次扫描来确认防护是否生效。

  1. 使用另一台机器(或本机)执行 nmap 扫描:nmap -sS -p 1-65535 你的服务器IP。如果只显示之前开放的几个端口,说明防火墙生效;如果扫描卡顿或连接超时,也说明防护起了作用。
  2. 故意用错误密码SSH登录几次(用新IP或不同IP),然后检查Fail2ban日志:sudo tail -f /var/log/fail2ban.log,你会看到类似 Ban 恶意IP 的记录。
  3. 用以下命令查看当前被封的IP:sudo iptables -L -n | grep fail2ban

成功验证后,你的服务器端口扫描漏洞防护配置就基本到位了。

常见问题与避坑指南

Q:我改完SSH端口后无法连接了怎么办?
A:如果你在云平台上有“远程连接”功能(如VNC、控制台),可以登录进去检查防火墙设置,重新放行旧端口或检查新端口配置。如果没有VNC,联系云服务商工单救援。记住:改端口时必须先放行新端口再重启SSH。

Q:Fail2ban封禁后,我想解封某个IP怎么做?
A:执行 sudo fail2ban-client set sshd unbanip 被封IP。如果想查看所有被封IP,用 sudo fail2ban-client status sshd

Q:我需要开放很多端口(比如游戏服务器),该怎么防护?
A:对于大量端口开放,建议只放行业务端口,同时开启Fail2ban的对应服务规则(如针对HTTP、MySQL)。此外,可以用云平台的DDoS高防或CDN隐藏真实IP。

Q:扫描攻击用大量IP轮换,Fail2ban能防住吗?
A:分布式扫描很难单靠Fail2ban彻底防住,需要结合云安全组白名单(只允许已知IP访问敏感端口)和Web应用防火墙。但它能大幅降低单点扫测成功的概率。

结语

端口扫描漏洞防护不是一次配置就一劳永逸的工作。
建议你定期查看服务器日志(/var/log/secure/var/log/auth.log)和Fail2ban统计,同时留意操作系统和服务的官方安全公告。
如果你希望站内继续学习,可以搜索“服务器入侵应急响应”或“Linux安全基线检查”相关教程。

按本文步骤操作后,你的服务器已经具备了基础且有效的端口扫描防御能力。
遇到任何异常,优先回顾避坑说明和高频问题部分,多数情况能自行解决。

分享到:
上一篇
网站404死链批量清理提交收录:网站404死链批量清理与提交
下一篇
跨境站邮件服务器自建方案:零基础自建跨境站邮件服务器
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意