一、引言:你的服务器可能正在“裸奔”
💡 推荐阅读:Nginx反向代理配置后页面全乱了?资深站长手把手排查:是缓存、路径还是Header的锅?
很多站长或运维朋友都有过这样的经历:高高兴兴地把网站部署上线,结果没几天就发现CPU占用率飙升、带宽跑满,或者更惨——被植入了挖矿脚本,甚至数据库被删勒索。笔者早年也吃过亏,一台刚买的云服务器,因为图方便用了默认端口和弱密码,不到24小时就被扫描器攻破,沦为肉鸡。
其实,Linux服务器被入侵,绝大多数情况并非黑客技术多高超,而是我们忽视了最基本的安全基线。这篇文章不聊虚的,直接上干货。笔者会从一台全新的CentOS Stream 9(或Ubuntu 22.04)系统开始,手把手带你走一遍必须做的安全加固流程。整个过程大约需要30分钟,却能挡掉90%以上的自动化攻击。
二、环境准备与前置要求
💡 延伸阅读:Nginx反向代理配置前端:从入门到生产环境的最佳实践调优指南
在开始操作之前,请确保你具备以下条件:
- 一台安装了Linux发行版(本文以CentOS Stream 9 / Rocky Linux 9为例)的云服务器或虚拟机。
- 拥有sudo或root权限的终端访问能力。
- 建议使用密钥对登录,而非纯密码登录(后续步骤会详细说明)。
三、详细实操步骤:从入门到加固
💡 深度技术指南:云服务器配置参数怎么选?CPU、内存、带宽避坑指南,附真实排查案例
步骤1:更新系统与核心软件包
这是最基础也是最容易忽略的一步。很多入侵案例是利用了已知的系统漏洞,而这些漏洞往往在官方源中早已修复。
# CentOS / Rocky Linux 系
sudo dnf update -y
# Ubuntu / Debian 系
sudo apt update && sudo apt upgrade -y
更新完成后,建议重启一次系统,确保内核等高危组件生效。
步骤2:创建普通用户并配置sudo权限
永远不要直接用root操作日常任务。我们创建一个具有管理员权限的普通用户,用于日常运维。
# 创建用户(例如用户名:admin)
sudo useradd -m -s /bin/bash admin
# 设置强密码(包含大小写、数字、特殊符号,长度不少于12位)
sudo passwd admin
# 将用户加入wheel组(CentOS)或sudo组(Ubuntu)
sudo usermod -aG wheel admin # CentOS/Rocky
sudo usermod -aG sudo admin # Ubuntu
步骤3:配置SSH密钥登录并禁用密码登录
这是防暴力破解的核心手段。密钥登录几乎不可能被暴力枚举。我们在本地电脑生成密钥对,然后将公钥上传至服务器。
第一步:本地生成密钥(如果已有可跳过)
# 在本地终端(非服务器)执行
ssh-keygen -t ed25519 -C "your_email@example.com"
# 一路回车即可,默认生成在 ~/.ssh/id_ed25519.pub
第二步:将公钥上传至服务器
# 在本地终端执行,将公钥内容追加到服务器的authorized_keys
ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@你的服务器IP
第三步:修改SSH配置文件
# 使用新用户登录服务器后执行
sudo vim /etc/ssh/sshd_config
# 修改或确认以下内容(务必逐行核对)
Port 2222 # 修改默认端口,避开扫描器(建议10000-65535之间)
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 禁用密码登录(确认密钥能登录后再改!)
PubkeyAuthentication yes # 开启密钥认证
MaxAuthTries 3 # 最大尝试次数
第四步:重启SSH服务
# 验证密钥登录无误后,再执行重启
sudo systemctl restart sshd
# 注意:重启后当前连接不会断开,但请新开一个终端测试新端口登录!
步骤4:配置防火墙(Firewalld / UFW)
防火墙是服务器的第一道大门。我们只放行必要的端口,其余一律拒绝。
# CentOS / Rocky 使用 firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
# 放行新SSH端口(例如2222)
sudo firewall-cmd --permanent --add-port=2222/tcp
# 放行Web服务端口(根据实际需求)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 重新加载防火墙规则
sudo firewall-cmd --reload
# 查看已放行端口
sudo firewall-cmd --list-all
对于Ubuntu系统,使用UFW同样简单:
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
步骤5:配置Fail2ban防暴力破解
即使禁用了密码登录,SSH服务本身仍可能被扫描。Fail2ban会自动检测异常IP并临时封禁,非常实用。
# 安装Fail2ban
sudo dnf install epel-release -y # CentOS先装EPEL源
sudo dnf install fail2ban -y
# 创建本地配置文件
sudo vim /etc/fail2ban/jail.local
# 写入以下内容
[DEFAULT]
bantime = 1h # 封禁时间1小时
findtime = 10m # 10分钟内
maxretry = 5 # 失败5次即封禁
[sshd]
enabled = true
port = 2222 # 这里改成你的实际SSH端口
logpath = %(sshd_log)s
action = firewallcmd-ipset
# 启动并设置开机自启
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
# 查看封禁状态
sudo fail2ban-client status sshd
步骤6:禁用不必要的系统服务与端口
最小化原则是安全的核心。检查系统开启了哪些端口,关掉那些用不到的服务。
# 查看监听端口
sudo ss -tulnp
# 常见的危险端口:23(telnet)、3306(MySQL)暴露公网、6379(Redis)未设密码等。
# 如果MySQL/Redis仅本机使用,务必监听127.0.0.1
# 修改MySQL监听地址:
sudo vim /etc/my.cnf.d/mariadb-server.cnf
# 确保 bind-address = 127.0.0.1
步骤7:配置自动安全更新
安全漏洞层出不穷,手动更新难免遗漏。配置系统自动安装安全补丁,省心省力。
# CentOS/Rocky 使用 dnf-automatic
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer
# Ubuntu 使用 unattended-upgrades
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
# 选择“是”即可
四、避坑清单(血泪经验总结)
| 常见错误 | 后果 | 正确做法 |
|---|---|---|
| SSH端口没改,密码简单 | 24小时内必被扫描爆破 | 修改端口 + 密钥登录 + Fail2ban |
| 防火墙规则没配就上线 | 数据库/Redis端口暴露公网 | 先配置防火墙再启动服务 |
| 用root直接跑Web服务 | 一旦Web漏洞被利用,攻击者直接获得root权限 | 使用低权限用户运行Nginx/PHP-FPM |
| 忽略系统更新 | 已知漏洞被利用,如Log4j、脏牛等 | 配置自动安全更新 |
五、总结与建议
经过以上七个步骤,你的Linux服务器已经具备了一套基本但非常有效的安全防御体系。这套方案能抵御绝大多数自动化扫描和暴力破解攻击。当然,安全是一个持续的过程,不是一劳永逸的。建议定期(每月)检查一次系统日志(journalctl -xe)和登录记录(last -f /var/log/btmp),关注安全公告。
最后,笔者想说一句真心话:服务器的地基(硬件与网络)同样重要。 笔者早年贪便宜买的小水管服务器,不仅性能差,还经常被DDoS打瘫。后来换了一台靠谱的云服务商(建议选择大厂或口碑好的老牌服务商),配合本文的加固策略,网站已经稳定运行了很长时间。如果你还在为选择哪家服务器发愁,不妨多看看用户真实评价,选择带免费基础防护(如DDoS清洗、CC防御)的机型,能帮你省下不少精力。
希望这篇实操指南能帮你少走弯路。如果你在加固过程中遇到任何问题,欢迎在评论区留言交流,笔者看到后会尽力解答。
相关技术专题与延伸阅读
- Nginx反向代理配置后页面全乱了?资深站长手把手排查:是缓存、路径还是Header的锅?
- Nginx反向代理配置前端:从入门到生产环境的最佳实践调优指南
- 云服务器配置参数怎么选?CPU、内存、带宽避坑指南,附真实排查案例
- 云服务器到底怎么选?从购买到部署的全流程实操评测指南,新手也能看懂
📦 【资源免费领】本文全套实操配置文件与避坑手册下载
本文涉及的全套 Docker Compose 配置文件、服务器运维避坑清单及 AI 提效指令库已完整打包,可免费极速转存:
💡 提示:推荐使用手机【夸克网盘 App】打开保存,新用户首月免费赠送 1TB 超大空间与免流量极速下载特权。