本文适配 CentOS 7+/RHEL/ 阿里云 Linux、Ubuntu 20.04+ 主流 Linux 发行版,所有操作均经过生产环境验证,命令可直接复制执行,覆盖服务器初始化核心安全加固步骤,杜绝弱口令、暴力破解、未授权访问等 90% 以上的高频安全风险,篇幅精简,新手也能零门槛落地。
一、系统初始化基础配置
1. 更新系统补丁与源
修复系统已知漏洞,是安全加固的基础,直接复制对应系统命令执行:
bash
运行
# CentOS/RHEL 系统
yum update -y && yum upgrade -y
# Ubuntu/Debian 系统
apt update && apt upgrade -y
2. 禁用非必要服务
关闭不必要的系统服务,减少攻击面:
bash
运行
# 查看所有开机自启服务
systemctl list-unit-files --type=service | grep enabled
# 禁用不需要的服务(示例,根据业务需求调整)
systemctl disable --now postfix # 非必要邮件服务
systemctl disable --now rpcbind # 非必要远程调用服务
3. 时区与时间同步配置
保证日志时间准确,便于后续安全审计:
bash
运行
# 设置时区为上海
timedatectl set-timezone Asia/Shanghai
# 开启系统时间同步
timedatectl set-ntp yes
# 验证时间配置
timedatectl
二、SSH 服务核心安全加固
SSH 是黑客暴力破解的头号目标,配置修改后,先保留当前会话,新开窗口测试登录,确认正常再关闭原会话,避免锁死服务器。
1. 核心配置修改
编辑 SSH 配置文件 vi /etc/ssh/sshd_config,可直接复制以下内容到文件末尾:
ini
# 1. 修改SSH默认端口(建议10000-65535之间,避免常规扫描)
Port 28922
# 2. 禁用root用户直接登录(必须先创建普通管理员用户再开启)
PermitRootLogin no
# 3. 禁用空密码登录
PermitEmptyPasswords no
# 4. 最大认证尝试次数,超过自动断开
MaxAuthTries 3
# 5. 无操作5分钟自动断开
ClientAliveInterval 300
ClientAliveCountMax 2
# 6. 禁用不安全的DNS反向解析,提升登录速度
UseDNS no
# 7. 开启密钥登录,测试正常后再禁用密码登录
PubkeyAuthentication yes
# PasswordAuthentication no
2. 配置生效与验证
bash
运行
# 1. 验证SSH配置语法是否有误
sshd -t
# 2. 无报错后重载SSH服务
systemctl reload sshd
# 3. 新开终端测试新端口登录
ssh -p 28922 你的用户名@服务器IP
3. 密钥登录配置(推荐,彻底杜绝密码暴力破解)
bash
运行
# 本地电脑执行:生成SSH密钥对(Windows在Git Bash/PowerShell执行)
ssh-keygen -t ed25519 -C "你的服务器备注"
# 本地执行:将公钥上传到服务器
ssh-copy-id -p 28922 你的用户名@服务器IP
# 服务器验证:确认公钥已写入
cat ~/.ssh/authorized_keys
# 密钥登录测试正常后,取消sshd_config中PasswordAuthentication的注释,禁用密码登录
三、防火墙极简配置
只开放业务需要的端口,默认拒绝所有外部访问,分系统直接复制执行。
CentOS/RHEL 系统(firewalld)
bash
运行
# 1. 开启防火墙
systemctl enable --now firewalld
# 2. 放行已修改的SSH端口(必须和sshd_config端口一致)
firewall-cmd --permanent --add-port=28922/tcp
# 3. 放行业务端口(示例,按需添加)
firewall-cmd --permanent --add-port=80/tcp # HTTP
firewall-cmd --permanent --add-port=443/tcp # HTTPS
# 4. 重载配置生效
firewall-cmd --reload
# 5. 查看已放行端口
firewall-cmd --list-ports
Ubuntu/Debian 系统(ufw)
bash
运行
# 1. 安装并开启防火墙
apt install -y ufw
systemctl enable --now ufw
# 2. 放行SSH端口
ufw allow 28922/tcp
# 3. 放行业务端口
ufw allow 80/tcp
ufw allow 443/tcp
# 4. 开启默认拒绝规则,启用防火墙
ufw default deny incoming
ufw default allow outgoing
ufw enable
# 5. 查看规则列表
ufw status
四、用户权限与口令安全
1. 创建普通管理员用户
bash
运行
# 创建用户(替换username为你的用户名)
useradd username
# 设置用户密码
passwd username
# 给用户添加sudo权限(CentOS)
usermod -aG wheel username
# 给用户添加sudo权限(Ubuntu)
usermod -aG sudo username
# 测试sudo权限
su - username
sudo whoami # 输出root即为配置成功
2. 密码复杂度配置
强制设置高强度密码,杜绝弱口令:
bash
运行
# CentOS系统
vi /etc/pam.d/system-auth
# 添加以下配置:密码最短8位,必须包含大小写+数字+特殊字符
password requisite pam_cracklib.so retry=3 minlen=8 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
# Ubuntu系统
apt install -y libpam-cracklib
vi /etc/pam.d/common-password
# 添加同上的复杂度配置
五、防暴力破解一键配置
安装 fail2ban,自动封禁多次登录失败的 IP,彻底杜绝暴力破解:
bash
运行
# 1. 安装fail2ban
# CentOS系统
yum install -y fail2ban
# Ubuntu系统
apt install -y fail2ban
# 2. 配置SSH防护规则
vi /etc/fail2ban/jail.d/sshd.conf
# 复制以下内容:5分钟内3次登录失败,封禁IP24小时
[sshd]
enabled = true
port = 28922 # 替换为你的SSH端口
filter = sshd
logpath = /var/log/secure # Ubuntu改为/var/log/auth.log
maxretry = 3
findtime = 300
bantime = 86400
ignoreip = 127.0.0.1 # 可添加信任IP,避免自己被封禁
# 3. 启动服务并设置开机自启
systemctl enable --now fail2ban
# 4. 查看封禁状态
fail2ban-client status sshd
六、加固验证核心命令
bash
运行
# 1. 验证SSH配置是否生效
sshd -T | grep -E "Port|PermitRootLogin|PasswordAuthentication"
# 2. 验证防火墙规则
# CentOS: firewall-cmd --list-all
# Ubuntu: ufw status
# 3. 验证fail2ban运行状态
systemctl status fail2ban
# 4. 查看登录日志,排查异常
# CentOS: tail -n 50 /var/log/secure
# Ubuntu: tail -n 50 /var/log/auth.log
以上步骤完成后,即可覆盖服务器 90% 以上的常规安全风险,所有配置均为生产环境通用标准,无冗余操作,可直接落地。后续可根据业务需求,补充 WAF 防护、文件完整性校验等进阶配置。

