经常有朋友在群里甩一张截图,上面是 top 命令的输出,一个叫 kdevtmpfsi 或者 xmrig 的进程把 CPU 吃到了 400%,然后问:“站长,我这服务器是不是废了?”
说实话,每次看到这种消息,笔者都既心疼又无奈。Linux 服务器安全与防护,从来不是装个面板、改个密码就万事大吉的事。它是一套从入口到出口的系统工程。今天这篇,站长就结合自己踩过的坑和帮人救火的经验,把“Linux 服务器安全与防护是什么”这件事掰开揉碎了讲清楚。
Linux 服务器安全与防护,到底防的是什么?
💡 推荐阅读:别再对着价格表瞎蒙了:从架构视角拆解云服务器选型,这套避坑SOP能省下你一半的冤枉钱
简单说,Linux 服务器安全与防护,就是通过一系列配置、工具和习惯,确保你的服务器只做你允许它做的事,只让该进来的人进来,只让该出去的数据出去。
它主要防三件事:
- 防入侵:别人通过 SSH 爆破、Web 漏洞、弱口令等方式拿到你的 shell 权限。
- 防提权:就算攻击者进来了,也不能让他轻易拿到 root,更不能让他长期潜伏。
- 防数据泄露与篡改:网站被挂马、数据库被拖库、文件被加密勒索,这些都是防护失效的后果。
很多新手觉得“我一个小破站,谁闲着没事攻击我?”但现实是,互联网上扫描器和僵尸网络是 7×24 小时无差别工作的。你服务器只要暴露在公网,平均几分钟内就会迎来第一次 SSH 爆破尝试。所以,安全防护不是“要不要做”,而是“必须做,且要马上做”。
高频疑问与排坑实战
💡 延伸阅读:你的服务器真的安全吗?一套拿来就能用的Linux加固SOP,从裸机到堡垒机
Q1:SSH 天天被爆破,日志里全是 Failed password,怎么彻底解决?
这是最常见的问题。你登录服务器,执行 lastb | head -20,大概率能看到一堆来自全球各地的 IP 在尝试登录 root。别慌,这说明你的服务器正在被“踩点”,但还没被攻破。
根因剖析:默认情况下,SSH 服务监听 22 端口,root 用户允许直接登录,且密码认证是开启的。这三个条件凑在一起,等于给爆破工具开了绿灯。
解决方案(三步走):
第一步,禁用 root 直接登录,改用普通用户 + sudo。编辑 /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 22022 # 改一个非标准端口,能过滤掉 90% 的无脑扫描
第二步,配置 SSH 密钥登录。在本地生成密钥对,把公钥传到服务器:
ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-copy-id -i ~/.ssh/id_ed25519.pub your_user@your_server_ip -p 22022
第三步,重启 SSH 服务并验证:
sudo systemctl restart sshd
# 新开一个终端测试密钥登录,确认无误后再关闭当前会话
做完这三步,你的 SSH 安全等级直接拉满。爆破日志?基本绝迹。
Q2:服务器突然变卡,CPU 跑满,是不是被挖矿了?
大概率是的。挖矿木马最喜欢通过 Redis 未授权访问、Web 框架漏洞、弱口令 SSH 进来,然后下载 xmrig 之类的矿工程序,甚至还会给你装个 rootkit 隐藏自己。
根因剖析:攻击者进来后,通常会做几件事:写入定时任务 /var/spool/cron/ 实现持久化、替换系统命令、开放后门端口。你看到的 CPU 飙升只是表象。
解决方案:
先断网或封禁异常 IP,然后排查:
# 查看异常进程
top -c
# 查看定时任务
crontab -l
ls -la /etc/cron.d/ /var/spool/cron/
# 查看网络连接
netstat -antp | grep ESTABLISHED
# 检查最近修改的文件
find / -mtime -1 -type f -name "*.sh" 2>/dev/null
找到恶意进程后,kill -9 掉,删除对应的定时任务和文件。但笔者必须提醒:如果服务器已经被挖矿,最安全的做法是备份数据后重装系统。因为你永远不知道攻击者还留了多少后门。
Q3:防火墙 iptables 和 firewalld 到底用哪个?规则怎么写才不把自己关外面?
这是新手最头疼的问题之一。CentOS 7 之后默认用 firewalld,Ubuntu 系则常用 ufw,但底层都是 iptables。笔者的建议是:用你熟悉的那个,但一定要先放行 SSH 端口再启用。
根因剖析:很多人一上来就 systemctl start firewalld,结果发现 SSH 连不上了,只能去 VNC 控制台救火。这是因为默认规则没有放行你的自定义 SSH 端口。
解决方案(以 firewalld 为例):
# 先放行 SSH 端口,再启动防火墙
sudo firewall-cmd --permanent --add-port=22022/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo systemctl enable firewalld --now
如果你用的是云服务器,别忘了在云厂商的安全组里也放行对应端口。安全组是云平台层面的防火墙,优先级高于系统防火墙。两者都放行,服务才能通。
一套拿来即用的基础防护清单
💡 深度技术指南:Docker容器到底该怎么跑?聊聊我从踩坑到上生产的标准流程
下面这张表,是笔者每台新服务器上线后必做的检查项,你可以直接抄作业:
| 防护项 | 操作要点 | 工具/命令 |
|---|---|---|
| SSH 加固 | 改端口、禁 root、密钥登录 | /etc/ssh/sshd_config |
| 防火墙 | 只放行必要端口,默认拒绝 | firewalld / ufw / 安全组 |
| 自动更新 | 及时打安全补丁 | yum update / apt upgrade |
| 入侵检测 | 监控异常登录和文件变动 | Fail2ban / AIDE |
| 最小权限 | 服务用独立用户运行,禁用 shell | useradd -s /sbin/nologin |
| 备份 | 定期异地备份,验证可恢复 | rsync / 对象存储 |
预防建议:安全是一种习惯,不是一次配置
最后,笔者想说几句掏心窝子的话。Linux 服务器安全与防护,工具和命令只是表象,真正的核心是意识。
- 别贪便宜买来路不明的服务器。一些超低价 VPS 可能存在超售严重、母鸡被入侵的问题,你装得再好也白搭。选择靠谱的云服务商,虽然贵一点,但省心。
- 域名和 SSL 证书走正规渠道。别用来路不明的免费证书,更别把私钥随便传。
- 定期看日志。
/var/log/secure、/var/log/auth.log、Nginx 的 access log,都是发现异常的第一现场。 - 装个 Fail2ban。它能自动分析日志,把频繁爆破的 IP 丢进防火墙黑名单,配合 SSH 加固效果翻倍。
安全这件事,平时感觉不到它的存在,一旦出事就是大事。花一个下午把上面这些做完,换来的是未来几百个日夜的踏实。希望这篇长文能帮你少走弯路,别等服务器被挖矿了才想起来搜“Linux 服务器安全与防护是什么”。
相关技术专题与延伸阅读
- 别再对着价格表瞎蒙了:从架构视角拆解云服务器选型,这套避坑SOP能省下你一半的冤枉钱
- 你的服务器真的安全吗?一套拿来就能用的Linux加固SOP,从裸机到堡垒机
- Docker容器到底该怎么跑?聊聊我从踩坑到上生产的标准流程
- 告别命令行焦虑:三款主流开源Docker管理平台深度横评,到底谁才是运维神器?
📦 【资源免费领】本文全套实操配置文件与避坑手册下载
本文涉及的全套 Docker Compose 配置文件、服务器运维避坑清单及 AI 提效指令库已完整打包,可免费极速转存:
💡 提示:推荐使用手机【夸克网盘 App】打开保存,新用户首月免费赠送 1TB 超大空间与免流量极速下载特权。