1. Linux系统安全的重要性与基础认知
在当今数字化时代,Linux系统作为服务器领域的主流操作系统,其安全性直接关系到企业核心数据资产和业务连续性。根据2023年网络安全报告显示,超过78%的服务器攻击事件源于基础安全配置不当。不同于Windows系统,Linux因其开源特性使得安全问题更加透明,但也意味着攻击者同样可以深入研究系统漏洞。
我刚入行时曾负责维护一台被入侵的CentOS服务器,攻击者通过未关闭的SSH弱密码和未更新的sudo漏洞获得了root权限。这次经历让我深刻认识到:Linux安全不是高级技巧的堆砌,而是基础配置的严格执行。安全加固就像给房子装防盗门——不是等小偷来了才后悔没装,而是从一开始就要把每个锁扣拧紧。
Linux安全检查通常包括三个维度:
- 身份认证安全:用户权限、密码策略、SSH配置等
- 系统服务安全:不必要的服务、开放的端口、进程权限等
- 文件系统安全:敏感文件权限、SUID/SGID文件、日志监控等
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础安全检查实战指南
2.1 账户与认证安全检查
首先检查/etc/passwd和/etc/shadow文件权限:
bash复制ls -l /etc/passwd /etc/shadow
# 正确权限应为:-rw-r--r-- root root /etc/passwd
# -rw----- root root /etc/shadow
查看密码策略配置(/etc/login.defs):
bash复制grep "^PASS" /etc/login.defs
# 关键参数建议:
# PASS_MAX_DAYS 90 # 密码最长有效期
# PASS_MIN_DAYS 7 # 密码修改间隔
# PASS_WARN_AGE 14 # 密码过期提醒
检查空密码账户:
bash复制awk -F: '($2 == "") {print $1}' /etc/shadow
实战技巧:使用chage命令修改用户密码策略比直接编辑文件更安全:
bash复制chage -M 90 -m 7 -W 14 username
2.2 网络与服务安全检查
查看开放端口:
bash复制ss -tulnp # 比netstat更推荐
检查不必要的服务:
bash复制systemctl list-unit-files --type=service | grep enabled
关键服务加固示例(SSH):
bash复制vim /etc/ssh/sshd_config
# 必须修改的参数:
Port 22222 # 修改默认端口
PermitRootLogin no # 禁止root直接登录
MaxAuthTries 3 # 最大尝试次数
ClientAliveInterval 300 # 会话超时设置
常见坑点:修改SSH端口后必须确保防火墙放行新端口,否则会导致无法连接:
bash复制firewall-cmd --permanent --add-port=22222/tcp
firewall-cmd --reload
3. 系统级安全加固方案
3.1 内核参数调优
编辑/etc/sysctl.conf进行内核加固:
bash复制# 禁止ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
# 开启SYN Cookie防护
net.ipv4.tcp_syncookies = 1
# 禁用IP转发
net.ipv4.ip_forward = 0
# 启用恶意ICMP错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1
使配置生效:
bash复制sysctl -p
3.2 文件系统防护
查找异常SUID/SGID文件:
bash复制find / -perm /4000 -o -perm /2000 -type f -exec ls -ld {} \;
关键目录权限设置:
bash复制chmod 750 /etc/init.d
chmod 600 /etc/ssh/ssh_host*key
chmod 700 /root
重要原则:遵循最小权限原则,我曾在生产环境因为给日志目录777权限导致被植入挖矿脚本。
4. 高级安全监控与响应
4.1 日志监控配置
集中管理rsyslog配置:
bash复制vim /etc/rsyslog.conf
# 添加关键日志监控:
auth.*;authpriv.* /var/log/auth.log
*.emerg /var/log/syslog
安装并配置auditd审计系统:
bash复制yum install audit -y # CentOS
apt install auditd -y # Ubuntu
# 监控/etc/passwd文件变更
auditctl -w /etc/passwd -p wa -k passwd_change
4.2 入侵检测工具部署
安装配置AIDE(高级入侵检测环境):
bash复制yum install aide -y
aide --init
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# 定期检查:
aide --check
经验分享:AIDE数据库必须离线备份,我遇到过攻击者替换AIDE数据库掩盖入侵痕迹的情况。
5. 安全加固检查清单
根据OWASP Linux安全指南,建议定期检查以下项目:
-
用户与组管理
- 删除无用账户(lp, sync等)
- 检查UID为0的非root账户
- 限制su命令使用(wheel组)
-
SSH安全
- 使用密钥认证替代密码
- 启用TwoFactor认证
- 限制登录IP(AllowUsers)
-
防火墙配置
- 默认策略设置为DROP
- 仅开放必要端口
- 记录异常连接尝试
-
自动更新机制
bash复制# 配置自动安全更新 yum install yum-cron -y vim /etc/yum/yum-cron.conf # 设置: update_cmd = security apply_updates = yes -
备份策略
- 关键配置文件每日备份
- 使用加密传输备份文件
- 定期测试备份恢复流程
在阿里云某次安全评估中,我们通过执行完整检查清单发现了3个高危漏洞,包括一个可通过sudo提权的Nginx配置错误。安全加固不是一次性的工作,而应该成为系统管理员的日常习惯。每次系统更新或服务变更后,都应该重新评估安全状态。
最后提醒:所有安全配置修改前务必先在测试环境验证,特别是生产环境的关键业务服务器。我曾经因为直接在生产环境加固SSH配置导致整个运维团队被锁在系统外,不得不通过机房物理控制台恢复访问
