你是不是遇到过这种情况?Linux VPS 明明没干啥,CPU 却突然飙到 100%,登上去一看,日志里全是 “来自 xxx 的端口扫描” 记录,心里直发慌?端口扫描就像小偷在你家门外挨个试钥匙,一旦找到没锁的门(开放端口),就可能闯进来搞破坏。小编前阵子帮朋友维护的 VPS,就因为没做好防火墙设置,被扫描后开了个后门,数据差点丢了。今天就手把手教你,Linux VPS 怎么设置防火墙防端口扫描攻击,哪怕是新手也能学会,一起往下看吧!
先弄明白:端口扫描到底有多讨厌?
端口扫描说白了,就是黑客用工具挨个试探你的 VPS 开放了哪些端口,比如 22(SSH)、80(网站)这些,摸清情况后就好下手了。轻的话,扫描会占用服务器资源,让 VPS 变卡;重的话,一旦扫到有漏洞的端口,黑客可能直接入侵,删数据、植木马都有可能。
小编查过朋友 VPS 的日志,最多的时候一天被扫了 2000 多次,从凌晨到半夜没停过。你说这能不管吗?不过话说回来,端口扫描本身不算攻击,但它是攻击的前奏,就像小偷踩点,必须提前拦住。
防火墙基础:先把 “大门” 关好
Linux 常用的防火墙是 ufw,简单好用,新手也能上手。先看看你的防火墙开没开,打开终端输 “sudo ufw status”,要是显示 “inactive” 就是没开,得先启动它。
第一步:只开需要的端口
别图省事把所有端口都打开,用啥开啥。比如你只搭了网站,就开 80(HTTP)、443(HTTPS)和改过后的 SSH 端口(比如 12345),其他全关掉。
- 输 “sudo ufw allow 80/tcp”(开网站端口)
- 输 “sudo ufw allow 443/tcp”(开加密网站端口)
- 输 “sudo ufw allow 12345/tcp”(开 SSH 端口,记得换成你改的端口)
- 最后输 “sudo ufw enable” 启动防火墙,再输 “sudo ufw status” 看看是不是都加上了
这一步就像家里只留常用的门,其他门全锁死,小偷想进都找不到地方。
进阶设置:让防火墙变 “聪明”,能识别扫描
光关门还不够,得让防火墙认出 “谁在扫描”,然后拉黑它。ufw 可以加规则,限制短时间内的连接次数,超过次数就拦掉。
限制 SSH 端口的连接频率
比如 10 分钟内,同一个 IP 连 SSH 超过 5 次就拉黑,防止暴力扫描。
- 输 “sudo ufw limit 12345/tcp”(12345 换成你的 SSH 端口)
这条规则的意思是,短时间内多次连接失败,就暂时封掉这个 IP,小编亲测,加了之后 SSH 被扫的次数少了一半。
用 fail2ban 增强防护
这是个专门防暴力攻击的工具,能监控日志,发现频繁扫描的 IP 就自动拉黑。
- 先安装:“sudo apt install fail2ban”(Ubuntu 系统)
- 复制配置文件:“sudo cp /etc/fail2ban/jail.conf/etc/fail2ban/jail.local”
- 编辑配置:“sudo vi /etc/fail2ban/jail.local”,找到 “[sshd]”,把 “enabled = false” 改成 “enabled = true”,保存退出
- 启动它:“sudo systemctl start fail2ban”,并设为开机启动:“sudo systemctl enable fail2ban”
有了 fail2ban,就像雇了个保安,发现可疑人员就赶出去,省心多了。
实际案例:小编是怎么帮朋友搞定的
朋友的 VPS 一开始只开了 22 端口,没做限制,结果被扫到崩溃。小编帮他做了这几步:
- 把 SSH 端口从 22 改成 12345(前面说过的方法)
- 用 ufw 关掉所有没用的端口,只开 80、443、12345
- 加了 ufw limit 规则,限制 SSH 连接频率
- 装了 fail2ban 监控日志
改完之后,第二天日志里的扫描记录就从 2000 多条降到了 30 多条,CPU 也稳定了。这或许能说明,做好这几步,防端口扫描的效果确实不错。
自问自答:这些问题你可能也想问
问:设置这么严,会不会把正常用户挡在外面?
答:有可能,比如用户输错几次密码,可能会被 fail2ban 暂时拉黑。这时候可以在 fail2ban 里把 “bantime”(拉黑时间)设短点,比如 10 分钟,或者手动解禁(输 “sudo fail2ban-client set sshd unbanip 被封的 IP”)。
问:除了防火墙,还有别的办法吗?
答:可以装个端口扫描检测工具,比如 “psad”,能分析扫描行为并报警。不过这工具配置稍微复杂点,新手可以先把防火墙搞好。
对了,对于某些新型的分布式端口扫描工具,它们能伪装成正常流量,防火墙规则可能不太好识别,具体怎么精准拦截,小编还在研究,要是你有好办法,欢迎告诉我。
小编觉得,防端口扫描就像给 VPS 穿盔甲,不能只穿一层,得叠着来 —— 改端口、关无用端口、限连接频率、加监控工具,层层防护才靠谱。别觉得麻烦,一开始花半小时设置好,后面能省很多事。毕竟数据丢了再找回来,可比设置防火墙难多了。
希望这些能帮到你,要是你试了这些方法,有啥效果或者问题,欢迎在评论区说一声~