当前登录用户检查
who # 显示当前登录用户
last # 显示登录历史
w # 显示谁已登录及他们在做什么
系统信息审计
uname -a # 显示所有系统信息
hostnamectl # 显示主机名和系统详细信息
uptime # 显示系统运行时间
用户账户检查
cat /etc/passwd # 查看所有用户账户
cat /etc/shadow # 查看用户密码哈希(需要root权限)
awk -F: '($3 == "0") {print}' /etc/passwd # 查找UID为0的用户(超级用户)
密码策略检查
chage -l username # 查看用户密码过期信息
grep "^PASS_MAX_DAYS" /etc/login.defs # 查看密码最大有效期
权限管理
find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \; # 查找SUID文件
find / -perm -2000 -type f -exec ls -la {} 2>/dev/null \; # 查找SGID文件
网络连接监控
netstat -tulnp # 查看监听端口及对应进程
ss -tulnp # 更现代的替代方案
lsof -i # 列出所有网络连接
防火墙状态
iptables -L -n -v # 查看iptables规则
ufw status # Ubuntu防火墙状态
firewall-cmd --list-all # CentOS/RHEL防火墙状态
可疑连接检测
netstat -anp | grep ESTABLISHED # 查看已建立的连接
netstat -anp | grep -i "listen" # 查看监听端口
文件完整性检查
find / -type f -perm -o+w -exec ls -la {} \; # 查找全局可写文件
find / -type d -perm -o+w -exec ls -ld {} \; # 查找全局可写目录
敏感文件检查
find / -name "*.php" -exec grep -l "eval(" {} \; # 查找包含eval的PHP文件
grep -r "password" /var/www # 在web目录中搜索密码关键词
文件属性保护
chattr +i /etc/passwd # 使文件不可修改(需要root)
chattr +i /etc/shadow
进程检查
ps auxf # 查看所有运行进程
top # 实时进程监控
pstree # 以树状结构显示进程
日志检查
journalctl -xe # 查看系统日志
tail -f /var/log/auth.log # 实时监控认证日志(Ubuntu)
tail -f /var/log/secure # 实时监控认证日志(CentOS/RHEL)
grep "Failed password" /var/log/auth.log # 查找失败的登录尝试
Lynis - 系统审计工具
lynis audit system
Chkrootkit - Rootkit检测
chkrootkit
Rkhunter - Rootkit检测
rkhunter --check
ClamAV - 病毒扫描
freshclam # 更新病毒库
clamscan -r / # 全盘扫描
定期更新
apt update && apt upgrade -y # Debian/Ubuntu
yum update -y # CentOS/RHEL
禁用不必要的服务
systemctl list-unit-files --type=service # 列出所有服务
systemctl disable servicename # 禁用服务
SSH安全加固
sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd
关键配置文件备份
tar -czvf /backup/etc_backup_$(date +%F).tar.gz /etc
数据库备份
mysqldump -u root -p --all-databases > all_databases.sql
通过定期运行这些命令并分析结果,您可以显著提高Linux服务器的安全性。建议设置自动化脚本定期执行关键检查,并将结果发送到安全邮箱进行持续监控。