新手也能懂的Linux服务器安全基线搭建指南
为什么要做 Linux 服务器安全基线
刚买的云服务器或者自己搭的 Linux 机器,默认配置存在大量安全隐患。安全基线就是一套统一的最低安全要求,做完之后能挡住 80% 的自动扫描和弱口令攻击。
下面我用最简单的方式带你一步步完成。
准备工作:检查系统版本和依赖
登录服务器后先确认系统类型和版本,后面的命令可能因发行版而异。
执行:
cat /etc/os-release
uname -r推荐使用 CentOS 7/8、Ubuntu 20.04/22.04。
你需要有 sudo 或 root 权限。
分步操作:五大安全加固点
1. 禁用 root 远程登录,创建普通用户
直接使用 root 登录风险极高。
创建一个 sudo 用户:
useradd -m admin_user
passwd admin_user
usermod -aG wheel admin_user # CentOS 用 wheel,Ubuntu 用 sudo然后编辑 SSH 配置文件:
sudo vim /etc/ssh/sshd_config找到 PermitRootLogin 改为 no,PasswordAuthentication 改为 no(如果你已经配好了密钥)。
保存后重启 SSH:
sudo systemctl restart sshd注意: 修改前先保持当前连接不关,另开一个终端测试新用户能否登录,避免把自己锁在外面。
2. 配置密钥登录并禁用密码登录
生成密钥对(在本地电脑执行):
ssh-keygen -t ed25519将公钥复制到服务器:
ssh-copy-id -i ~/.ssh/id_ed25519.pub admin_user@你的服务器IP确认密钥登录成功后,再把 SSH 配置里的 PasswordAuthentication 设为 no。
3. 加固防火墙:只放行必要端口
使用 ufw(Ubuntu)或 firewalld(CentOS)。
以 CentOS 为例:
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all只开放你需要的端口,关闭其他所有端口。
4. 设置文件权限和自动更新
关键目录权限加固:
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/passwd
sudo chattr +i /etc/passwd /etc/shadow /etc/group开启安全更新自动安装(以 Ubuntu 为例):
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades选择“是”即可。
5. 开启日志审计和失败登录锁定
安装 fail2ban 防止暴力破解:
sudo apt install fail2ban -y # Ubuntu
sudo yum install epel-release -y && sudo yum install fail2ban -y # CentOS配置 /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 600启动并设为开机自启:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban避坑指南:新手最常犯的三个错误
- 改 SSH 配置后忘重启服务 – 修改
/etc/ssh/sshd_config后一定要重启sshd,否则新配置不生效。 - 没有保留一个备用连接 – 修改 root 登录或端口时,先开第二个终端验证,否则改错了只能连 VNC 或重装系统。
- 防火墙规则叠加混乱 – 先
--remove-port=xxx清理旧规则,再添加新规则,避免多规则冲突。
效果验证:快速检查你的安全基线是否达标
执行以下命令检查关键项:
# 检查 root 远程登录是否禁用
sudo grep PermitRootLogin /etc/ssh/sshd_config
检查密码登录是否禁用
sudo grep PasswordAuthentication /etc/ssh/sshd_config
检查防火墙开放端口
sudo firewall-cmd --list-all # 或 sudo ufw status
检查 fail2ban 状态
sudo systemctl status fail2ban
检查关键文件是否被锁定
lsattr /etc/passwd
如果所有输出都符合预期(比如 PermitRootLogin no、PasswordAuthentication no、
只有必要端口开放、
fail2ban 运行中),
那么你的 Linux 服务器安全基线 就初步建成了。
后续还可以加入入侵检测(如 AIDE)和定期安全扫描,但以上五步已经能拦住大部分常见攻击。
遇到异常时,优先检查日志 /var/log/auth.log 或 /var/log/secure。