前面我们掌握防火墙策略,做好网络访问防护。但防火墙只是外部防线,如果系统本身存在大量安全短板,黑客依然能够暴力破解、入侵服务器。
今天分享一套可以直接落地的 Linux服务器安全加固方案,适用于云服务器、物理机,包含SSH加固、账号权限、密码策略、系统风险管控、日常巡检清单。线上服务器上线前,建议逐项配置!
一、今日学习目标
✅ SSH远程登录全方位安全优化,抵御暴力破解
✅ 禁用root远程登录,规范普通账号权限
✅ 配置密码复杂度、登录失败限制
✅ sudo权限精细化管理,避免权限泛滥
✅ 关闭无用服务、禁用危险功能
✅ 整理服务器常态化安全巡检清单
二、重中之重:SSH服务加固(入侵最高频发点)
SSH配置文件路径: /etc/ssh/sshd_config
bash
vim /etc/ssh/sshd_config
推荐修改项
1. 禁止root账号远程登录(必开)
plaintext
PermitRootLogin no
后续使用普通账号登录,需要管理员权限再切换root
2. 修改默认22端口(可选,降低扫描概率)
plaintext
Port 22022
⚠️ 修改端口前,防火墙、云服务器安全组同步放行新端口,防止远程失联!
3. 关闭密码登录,优先使用密钥登录(生产强烈推荐)
plaintext
PasswordAuthentication no
4. 空闲超时自动断开连接
plaintext
ClientAliveInterval 300
ClientAliveCountMax 3
空闲5分钟自动踢下线
修改完成重启sshd服务生效
bash
systemctl restart sshd
SSH免密密钥登录回顾
本地生成密钥 ssh-keygen
公钥上传服务器 ssh-copy-id user@ip
开启密钥登录后,可以彻底关闭密码认证,杜绝暴力破解。
三、账号与密码安全策略
1. 创建普通运维账号,禁止日常直接使用root
bash
useradd ops
passwd ops
2. 配置密码复杂度策略
配置文件 /etc/security/pam.d/system-auth (CentOS)
Ubuntu路径 /etc/pam.d/common-password
设置规则:密码长度不少于8位,包含大小写、数字、符号。
3. 限制登录失败次数,防止暴力破解(pam模块)
连续5次密码错误,锁定账号10分钟,阻挡暴力猜密码
bash
vim /etc/pam.d/sshd
# 添加内容
auth required pam_tally2.so onerr=fail deny=5 unlock_time=600
4. 清理无用账号
bash
# 查看所有系统账号
cat /etc/passwd
# 删除长期闲置不用的账号
userdel 用户名
四、sudo权限精细化管控
很多运维直接给普通账号ALL全部权限,风险极高。遵循最小权限原则。
sudo配置文件: visudo (不要直接vim编辑,自带语法校验)
示例:允许ops账号只能执行systemctl、nginx相关命令,禁止任意root权限
plaintext
ops ALL=(ALL) /usr/bin/systemctl,/usr/bin/nginx
禁止配置(高危写法):
plaintext
ops ALL=(ALL) NOPASSWD: ALL
五、系统基础风险加固
1. 关闭不需要开机自启的无用服务
bash
# 查看全部自启服务
systemctl list-unit-files --type=service
# 关闭不必要服务
systemctl disable postfix
2. 禁止ICMP ping(可选,防止被扫描探测)
bash
echo net.ipv4.icmp_echo_ignore_all=1 >> /etc/sysctl.conf
sysctl -p
3. 内核参数优化,抵御简单DDOS、网络攻击
bash
vim /etc/sysctl.conf
# 防止SYN攻击
net.ipv4.tcp_syncookies = 1
# 禁止IP转发(非网关服务器)
net.ipv4.ip_forward = 0
4. 文件权限安全
重要配置设置严格权限,防止普通用户篡改
bash
chmod 600 /etc/shadow
chmod 644 /etc/passwd
六、审计与日志监控,方便入侵追溯
1. 保证rsyslog日志服务持续运行,留存登录日志
bash
systemctl enable --now rsyslog
2. 重点定期查看登录日志,发现异常登录IP
bash
# 查看ssh登录记录
lastlog
last
# 查看失败登录
grep "Failed password" /var/log/secure
如果大量陌生IP持续尝试登录,及时在防火墙拉黑IP。
七、自动化安全巡检清单(日常运维定期执行)
把下面命令整理成巡检脚本,定期执行:
bash
#1. 查看异常登录
last
#2. 查看监听端口,发现陌生对外开放端口
ss -tulnp
#3. 查看可疑进程
ps -ef
#4. 检查账号权限,是否新增未知账号
cat /etc/passwd
#5. 防火墙规则核查
firewall-cmd --list-all
#6. 磁盘占用、查找超大未知文件
df -h && du -sh /*
八、加固避坑重要提醒
1. 禁止先断开所有远程连接再修改SSH配置!
修改sshd配置后,新开一个终端窗口测试登录,确认正常再关闭原有连接,防止配置错误无法远程。
2. 修改SSH端口后,防火墙、云平台安全组双向放行。
3. 不要一味依赖加固策略,定期升级系统补丁:
bash
# CentOS
yum update -y
# Ubuntu
apt update && apt upgrade -y
4. 重要服务器尽量不要直接暴露公网,可通过跳板机登录。
九、今日实操作业
bash
#1. 打开sshd配置文件,熟悉各项安全参数
vim /etc/ssh/sshd_config
#2. 创建普通测试账号,练习配置sudo有限权限
visudo
#3. 查看历史登录日志,检查是否存在异常登录IP
last
grep "Failed password" /var/log/secure
#4. 查看系统自启服务,识别无用程序
systemctl list-unit-files --type=service
十、今日知识点总结
1. SSH是入侵重灾区:禁root远程、密钥登录、修改端口、超时断开是核心手段
2. 账号安全:最小权限原则,不日常使用root操作服务器
3. sudo严格限制可执行命令,杜绝全盘开放权限
4. 利用pam模块限制密码错误次数,抵御暴力破解
5. 内核参数、无用服务清理进一步缩小攻击面
6. 常态化查看登录日志,及时发现入侵行为
✅ 到今天,网络防火墙 + 系统加固双线安全体系搭建完成!
实操过程中遇到报错或者疑问,欢迎在评论区留言一起探讨。关注「嘟嘟嘟的运维冒险」,持续更新Linux实战学习干货。