作为IT工程师,确保Linux服务器安全是首要任务。以下是必须掌握的防护命令和最佳实践,按威胁场景分类整理:
一、用户与权限审计 1. 可疑账户检测
# 检查空密码账户
awk -F: '($2 == "") {print $1}' /etc/shadow
# 检查UID为0的非root账户
awk -F: '($3 == 0) {print $1}' /etc/passwd | grep -v root
# 关键目录权限检查
find / -perm -4000 -type f -exec ls -la {} \; # SUID文件
find / -perm -2000 -type f -exec ls -la {} \; # SGID文件
find / -type d -perm -o+w # 全局可写目录
二、实时入侵检测 1. 网络活动监控
# 异常连接检测
netstat -tulnpe | awk '{print $5,$7}' | grep -v "127.0.0.1" | sort | uniq -c | sort -n
# 隐藏进程发现
ps -ef | awk '{print $2,$8}' | grep -v "\[" | sort -n | uniq -c
# 快速校验系统关键文件
find /bin /sbin /usr/bin /usr/sbin -type f -exec md5sum {} \; | diff - baseline.md5
三、日志深度分析 1. 暴力破解检测
# SSH登录失败分析
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
# 创建事件时间线
journalctl --since "2023-07-01" --until "2023-07-31" | grep -E "fail|error|warning" > timeline.log
四、主动防御措施 1. 防火墙即时响应
# 自动封禁高频连接IP
tail -f /var/log/auth.log | grep "Failed password" | awk '{print $11}' | sort | uniq -c | awk '$1>5 {print "iptables -A INPUT -s "$2" -j DROP"}' | bash
# 使用Volatility检测rootkit
volatility -f memory.dump linux_pslist | grep -i -E "hidden|\[\]"
五、安全增强配置 1. SSH加固示例
# 修改sshd_config关键参数
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/#MaxAuthTries 6/MaxAuthTries 3/' /etc/ssh/sshd_config
systemctl restart sshd
# 防止SYN洪水攻击
echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
sysctl -p
六、自动化监控方案 1. 创建安全巡检脚本
#!/bin/bash
# 每日安全检查脚本
echo "[$(date)] Security Check Report" > /var/log/security_audit.log
echo "--- Open Ports ---" >> /var/log/security_audit.log
ss -tulnpe >> /var/log/security_audit.log
echo "--- Suspicious Processes ---" >> /var/log/security_audit.log
ps auxf | grep -E "[n]map|[h]ydra|[s]qlmap" >> /var/log/security_audit.log
进阶建议: 1. 配置auditd实现细粒度审计 2. 使用SELinux/AppArmor实现强制访问控制 3. 定期进行漏洞扫描(OpenVAS/Nessus) 4. 关键服务器部署HIDS如OSSEC
记住:安全是持续过程,建议: - 建立变更管理日志 - 实施最小权限原则 - 定期验证备份有效性 - 保持系统更新(yum/dnf/apt安全更新)
通过组合使用这些命令和策略,可以构建多层防御体系。对于生产环境,建议先在测试环境验证所有操作。