服务器运维安全最佳实践:新手也能上手的6个关键步骤
刚接触服务器运维时,很多人最先遇到的问题就是“怎样让服务器不被入侵”。
其实服务器运维安全最佳实践并不神秘,只要按顺序做好几项基础配置,就能挡住绝大多数常见攻击。
下面我从零开始,带你一步步操作。
准备工作
你需要一台 Linux 服务器(本文以 Ubuntu 22.04 为例),以及一个能连上服务器的 SSH 客户端(比如 Windows 上的 PuTTY 或直接使用系统终端)。
已通过 root 用户或具有 sudo 权限的用户登录。
如果还没有服务器,可以先随便买一台便宜的云主机练手。
第一步:禁用 root 直接登录,改用普通用户
用 root 直接登录风险极高,因为它的名称固定,容易被暴力破解。
先创建一个普通用户并赋予 sudo 权限:
adduser admin # 创建用户 admin,按提示设置密码
usermod -aG sudo admin # 将 admin 加入 sudo 组
然后退出当前 root 会话,用 admin 重新登录。
登录后测试一下 sudo 是否正常:
sudo whoami # 应输出 root
接下来修改 SSH 配置文件禁止 root 登录:
sudo sed -i 's/^#?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
之后再用 root 直接登录就会失败。
第二步:使用 SSH 密钥替代密码认证
密码容易被猜测或盗取,密钥认证 是目前最安全的登录方式。
在本地电脑(不是服务器)生成密钥对:
ssh-keygen -t ed25519 -f ~/.ssh/server_key # 一路回车,可以设置口令保护私钥
公钥文件是 ~/.ssh/server_key.pub。
将公钥内容复制到服务器的 ~/.ssh/authorized_keys 文件(假设你之前用 admin 登录):
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
接着修改 SSH 配置文件关闭密码登录:
sudo sed -i 's/^#?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
验证:保持当前连接不退出,另开一个终端用私钥文件尝试登录:ssh -i ~/.ssh/server_key admin@你的服务器IP。
如果成功再关掉原来的连接。
第三步:开启防火墙并限制入站规则
防火墙是服务器的第一道门。
推荐使用 UFW(Ubuntu 默认方便工具):
sudo ufw allow OpenSSH # 放行 SSH 端口(默认22)
sudo ufw enable # 启用防火墙
sudo ufw status verbose # 查看规则
如果运行了网站(HTTP/HTTPS),还要放行 80 和 443 端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
避坑:一定先放行 SSH 再启用防火墙,否则自己会被拦在外面。
第四步:安装 Fail2Ban 拦截恶意攻击
Fail2Ban 能自动扫描日志,发现多次登录失败就临时封禁 IP。
安装并启用:
sudo apt update && sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 建立本地配置
sudo systemctl enable --now fail2ban
默认会对 SSH 进行保护。
可以检查状态:
sudo fail2ban-client status
sudo fail2ban-client status sshd # 查看封禁列表
如果想自定义封禁时间或最大尝试次数,编辑 /etc/fail2ban/jail.local 中的 [sshd] 部分。
第五步:保持系统和安全更新
很多入侵都是利用已知漏洞,所以及时更新无比重要。
设置自动安全更新:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades # 选择 Yes 启用
你也可以手动定期执行:
sudo apt update && sudo apt upgrade -y
建议至少每月检查一次。
避坑指南与高频问题
- 防火墙规则顺序:UFW 按添加顺序执行,禁止规则应放在允许之后。如果不小心把自己封了,可以通过云控制台的 VNC 连接进去重置。
- 密钥权限错误:服务器上
~/.ssh目录必须是 700,authorized_keys文件必须是 600,否则 SSH 会忽略密钥。可以用chmod修正。 - Fail2Ban 误封:如果自己多次输错密码可能导致 IP 被 Ban。可以用
sudo fail2ban-client set sshd unbanip 你的IP解封。 - 忘记放行其他端口:添加规则后记得
sudo ufw reload或重启。
效果验证
全部完成后,从本地尝试用密码登录服务器应该会被拒绝;
用错误的私钥登录也会失败;
查看 /var/log/auth.log 会看到大量认证失败的记录,但 Fail2Ban 已经自动处理。
通过 sudo ufw status 确认防火墙规则,sudo fail2ban-client status sshd 确认有监控活动。
服务器运维安全最佳实践 不是一次性的任务,而是持续的习惯。
建议把这几个步骤作为新服务器初始化时的标准流程,之后再根据业务需求添加其他安全措施。
遇到问题先回看本文的避坑部分,一般都能解决。
祝你运维顺利!