linux漏洞一键扫描
脚本会自动跳过不可用的检查,并继续执行其他检查。详细报告已保存到: linux_scan_report_20250126_103100.txt。脚本会在终端输出彩色的扫描结果,并同时生成一个详细的日志文件。警告]: # "SSH 仍允许密码认证,建议改用密钥认证"扫描时间: 2025-01-26 10:31:00。运行,以便访问系统的所有配置文件和日志。添加以下行,每周一早上 2:00 运行扫描。
语言: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 .
注意事项
- 备份重要数据:在执行任何修复操作前,请备份重要数据
- 测试环境:建议先在测试环境中运行脚本
- 定期更新:定期运行此脚本以监控系统状态
- 专业建议:对于严重问题,建议咨询系统管理员或安全专家
许可证
此脚本为开源脚本,可自由使用和修改。
支持
如有问题或建议,请提供以下信息:
- Linux 发行版和版本
- 脚本输出的完整日志
- 系统配置信息
处理截图


更多推荐
所有评论(0)