复制成功
请遵守本站许可
REPORT
Chapter_Post // Field_Report

Post_Ref: RL-安全漏洞扫描脚本

2026.04.06

安全漏洞扫描脚本

Echo HaoRan
Echo HaoRan
#ScriptFile
ANALYSIS

创建安全漏洞扫描脚本 security_scan.sh#

PRTCL // BASH
#!/bin/bash
# 配置:安全扫描参数(可按需修改)
REPORT_DIR="$HOME/security_reports"
DATE=$(date +%Y%m%d_%H%M%S)
REPORT_FILE="$REPORT_DIR/security_report_$DATE.txt"
EMAIL="admin@example.com"
# 创建报告目录
mkdir -p "$REPORT_DIR"
# 初始化报告文件
echo "安全扫描报告 - $(date)" > "$REPORT_FILE"
echo "========================================" >> "$REPORT_FILE"
# 检查开放端口
echo "1. 开放端口检查:" >> "$REPORT_FILE"
netstat -tuln | grep LISTEN >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
# 检查 SSH 配置
echo "2. SSH 配置检查:" >> "$REPORT_FILE"
if grep -q "PermitRootLogin yes" /etc/ssh/sshd_config; then
echo "[警告] SSH 允许 root 登录" >> "$REPORT_FILE"
else
echo "[安全] SSH 禁止 root 登录" >> "$REPORT_FILE"
fi
if grep -q "PasswordAuthentication yes" /etc/ssh/sshd_config; then
echo "[警告] SSH 允许密码认证" >> "$REPORT_FILE"
else
echo "[安全] SSH 禁用密码认证" >> "$REPORT_FILE"
fi
if ! grep -q "Port 22" /etc/ssh/sshd_config; then
echo "[安全] SSH 端口已更改" >> "$REPORT_FILE"
else
echo "[警告] SSH 使用默认端口 22" >> "$REPORT_FILE"
fi
echo "" >> "$REPORT_FILE"
# 检查用户权限
echo "3. 用户权限检查:" >> "$REPORT_FILE"
echo "具有 sudo 权限的用户:" >> "$REPORT_FILE"
grep -Po '^sudo.+ALL=\(ALL\) .+' /etc/group | cut -d: -f4 >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
# 检查弱密码用户
echo "4. 弱密码用户检查:" >> "$REPORT_FILE"
# 检查密码为空或过期的账户
awk -F: '($2==""){print $1" has empty password"}' /etc/shadow >> "$REPORT_FILE"
awk -F: '($2!="*" && $2!="!" && $2!~ /^\$[12356]/){print $1" has weak password hash"}' /etc/shadow >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
# 检查系统更新
echo "5. 系统更新检查:" >> "$REPORT_FILE"
if command -v apt-get &> /dev/null; then
UPDATES=$(apt-get -s -o Debug::NoLocking=true upgrade | grep -c "^Inst")
echo "可用更新数量: $UPDATES" >> "$REPORT_FILE"
elif command -v yum &> /dev/null; then
UPDATES=$(yum check-update --quiet | wc -l)
echo "可用更新数量: $UPDATES" >> "$REPORT_FILE"
fi
echo "" >> "$REPORT_FILE"
# 检查防火墙状态
echo "6. 防火墙状态检查:" >> "$REPORT_FILE"
if command -v ufw &> /dev/null && ufw status | grep -q "Status: active"; then
echo "[安全] UFW 防火墙已启用" >> "$REPORT_FILE"
ufw status >> "$REPORT_FILE"
elif command -v iptables &> /dev/null && iptables -L | grep -q "policy"; then
echo "[安全] iptables 防火墙已启用" >> "$REPORT_FILE"
iptables -L -n >> "$REPORT_FILE"
else
echo "[警告] 防火墙未启用或未安装" >> "$REPORT_FILE"
fi
echo "" >> "$REPORT_FILE"
# 检查系统日志中的异常登录
echo "7. 异常登录检查:" >> "$REPORT_FILE"
FAIL_LOGINS=$(grep -i "failed\|invalid\|error" /var/log/auth.log | tail -20)
if [ -n "$FAIL_LOGINS" ]; then
echo "最近的登录失败记录:" >> "$REPORT_FILE"
echo "$FAIL_LOGINS" >> "$REPORT_FILE"
else
echo "未发现异常登录记录" >> "$REPORT_FILE"
fi
echo "" >> "$REPORT_FILE"
# 检查 Web 服务器安全配置(如果安装了 Apache 或 Nginx)
echo "8. Web 服务器安全配置检查:" >> "$REPORT_FILE"
if command -v apache2 &> /dev/null || command -v httpd &> /dev/null; then
if [ -f /etc/apache2/conf-available/security.conf ] || [ -f /etc/httpd/conf.d/security.conf ]; then
if grep -q "ServerTokens Prod" /etc/apache2/conf-available/security.conf 2>/dev/null || grep -q "ServerTokens Prod" /etc/httpd/conf.d/security.conf 2>/dev/null; then
echo "[安全] Apache ServerTokens 已设置为 Prod" >> "$REPORT_FILE"
else
echo "[警告] Apache ServerTokens 可能暴露版本信息" >> "$REPORT_FILE"
fi
fi
elif command -v nginx &> /dev/null; then
if grep -q "server_tokens off" /etc/nginx/nginx.conf 2>/dev/null || grep -q "server_tokens off" /etc/nginx/conf.d/*.conf 2>/dev/null; then
echo "[安全] Nginx server_tokens 已禁用" >> "$REPORT_FILE"
else
echo "[警告] Nginx server_tokens 可能暴露版本信息" >> "$REPORT_FILE"
fi
fi
echo "" >> "$REPORT_FILE"
# 检查文件权限
echo "9. 重要文件权限检查:" >> "$REPORT_FILE"
echo "/etc/passwd 权限: $(ls -l /etc/passwd)" >> "$REPORT_FILE"
echo "/etc/shadow 权限: $(ls -l /etc/shadow)" >> "$REPORT_FILE"
echo "/etc/hosts.allow 权限: $(ls -l /etc/hosts.allow)" >> "$REPORT_FILE"
echo "/etc/hosts.deny 权限: $(ls -l /etc/hosts.deny)" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"
# 检查是否发现高风险问题
HIGH_RISK=$(grep -c "\[警告\]" "$REPORT_FILE")
if [ "$HIGH_RISK" -gt 0 ]; then
echo "发现 $HIGH_RISK 个高风险问题,请立即处理!" >> "$REPORT_FILE"
# 发送告警邮件
if command -v mail &> /dev/null; then
echo "安全扫描发现 $HIGH_RISK 个高风险问题,请立即查看报告: $REPORT_FILE" | mail -s "安全告警 - $(hostname)" "$EMAIL"
fi
else
echo "未发现高风险问题,系统安全状况良好。" >> "$REPORT_FILE"
fi
echo "安全扫描完成,报告已保存到: $REPORT_FILE"
R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.04.06
// END OF POST

订阅

通过 RSS 订阅本站,新文章发布时第一时间收到通知。

Follow
Classified
Chapter_06
Protocol_Ref: CC-BY-NC-SA-4.0

安全漏洞扫描脚本

Author: CHONGXIReleased: 2026.04.06

Licensed under CC BY-NC-SA 4.0

评论

© 2025-2026 EchoSpace
Powered by Astro & echohaoran Non-Collaborative_Entity // Protocol_V.4.21