运维新手零基础入门:7步完成服务器安全基础配置
前置准备
开始之前,你需要准备好以下环境:
- 一台云服务器(推荐腾讯云或阿里云的最低配ECS,系统选Ubuntu 22.04或CentOS 7+)。
- SSH客户端:Windows用户推荐用 Putty 或 Termius,Mac/Linux用户直接使用终端。
- 一个非root用户:*新手建议不要在root下操作,容易误删系统文件*。操作步骤里会教你创建。
- 已开放端口:提前在云服务商安全组/防火墙放行 22(SSH)、80(HTTP)、443(HTTPS) 端口。
注意:以下所有命令基于Ubuntu 22.04,如果你用CentOS,请将apt替换为yum。
分步操作
第一步:更新系统包
连接服务器后,先更新软件源和现有软件包:
sudo apt update && sudo apt upgrade -y这一步可以修复很多已知漏洞,是运维的基础步骤。
第二步:创建普通用户并赋予sudo权限
sudo adduser yourname # 创建用户,按提示设置密码
sudo usermod -aG sudo yourname # 将用户加入sudo组之后退出root,使用新用户登录。
第三步:配置SSH密钥登录并禁止密码登录
在本地电脑生成密钥对(如果还没有):
ssh-keygen -t ed25519 -C "your_email" # 一路回车生成密钥将公钥复制到服务器:
ssh-copy-id yourname@服务器IP登录测试:ssh yourname@服务器IP。
确认密钥能登录后,修改SSH配置文件:
sudo nano /etc/ssh/sshd_config找到以下两行,修改为:
PasswordAuthentication no
PubkeyAuthentication yes重启SSH服务:
sudo systemctl restart sshd第四步:安装并配置防火墙(UFW)
sudo apt install ufw -y
sudo ufw allow 22/tcp # 先放行SSH,防止锁死
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable # 启用防火墙
sudo ufw status # 查看状态应为 active第五步:安装fail2ban防止暴力破解
sudo apt install fail2ban -y
sudo systemctl enable fail2ban --now
sudo fail2ban-client status # 检查运行状态
sudo fail2ban-client status sshd # 查看SSH监狱状态默认配置已经保护SSH,你可以根据日志调整封禁时间。
第六步:同步系统时间(NTP)
sudo apt install chrony -y
sudo systemctl enable chrony --now
sudo chronyc sources -v # 验证时间源同步情况时间不同步会导致认证、日志等异常。
第七步:可选——修改SSH默认端口(进阶)
编辑 /etc/ssh/sshd_config,
将 #Port 22 改为 Port 2222,
然后 sudo systemctl restart sshd。记得先在防火墙放行新端口,
再移除22端口规则。
避坑指南
- sudoers文件写错导致用户无法sudo:如果执行
sudo提示permission denied,需要用root账号检查/etc/sudoers文件,确保%sudo ALL=(ALL:ALL) ALL这一行存在且未被注释。如果完全无法切回root,可以通过云服务商后台的VNC或救援模式修复。 - 防火墙忘记放行SSH:开启UFW前务必先执行
sudo ufw allow 22,否则下一命令sudo ufw enable会立刻断开当前SSH连接。如果已经断开,用云服务商Web终端连接后删除UFW规则。 - SSH密钥权限不对:服务器上
.ssh目录权限应为700,authorized_keys文件权限应为600。使用以下命令修正:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys效果验证
完成上述步骤后,按以下清单验证你的运维成果:
- SSH密钥登录:断开当前会话,再次连接,不应该弹出密码输入提示。
- 防火墙状态:执行
sudo ufw status,输出应该包含Status: active和22、80、443端口的ALLOW规则。 - fail2ban保护:执行
sudo fail2ban-client status sshd,显示Total failed: 0(初始状态)。你可以故意输错几次密码,查看ban数量是否增加。 - 时间同步:使用
date命令查看当前时间是否与本地一致。 - 安全登录:尝试用root用户和密码直接SSH,应该被拒绝。
高频问题解答
问题1:忘记root密码怎么办?
答:通过云服务商控制台的“重置密码”功能,或使用救援模式挂载系统后修改 /etc/shadow 文件。更推荐一开始就使用普通用户+sudo,避免需要root密码。
问题2:SSH连接提示 “Permission denied (publickey)”
答:检查三点:① 本地是否使用了正确的私钥;② 服务器端 authorized_keys 文件中是否有你的公钥;③ 服务器 .ssh 目录和文件权限是否正确(参见避坑指南)。
问题3:安装fail2ban后网站访问变慢?
答:一般是日志量过大导致。可以编辑 /etc/fail2ban/jail.local(没有则新建)调整 findtime 和 maxretry 参数,并设置更短的日志清理周期。
最后总结
如果你正在处理运维,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
这套基础配置能抵御绝大多数初级攻击,是运维入门的必备技能。