Linkmetax
← 返回博客
·Linkmetax 安全团队·12 分钟阅读

技术主管必看:如何用 1 个无害化脚本完成企业内网服务器的全面"技术审计"与漏洞扫描

企业服务器无害化技术审计脚本完整方案。系统配置 / 用户权限 / 服务暴露 / 补丁状态 / 弱密码 5 大维度自动化扫描,比外部渗透测试便宜 10 倍。

技术审计漏洞扫描安全检查

「老板说要做安全审计,外部安全公司报价 30 万 / 周。我们公司一共就 50 台服务器,能不能内部做?」

这是中小企业 IT 主管最常纠结的问题。完全自查 → 漏看;外部渗透 → 太贵。最佳路径是:先内部跑无害化审计脚本找出 80% 问题 → 关键场景请外部做穿透测试验证。这篇给一套实操审计方案。


一、为什么"无害化"重要

渗透测试 vs 技术审计

  • 渗透测试:模拟黑客真攻击,可能造成业务影响
  • 技术审计:只检查配置 / 状态,不实际攻击

技术审计能发现 80% 的安全问题

  • 弱密码 / 默认密码
  • 危险端口暴露
  • 补丁缺失
  • 配置不当
  • 权限过大

剩余 20% 才需要专业渗透测试发现。


二、5 大审计维度

1. 系统配置(OS / 密码策略 / 防火墙)
2. 用户权限(账号 / 组 / sudo)
3. 服务暴露(端口 / 服务版本)
4. 补丁状态(已知 CVE)
5. 弱密码 / 默认凭据

三、维度 1:系统配置审计

Linux 服务器检查项

#!/bin/bash
# linux-audit.sh

echo "===== 系统配置审计 ====="

# 1. 系统版本
echo "--- OS 版本 ---"
cat /etc/os-release | grep PRETTY_NAME
uname -r

# 2. 密码策略
echo "--- 密码策略 ---"
grep -E "PASS_MAX_DAYS|PASS_MIN_DAYS|PASS_MIN_LEN" /etc/login.defs

# 3. SSH 配置
echo "--- SSH 配置 ---"
grep -E "^(PermitRootLogin|PasswordAuthentication|Port)" /etc/ssh/sshd_config

# 4. 防火墙状态
echo "--- 防火墙 ---"
if command -v ufw &> /dev/null; then
    ufw status
elif command -v firewall-cmd &> /dev/null; then
    firewall-cmd --list-all
fi

# 5. SELinux / AppArmor
echo "--- SELinux/AppArmor ---"
sestatus 2>/dev/null
aa-status 2>/dev/null | head -5

# 6. 自动更新
echo "--- 自动更新 ---"
if [ -f /etc/apt/apt.conf.d/20auto-upgrades ]; then
    cat /etc/apt/apt.conf.d/20auto-upgrades
fi

关键红线项

  • PermitRootLogin yes
  • PasswordAuthentication yes 且暴露公网
  • ❌ 防火墙关闭
  • ❌ 密码无过期策略

四、维度 2:用户权限审计

echo "===== 用户权限审计 ====="

# 1. UID 0 的账号(root)
echo "--- UID 0 账号 ---"
awk -F: '$3 == 0 {print $1}' /etc/passwd

# 2. 无密码账号
echo "--- 无密码账号 ---"
awk -F: '$2 == "" {print $1}' /etc/shadow 2>/dev/null

# 3. 可登录账号(shell != nologin)
echo "--- 可登录账号 ---"
grep -E "/bin/(bash|sh|zsh)$" /etc/passwd | cut -d: -f1

# 4. sudo 权限
echo "--- sudoers ---"
cat /etc/sudoers
ls /etc/sudoers.d/ 2>/dev/null
grep -E "^[^#].*ALL" /etc/sudoers.d/* 2>/dev/null

# 5. 90 天未登录的账号
echo "--- 长期未登录账号 ---"
lastlog -b 90 | grep -v "Never logged in"

# 6. 检查 .ssh/authorized_keys
echo "--- SSH Authorized Keys ---"
for u in $(awk -F: '{print $1}' /etc/passwd); do
    keyfile="/home/$u/.ssh/authorized_keys"
    [ -f "$keyfile" ] && echo "$u: $(wc -l < $keyfile) keys"
done

关键红线项

  • ❌ 多个 UID 0 账号
  • ❌ 无密码账号
  • ❌ 长期未登录但活跃的账号
  • ❌ authorized_keys 含未知公钥

五、维度 3:服务暴露审计

echo "===== 服务暴露审计 ====="

# 1. 监听端口
echo "--- 监听端口 ---"
ss -tlnp

# 2. 危险端口检查
echo "--- 危险端口暴露 ---"
DANGER_PORTS="22 23 445 1433 3306 3389 5432 6379 9200 11211 27017"
for port in $DANGER_PORTS; do
    if ss -tln | grep -q ":$port "; then
        # 检查是否绑定 0.0.0.0
        if ss -tln | grep ":$port " | grep -q "0.0.0.0"; then
            echo "⚠️ 端口 $port 暴露到 0.0.0.0"
        fi
    fi
done

# 3. 正在运行的服务版本
echo "--- 服务版本 ---"
for svc in nginx apache2 mysql postgresql redis-server mongod ssh; do
    version=$($svc -v 2>&1 | head -1)
    [ -n "$version" ] && echo "$svc: $version"
done

关键红线项

  • ❌ MySQL / PostgreSQL / Redis / Mongo / ES 暴露到 0.0.0.0
  • ❌ SSH 监听公网
  • ❌ 服务版本严重过期

六、维度 4:补丁状态审计

echo "===== 补丁状态审计 ====="

# 1. 可用更新数量
echo "--- 可更新包数量 ---"
if command -v apt &> /dev/null; then
    apt list --upgradable 2>/dev/null | grep -c upgradable
fi

# 2. 安全更新
echo "--- 安全更新 ---"
if command -v unattended-upgrade &> /dev/null; then
    unattended-upgrade --dry-run -d 2>&1 | grep "Packages that will"
fi

# 3. 关键 CVE 检查(kernel)
echo "--- Kernel 版本 ---"
uname -r
# 对比 https://ubuntu.com/security/cve 查最近 CVE

# 4. 上次更新时间
echo "--- 上次 apt update ---"
stat /var/lib/apt/periodic/update-success-stamp 2>/dev/null | grep "Modify"

关键红线项

  • ❌ 30+ 天未更新
  • ❌ kernel 严重老旧(< 5.x)
  • ❌ 有未应用的安全更新

七、维度 5:弱密码审计

⚠️ 注意:只在授权环境扫描

echo "===== 弱密码审计 ====="

# 1. 检查 /etc/shadow 加密强度
echo "--- 密码 hash 类型 ---"
awk -F: '$2 ~ /^\$1\$/ {print $1 ": MD5(弱)"}
         $2 ~ /^\$2\$/ {print $1 ": Blowfish"}
         $2 ~ /^\$5\$/ {print $1 ": SHA256"}
         $2 ~ /^\$6\$/ {print $1 ": SHA512(推荐)"}' /etc/shadow 2>/dev/null

# 2. 检查默认凭据(针对常见服务,需安全审计权限)
# 不建议在生产跑 - 仅在隔离测试环境

关键红线项

  • ❌ MD5 加密的密码 hash
  • ❌ 默认凭据未改(如 root/root, admin/admin)

八、汇总报告脚本

#!/bin/bash
# full-audit.sh - 完整审计 + HTML 报告

HOSTNAME=$(hostname)
DATE=$(date +%Y%m%d_%H%M%S)
REPORT="/tmp/audit-$HOSTNAME-$DATE.html"

cat > $REPORT <<EOF
<!DOCTYPE html>
<html><head><meta charset="utf-8">
<title>安全审计报告 - $HOSTNAME</title>
<style>
body { font-family: monospace; max-width: 1200px; margin: 20px auto; padding: 20px; }
h2 { background: #2c3e50; color: white; padding: 10px; }
.danger { background: #fff3f3; padding: 10px; border-left: 4px solid #e74c3c; margin: 10px 0; }
.warning { background: #fff8e1; padding: 10px; border-left: 4px solid #f39c12; margin: 10px 0; }
.ok { background: #f0f9eb; padding: 10px; border-left: 4px solid #2ecc71; margin: 10px 0; }
pre { background: #f8f9fa; padding: 15px; overflow-x: auto; }
</style></head><body>
<h1>安全审计报告</h1>
<p><strong>主机</strong>: $HOSTNAME</p>
<p><strong>时间</strong>: $(date)</p>
<p><strong>OS</strong>: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)</p>
EOF

# 运行各项检查并 append
{
    echo "<h2>1. 系统配置</h2><pre>"
    bash linux-audit.sh 2>&1
    echo "</pre>"

    echo "<h2>2. 用户权限</h2><pre>"
    bash user-audit.sh 2>&1
    echo "</pre>"

    echo "<h2>3. 服务暴露</h2><pre>"
    bash service-audit.sh 2>&1
    echo "</pre>"

    echo "<h2>4. 补丁状态</h2><pre>"
    bash patch-audit.sh 2>&1
    echo "</pre>"

    echo "</body></html>"
} >> $REPORT

echo "审计完成: $REPORT"

九、专业工具推荐

系统基线

  • Lynis(开源 ⭐):Linux 系统安全审计

    sudo apt install lynis
    lynis audit system
    
  • OpenSCAP:CIS Benchmark 标准

  • Microsoft Baseline Security Analyzer(Windows)

漏洞扫描

  • OpenVAS / Greenbone(开源)
  • Nessus(商业,年付 5,000 美金)
  • Qualys(云端,企业级)

Web 应用

  • OWASP ZAP(开源)
  • Burp Suite(半免费)

代码扫描

  • Trivy(容器镜像 + 代码)
  • Semgrep(代码模式扫描)

十、审计后的行动清单

立即修(< 24h)

  • 公网暴露的数据库 / Redis
  • 弱密码 / 默认凭据
  • root SSH 直登
  • 暴露的管理界面

1 周内修

  • 安全补丁
  • 长期未登录账号清理
  • 服务版本严重过期

1 月内修

  • 完善备份策略
  • 加 MFA
  • 加 EDR

写在最后

技术审计是发现问题,但修复 + 持续监控才是终点。

我们提供 免费《高级 IT 架构与系统安全漏洞远程审计》

  • 1-3 天扫描你公司全部服务器
  • 输出标准化审计报告(含修复建议)
  • Linkmetax 内部沉淀的无害化脚本
  • 5 大维度 + 50+ 检查项
  • 24 小时内出报告

📞 页面留下联系方式联系销售申请免费审计 →

或了解我们的 企业 IT 安全方案

📥PDF 白皮书

下载《技术主管必看:如何用 1 个无害化脚本完成企业内网服务器的全面"技术审计"与漏洞扫描》PDF 完整版

留下邮箱,立刻获取本文 PDF + 后续企业 AI / 软件采购干货

  • ✓ 含全部图表、检查清单、参考链接
  • ✓ 可用于内部分享 / 招投标资料引用
  • ✓ 后续更新自动推送 · 不发垃圾邮件

提交即表示同意我们处理你的邮箱用于发送资料 · 不会用于第三方营销

想把这些经验落到你的企业?

1 个工作日内出方案 · 可签 NDA · 支持招投标

联系解决方案架构师 →