语言:shell
方式:开源脚本
下载方式-自行下载使用
通道:夸克盘
Linux 服务器系统扫描脚本使用指南
功能概述
这是一个全面的 Linux 服务器系统扫描脚本,可以检测以下类别的问题:
1. 安全检查 🔒
- SSH 配置安全性(root 登录、空密码、密钥认证)
- 防火墙状态(UFW/Firewalld)
- SELinux 安全模块
- sudo 权限配置
- 关键文件权限(/etc/passwd、/etc/shadow)
- 无密码用户检测
- UID 为 0 的非 root 用户检测
2. 性能检查 ⚡
- CPU 使用率监控
- 内存使用率分析
- 磁盘使用率检查
- 系统负载评估
- inode 使用率监控
3. 系统配置检查 ⚙️
- 系统更新可用性
- 时间同步状态
- 日志轮转配置
- cron 服务状态
- 开机启动项统计
4. 网络检查 🌐
- 开放端口列表
- 网络连接数统计
- DNS 配置验证
5. 进程检查 🔄
- 僵尸进程检测
- 内存占用排行
- CPU 占用排行
6. 用户和权限检查 👤
- 空 shell 用户检测
- 系统用户配置验证
- 最近登录用户查询
- sudo 使用情况统计
7. 日志检查 📋
- 系统日志错误统计
- 认证日志分析(登录失败检测)
- 内核日志警告统计
8. 软件包检查 📦
- 已安装软件包统计
- 安全更新检测
使用方法
基本用法
sudo bash linux_system_scanner.sh
脚本输出
脚本会在终端输出彩色的扫描结果,并同时生成一个详细的日志文件。
输出颜色说明:
- 🔴 红色 [ 严重]:需要立即处理的严重问题
- 🟡 黄色 [ 警告]:需要注意的潜在问题
- 🟢 绿色 [✓]:正常的配置或状态
- 🔵 蓝色:标题和分隔符
日志文件
脚本会自动生成一个日志文件,文件名格式为:
linux_scan_report_YYYYMMDD_HHMMSS.txt
例如:++linux_scan_report_20250126_103100.txt++
常见问题解决
问题 1:SSH 允许 root 直接登录
症状: 输出显示 ++[++ ++严重] SSH++ ++允许 root++ ++直接登录,建议禁用++
解决方案:
编辑 SSH 配置文件
sudo nano /etc/ssh/sshd_config
找到 PermitRootLogin 行,改为:
PermitRootLogin no
保存并重启 SSH 服务
sudo systemctl restart sshd
问题 2:防火墙未启用
症状: 输出显示 ++[++ ++警告] UFW++ ++防火墙未启用,建议启用++
解决方案(Ubuntu/Debian ):
安装 UFW
sudo apt-get install ufw
启用防火墙
sudo ufw enable
允许 SSH 连接
sudo ufw allow 22/tcp
查看防火墙状态
sudo ufw status
解决方案(CentOS/RHEL ):
启用 Firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
查看防火墙状态
sudo firewall-cmd --state
问题 3:磁盘使用率过高
症状: 输出显示 ++[++ ++严重/++ ++警告]++ ++磁盘使用率过高: /home (95%)++
解决方案:
查看磁盘使用情况
du -sh /* | sort -rh | head -10
查找大文件
find / -type f -size +100M -exec ls -lh {} \;
清理日志文件
sudo journalctl --vacuum=30d
清理包管理器缓存
sudo apt-get clean # Debian/Ubuntu
sudo yum clean all # CentOS/RHEL
问题 4:发现无密码用户
症状: 输出显示 ++[++ ++严重]++ ++发现无密码用户: user1++
解决方案:
为用户设置密码
sudo passwd user1
或者禁用该用户
sudo usermod -L user1
问题 5:发现登录失败次数过多
症状: 输出显示 ++[++ ++警告]++ ++发现 150++ ++次登录失败,可能存在暴力破解++
解决方案:
查看失败的登录尝试
sudo grep "Failed password" /var/log/auth.log | tail -20
配置 fail2ban 防止暴力破解
sudo apt-get install fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
问题 6:系统有安全更新可用
症状: 输出显示 ++[++ ++严重]++ ++有 5++ ++个安全更新可用,建议立即安装++
解决方案:
更新系统(Debian/Ubuntu)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
或者(CentOS/RHEL)
sudo yum update
问题 7:CPU 或内存使用率过高
症状: 输出显示 ++[++ ++警告] CPU++ ++使用率过高: 85%++ 或 ++[++ ++警告]++ ++内存使用率过高: 92%++
解决方案:
查看占用 CPU 最多的进程
ps aux --sort=-%cpu | head -10
查看占用内存最多的进程
ps aux --sort=-%mem | head -10
实时监控系统资源
top
或者使用 htop(需要安装)
sudo apt-get install htop
htop
问题 8:SELinux 未启用或处于宽松模式
症状: 输出显示 ++[++ ++警告] SELinux++ ++已禁用,建议启用++
解决方案:
查看当前 SELinux 状态
getenforce
临时改为强制执行模式
sudo setenforce 1
永久改为强制执行模式
sudo nano /etc/selinux/config
改为:SELINUX=enforcing
重启系统使配置生效
sudo reboot
脚本权限要求
此脚本需要以 root 身份 运行,以便访问系统的所有配置文件和日志。
sudo bash linux_system_scanner.sh
定期扫描建议
建议定期运行此脚本以监控系统健康状况。可以通过 cron 任务自动执行:
编辑 crontab
sudo crontab -e
添加以下行,每周一早上 2:00 运行扫描
0 2 * * 1 /home/ubuntu/linux_system_scanner.sh >> /var/log/system_scan.log 2>&1
脚本输出示例
Linux 服务器系统扫描报告
扫描时间: 2025-01-26 10:31:00
扫描主机: my-server
========================================
========================================
安全检查
========================================
检查 SSH 配置...
✓\]: # "SSH 已禁用 root 直接登录" \[✓\]: # "SSH 已禁用空密码登录" \[警告\]: # "SSH 仍允许密码认证,建议改用密钥认证" 检查防火墙状态... \[✓\]: # "UFW 防火墙已启用" ... (更多检查结果) ======================================== 扫描总结 ======================================== 总问题数: 12 严重问题: 1 警告问题: 8 信息: 3 详细报告已保存到: linux_scan_report_20250126_103100.txt 建议: 请立即处理上述严重问题 建议: 请及时处理上述警告问题 **故障排除** **脚本无法执行权限** # 添加执行权限 chmod +x /home/ubuntu/linux_system_scanner.sh **某些命令不可用** 某些检查可能在不同的 Linux 发行版上不可用。脚本会自动跳过不可用的检查,并继续执行其他检查。 **日志文件权限问题** 如果无法写入日志文件,请检查目录权限: # 查看当前目录权限 ls -ld . # 如果需要,改变目录权限 chmod 755 . **注意事项** 1. **备份重要数据**:在执行任何修复操作前,请备份重要数据 2. **测试环境**:建议先在测试环境中运行脚本 3. **定期更新**:定期运行此脚本以监控系统状态 4. **专业建议**:对于严重问题,建议咨询系统管理员或安全专家 **许可证** 此脚本为开源脚本,可自由使用和修改。 **支持** 如有问题或建议,请提供以下信息: * Linux 发行版和版本 * 脚本输出的完整日志 * 系统配置信息 **处理截图**  