Linux服务器基线配置实战:从零开始加固你的云主机
为什么你需要一份Linux服务器基线
刚买回来的云主机(比如阿里云、腾讯云、华为云),默认配置下可能存着不少安全隐患——root远程登录、默认SSH端口22、防火墙没开、老旧软件包……这些“裸奔”状态很容易被攻击者盯上。Linux服务器基线就是指一套基础的安全配置标准,把它跑一遍,相当于给你的服务器穿上第一层铠甲。
本文完全面向零基础,每一步都会给出确切的命令和操作路径,你只要跟着复制粘贴就能搞定。
动手前的三点准备
- 系统环境:本文基于CentOS 7/8和Ubuntu 20.04/22.04,其他发行版命令可能略有差异,但思路通用。
- 连接工具:建议使用Xshell、Putty(Windows)或终端(macOS/Linux)通过SSH登录你的服务器。当前阶段请保持原有的root用户和密码登录方式,等配置完成后再做收紧。
- 备份意识:修改关键配置文件前,最好先用
cp命令备份原文件,例如cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak,万一改坏了还能恢复。
分步操作:搭建你的基线
1. 创建普通管理员用户并禁用root远程登录
使用root登录后,先建一个普通用户用于日常工作。
以创建用户 ops 为例:
useradd -m ops
echo 'YourStrongPassword123!' | passwd --stdin ops # CentOS
# Ubuntu用下面这行替代:
# echo 'ops:YourStrongPassword123!' | chpasswd
给 ops 添加sudo权限:
usermod -aG wheel ops # CentOS
usermod -aG sudo ops # Ubuntu
切换身份测试一下:
su - ops
sudo whoami
如果输出 root,说明sudo配置成功。
现在修改SSH配置文件禁止root登录:
sudo sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
注意:改动后一定要保持当前root窗口不关,另开一个新窗口用 ops 用户测试能否sudo成功。
如果新窗口连不上,你还能用旧窗口回滚。
2. 修改SSH端口并限制登录方式
默认端口22是扫描器的首选目标。
把SSH端口改成一个高位端口(比如22022)。
编辑配置文件:
sudo vim /etc/ssh/sshd_config
找到 #Port 22,改成 Port 22022。
同时建议关闭密码登录,启用密钥认证(这里先简单关闭密码,提前准备好密钥):
PasswordAuthentication no
PubkeyAuthentication yes
保存退出后重启SSH:
sudo systemctl restart sshd
然后千万别关当前窗口,新开一个窗口用新端口连接测试:ssh ops@你的服务器IP -p 22022。
能连上再关闭旧窗口。
3. 配置防火墙(iptables/firewalld/ufw)
一般云厂商在控制台提供安全组,但服务器内部防火墙也要打开做二次防护。
- CentOS使用firewalld:
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-port=22022/tcp
sudo firewall-cmd --permanent --remove-service=ssh # 去掉默认ssh服务
sudo firewall-cmd --reload
- Ubuntu使用ufw:
sudo ufw allow 22022/tcp
sudo ufw --force enable
查看防火墙状态确认新端已经放行:
sudo firewall-cmd --list-ports # CentOS
sudo ufw status # Ubuntu
4. 系统更新与基础安全工具
保持软件包最新是基线的重要一环。
sudo yum update -y # CentOS
sudo apt update && sudo apt upgrade -y # Ubuntu
安装常用安全工具:
sudo yum install -y fail2ban # CentOS
sudo apt install -y fail2ban # Ubuntu
Fail2ban能自动封禁多次尝试登录失败的IP。
启动它:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
避坑指南:新手最易翻车的三个点
- 修改SSH后自己连不上:永远要保留一个已登录的root窗口做“逃生通道”。改配置、重载服务后务必另开窗口测试,旧窗口不要关。
- 防火墙规则把管理端口堵死:如果启用了防火墙,一定要先放行新SSH端口再移除旧规则。否则防火墙生效时,你连进去的通道也会被切断。
- 忘记备份关键文件:
/etc/ssh/sshd_config和/etc/fail2ban/jail.local改前都备份一下,出错时能一键还原。
效果验证:怎么知道基线生效了?
- root远程登录:用root用户尝试SSH连接,提示“Permission denied (publickey)”或直接被拒绝,表示禁用成功。
- SSH端口:扫描你的服务器端口,22已关闭,22022开放。可用在线端口扫描工具或用命令
nmap -p 22,22022 你的服务器IP(需安装nmap)。 - 防火墙规则:
sudo firewall-cmd --list-all或sudo ufw status verbose能看到只开放了必要的端口。 - Fail2ban状态:
sudo fail2ban-client status应显示Status为正常。可以查看/var/log/fail2ban.log确认有监控行为。 - 系统更新:
yum check-update或apt list --upgradable显示没有待更新的安全包。
结语
完成这套Linux服务器基线配置后,你的服务器已经从“裸奔”变成了“有盔甲”状态。
后续你可以根据业务需求继续加固(比如配置SELinux、审计日志、入侵检测等)。
如果你正在处理Linux服务器基线,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
安全无小事,从基线开始,步步为营。