你有没有过这种经历?
大半夜睡得正香,报警电话狂响。你迷迷糊糊打开电脑,发现网站打不开了。登录服务器一看,CPU 飙升到 100%。有人在你的机器上挖矿,或者挂了博彩页面。那一刻,血压真的上来了。
说实话,这种事儿太常见了。很多新手运维,服务器就像个没锁门的便利店。谁路过都能进来拿点东西,甚至把店砸了。
今天我就跟你聊聊运维防攻击这点事儿。我不讲那些虚头巴脑的理论,只教你几招最实用的。照着做,能帮你挡住 99% 的低级骚扰和攻击。看完就能用,用了就有效。
SSH 就是你服务器的正门。黑客想进来,第一步就是撬这把锁。很多人默认装完系统,连密码都不改,这就好比把钥匙插在门上,还在旁边贴个条:“门没锁”。
全世界黑客的扫描脚本,默认都会扫 22 端口。你用 22,就是在告诉全世界“我有 SSH 服务”。这太招摇了。

解决办法:
把端口改了。改成一个五位数的大端口,比如 22222 或者 54321。
你需要改配置文件。找到 /etc/ssh/sshd_config 这个文件。
Port 22
Port 22222
改完记得重启服务。这一招能帮你挡住大量无脑扫描脚本。
避坑提醒:改完端口,记得去云服务商的控制台(阿里云/腾讯云),把安全组里的 22 端口删了,把新端口加上。不然你自己也登不上去,别怪我没提醒你。
root 账号权限太大了。一旦黑客猜到了 root 密码,你的服务器就彻底归他了。这就像把家里的万能钥匙放在门口地毯下。
解决办法:
先建一个普通用户,赋予 sudo 权限。然后禁止 root 登录。
还是在那个 sshd_config 文件里:
PermitRootLogin no
这样,黑客就算猜到了密码,也只能拿到一个普通用户权限。想提权?没那么容易。
密码再复杂,也有被暴力破解的一天。但密钥不一样,它几乎是不可能猜出来的。
操作步骤:
~/.ssh/authorized_keys 文件里。PasswordAuthentication 设为 no。这样,没有私钥的人,就算知道密码也没法登录。这比密码安全太多了。
大门锁好了,还得看看窗户。服务器上开了很多端口,就像窗户。有些窗户你根本不用,却一直开着,这就是隐患。
很多服务器为了省事,防火墙全是放行的。这太危险了。你只需要开 Web 服务的 80 和 443,再加上你刚才改过的 SSH 端口。别的端口,统统关掉。
实战命令:
如果你用的是 Ubuntu,用 ufw 很简单:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22222/tcp
sudo ufw enable
如果你用的是 CentOS,用 firewalld 或者 iptables。原理一样,白名单机制。没在名单里的,全部拦截。
有一种攻击叫 DDOS,就是找一大堆电脑同时访问你。你的带宽瞬间被占满,正常用户也进不来。
解决办法:
用 Nginx 限制连接频率。在 Nginx 配置文件里加个限流模块。
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
这行代码的意思是:同一个 IP,每秒只能发 1 个请求。多了就拒绝。这能有效防止简单的脚本刷接口。
避坑提醒:别限制太死,不然正常用户刷新快一点也会被拦住。根据自己业务情况调整频率。
很多攻击不是系统层面的,而是代码层面的。比如 SQL 注入、XSS 攻击。这些听着很高大上,说白了就是程序员写代码不严谨,留了漏洞。
这就像出门背心印着“我很弱”。黑客扫一下,看到你用的是 Nginx 1.10 这种老版本,心里乐开了花。他知道这个版本有什么漏洞,直接拿现成的攻击工具打你。
解决办法:
在 Nginx 配置文件里加一行:
server_tokens off;
这样,出错页面就不会显示版本号了。黑客还得费劲去猜你用的啥版本,这就增加了他的成本。
很多网站都有上传功能。如果你只校验后缀名,那是掩耳盗铃。黑客把 hack.php 改名叫 hack.jpg 上传,再配合解析漏洞,服务器就乖乖执行他的代码了。
解决办法:
连接数据库的账号,一定要遵循“最小权限原则”。如果你的 Web 程序只需要读写,千万别给它 drop table 的权限。
避坑提醒:千万别用 root 账号去连接 Web 数据库。一旦代码被注入,黑客能直接删库跑路,你哭都来不及。
哪怕你做得再好,也没有绝对安全的系统。如果真的被黑了,备份是你最后的救命稻草。
如果你把备份文件放在服务器同一块硬盘上,服务器被黑,备份也没了。这叫自欺欺人。
解决办法:
买一个对象存储(OSS/S3),或者另一台便宜的服务器。每天凌晨自动把数据库和重要代码打包传过去。
可以用简单的 cron 脚本实现。成本很低,但安全感爆棚。
服务器日志就是黑匣子。很多攻击是有前兆的。比如有人半夜尝试了几千次登录密码,日志里全是一堆“Failed password”。
解决办法:
写个简单的脚本,每天分析一下 secure 日志。如果发现某个 IP 失败次数超过 50 次,直接用防火墙把它封了。
这叫“自动封禁”。现在很多工具像 Fail2Ban 就是干这个的,装上很省心。
说了这么多,核心其实就几句话:改端口,禁 root,开防火墙,勤备份。
安全这事儿,不怕一万就怕万一。你现在觉得没事,是因为黑客还没盯上你。等盯上了,再改就来不及了。
别把这篇文章当收藏夹里的吃灰货。现在,立刻,马上登录你的服务器。把 SSH 端口改了,把 root 登录关了。也就花你十分钟,但这十分钟可能将来救你一命。
赶紧去,别偷懒。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图