很多站长把服务器买回来,第一件事就是装宝塔、传代码、跑数据库,然后就不管了。直到某天收到云厂商的短信:“您的实例存在对外攻击行为,已被封禁。”或者更惨的,早上起来发现网站被挂马,数据库被删,只留下一张勒索信。
笔者运维过几百台生产环境服务器,踩过的坑比吃过的盐还多。今天不聊虚的,直接把一套经过实战检验的Linux服务器安全加固SOP拆开揉碎了讲给你听。这套流程从裸机交付开始,到最终验证收尾,每一步都有明确的参数和命令,照着做就能把90%的自动化扫描和暴力破解挡在门外。
一、核心原理:攻击者到底怎么进来的?
💡 推荐阅读:Docker容器到底该怎么跑?聊聊我从踩坑到上生产的标准流程
在动手之前,你得先明白敌人从哪来。绝大多数Linux服务器被入侵,入口无非这三个:
- SSH暴力破解:攻击者用字典撞你的22端口,密码设得简单点,几分钟就沦陷。
- 应用层漏洞:Web服务、数据库、中间件没打补丁,被利用后直接提权。
- 配置疏忽:比如Redis未授权访问、MySQL弱口令、不必要的端口暴露在公网。
所以,安全加固的本质是收敛攻击面:能关的端口全关,能限的权限全限,能加的验证全加。下面这套SOP就是围绕这个思路展开的。
二、生产环境架构规范:从买机器那一刻就要想清楚
💡 延伸阅读:告别命令行焦虑:三款主流开源Docker管理平台深度横评,到底谁才是运维神器?
很多安全问题其实是架构阶段埋下的雷。笔者建议,如果你准备正经跑业务,别贪便宜买那种超售严重的灵车机器,选个靠谱的云厂商,至少网络层有基础防护。另外,域名务必走正规注册商,别用来历不明的免费域名,否则哪天解析被劫持了你都不知道。
架构上遵循三个原则:
- 最小暴露原则:只有负载均衡或反向代理暴露80/443,后端应用服务器只开内网端口。
- 分层隔离:Web层、应用层、数据层分在不同子网,安全组严格限制来源IP。
- 跳板机机制:生产服务器禁止直接SSH公网登录,必须通过堡垒机(跳板机)中转。
三、安全加固调优清单(核心实操)
💡 深度技术指南:Linux服务器配置踩坑实录:SSH连不上、Nginx报502、磁盘满了?这几个高频故障站长帮你排明白了
假设你现在拿到一台全新的CentOS/Ubuntu服务器,按顺序执行以下步骤。
3.1 账户与登录安全
第一步:创建普通用户并禁用root远程登录
# 创建运维用户
useradd -m -s /bin/bash opsadmin
passwd opsadmin
# 赋予sudo权限
echo "opsadmin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/opsadmin
chmod 440 /etc/sudoers.d/opsadmin
# 修改SSH配置
vim /etc/ssh/sshd_config
关键参数高亮:
PermitRootLogin no—— 禁止root直接登录PasswordAuthentication no—— 禁用密码认证,只用密钥Port 59222—— 改掉默认22端口,能挡掉80%的扫描AllowUsers opsadmin—— 白名单机制,只允许特定用户登录
改完后重启SSH:systemctl restart sshd。注意,重启前先确保你的密钥能登录,别把自己关在门外。
第二步:配置SSH密钥登录
# 本地生成密钥对
ssh-keygen -t ed25519 -C "opsadmin@prod"
# 上传公钥到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 59222 opsadmin@your_server_ip
3.2 防火墙与端口收敛
云厂商的安全组是第一道墙,服务器本机的防火墙是第二道。笔者习惯用firewalld或ufw,规则越简单越好。
# Ubuntu示例
ufw default deny incoming
ufw default allow outgoing
ufw allow 59222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
然后检查监听端口:ss -tulnp。任何你不认识的端口,一律关掉。比如MySQL的3306、Redis的6379,绝对不要暴露在公网。
3.3 系统层内核加固
编辑/etc/sysctl.conf,加入以下参数:
# 防止SYN洪水攻击
net.ipv4.tcp_syncookies = 1
# 禁止ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
# 禁止源路由
net.ipv4.conf.all.accept_source_route = 0
# 开启IP欺骗保护
net.ipv4.conf.all.rp_filter = 1
执行sysctl -p生效。
3.4 自动化安全工具部署
手动加固只是一时,持续防护得靠工具。笔者强烈建议装两个东西:
- Fail2ban:监控日志,自动封禁暴力破解IP。配置
/etc/fail2ban/jail.local,把bantime设为3600秒,maxretry设为3次。 - AIDE:文件完整性检查,每天对比关键目录的哈希值,发现篡改立刻告警。
四、验证测试与SOP总结
加固完不是就完事了,你得验证。笔者通常做这几项检查:
| 检查项 | 命令/方法 | 预期结果 |
|---|---|---|
| SSH端口 | nmap -p 22,59222 your_ip |
22关闭,59222开放 |
| root登录 | ssh root@your_ip |
拒绝访问 |
| 防火墙规则 | ufw status verbose |
仅放行必要端口 |
| Fail2ban状态 | fail2ban-client status sshd |
显示封禁列表 |
最后,把这套流程固化成SOP文档,每台新机器上线前必须过一遍。安全不是一次性的任务,而是持续的习惯。笔者见过太多人加固完就忘了,半年后漏洞库更新了也不管,结果还是被扫进去。
另外提醒一句,如果你的业务对稳定性要求高,别在主力服务器上直接改SSH配置,先开一台测试机跑通流程。还有,云服务器的快照功能一定要用起来,改配置前打个快照,出问题能秒回滚。
安全这件事,投入产出比极高。花一个下午把上面这些做完,往后几年你都能睡个安稳觉。
相关技术专题与延伸阅读
- Docker容器到底该怎么跑?聊聊我从踩坑到上生产的标准流程
- 告别命令行焦虑:三款主流开源Docker管理平台深度横评,到底谁才是运维神器?
- Linux服务器配置踩坑实录:SSH连不上、Nginx报502、磁盘满了?这几个高频故障站长帮你排明白了
- 深入Docker源代码:从镜像构建到容器运行的底层架构与性能调优实战
📦 【资源免费领】本文全套实操配置文件与避坑手册下载
本文涉及的全套 Docker Compose 配置文件、服务器运维避坑清单及 AI 提效指令库已完整打包,可免费极速转存:
💡 提示:推荐使用手机【夸克网盘 App】打开保存,新用户首月免费赠送 1TB 超大空间与免流量极速下载特权。