上一篇 下一篇 分享链接 返回 返回顶部

Debian 服务器安全巡检实战:漏洞排查、补丁修复与加固命令全整理

发布人:慈云数据-客服中心 发布时间:10小时前 阅读量:4

Debian 安全漏洞分析|附完整命令

在企业服务器、云主机、容器镜像以及边缘设备中,Debian 是非常常见的 Linux 发行版之一。它以稳定、软件仓库完善、社区成熟著称,尤其适合长期运行的生产环境。然而,“稳定”并不等于“绝对安全”。任何操作系统都可能受到内核漏洞、软件包漏洞、配置不当、弱口令、服务暴露、权限控制不严等问题影响。

本文将围绕 Debian 系统的安全漏洞进行系统性分析,并附带完整命令,帮助你从资产识别、补丁检查、漏洞扫描、服务排查、权限审计、日志分析到安全加固,形成一套相对完整的 Debian 安全检查流程。


一、Debian 安全风险概述

Debian 的安全风险大致可以分为以下几类:

  1. 系统内核漏洞
    Linux Kernel 是系统核心,若存在提权、逃逸、拒绝服务等漏洞,攻击者可能从普通用户权限提升到 root 权限,甚至影响容器隔离安全。

  2. 软件包漏洞
    Debian 通过 apt 管理软件包。如果 OpenSSL、OpenSSH、sudo、curl、nginx、Apache、MariaDB、PHP 等软件存在漏洞,而系统长期未更新,就可能被攻击者利用。

  3. 服务暴露风险
    SSH、数据库、Redis、Docker API、Web 服务等如果直接暴露在公网,且配置不当,容易成为入侵入口。

  4. 权限配置不当
    包括文件权限过宽、SUID 程序异常、sudo 权限滥用、敏感文件可读、目录可写等。

  5. 账户安全问题
    弱口令、空密码、过期账户未清理、root 远程登录开放,都可能导致暴力破解或凭证攻击。

  6. 日志与审计缺失
    系统缺乏日志审计与入侵检测,攻击发生后难以及时发现,也不利于溯源。

  7. 第三方源与过期版本风险
    使用不可信的第三方 apt 源,或者 Debian 版本已经进入 EOL,不再获得安全更新,都会显著增加风险。


二、确认 Debian 系统版本

安全分析的第一步是明确系统版本,因为不同 Debian 版本对应的软件包、补丁策略和安全支持周期不同。

1. 查看 Debian 版本

cat /etc/debian_version

也可以使用:

cat /etc/os-release

示例输出:

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm

2. 查看内核版本

uname -a

或:

uname -r

输出示例:

6.1.0-18-amd64

内核版本非常关键。如果系统长时间没有重启,即使已经安装了新内核,当前运行的仍可能是旧内核。

查看当前已安装的内核包:

dpkg -l | grep linux-image

三、检查安全更新状态

Debian 的安全更新通常来自官方安全仓库,例如:

deb http://security.debian.org/debian-security bookworm-security main

1. 更新软件包索引

sudo apt update

2. 查看可升级软件包

apt list --upgradable

如果存在大量可升级包,说明系统可能长期未维护。

3. 只查看安全更新

Debian 默认没有像 Ubuntu 那样直接区分所有安全更新的简单命令,但可以通过以下方式辅助判断。

安装 apt-listchangesdebian-goodies

sudo apt install -y apt-listchanges debian-goodies

查看某个软件包的变更信息:

apt changelog openssl

检查已安装软件包是否存在安全公告相关变更:

apt changelog openssh-server | less

4. 执行常规升级

sudo apt upgrade -y

5. 执行完整升级

如果涉及内核、依赖变更或重要组件升级,可以使用:

sudo apt full-upgrade -y

注意:生产环境执行 full-upgrade 前,建议先在测试环境验证,避免因依赖变更影响业务。

6. 清理无用软件包

sudo apt autoremove -y
sudo apt autoclean

四、检查 APT 软件源安全性

APT 软件源配置错误会带来供应链安全风险。攻击者可能通过不可信源投递恶意软件包,或利用过期源导致系统无法获取安全补丁。

1. 查看软件源配置

cat /etc/apt/sources.list

查看额外源:

ls -lah /etc/apt/sources.list.d/
cat /etc/apt/sources.list.d/*.list 2>/dev/null

Debian 12 示例源配置:

deb http://deb.debian.org/debian bookworm main contrib non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware

2. 检查是否使用已停止维护版本

查看版本代号:

lsb_release -a

如果没有该命令,先安装:

sudo apt install -y lsb-release

对于已经 EOL 的 Debian 版本,应尽快升级系统。继续运行过期系统意味着无法获得官方安全补丁。

3. 检查 apt-key 旧式密钥

apt-key 已逐渐不推荐使用。检查旧密钥:

apt-key list

更推荐将密钥放在:

/etc/apt/keyrings/

查看目录:

ls -lah /etc/apt/keyrings/

五、漏洞扫描工具分析

单纯依靠人工检查可能遗漏问题,因此建议结合自动化扫描工具。


1. 使用 Lynis 进行系统安全审计

Lynis 是 Linux 系统安全审计工具,适合检查系统加固项、配置风险、服务暴露等。

安装 Lynis

sudo apt update
sudo apt install -y lynis

执行系统审计

sudo lynis audit system

扫描完成后,重点关注:

/var/log/lynis.log
/var/log/lynis-report.dat

查看建议项:

sudo grep "suggestion" /var/log/lynis-report.dat

查看警告项:

sudo grep "warning" /var/log/lynis-report.dat

Lynis 常见发现包括:

  • SSH root 登录未禁用;
  • 密码策略不足;
  • 缺少防火墙规则;
  • 内核参数未加固;
  • 日志审计不完善;
  • 文件权限过宽;
  • 不必要服务正在运行。

2. 使用 debsecan 检查 Debian 安全漏洞

debsecan 是 Debian 官方生态中常用的安全漏洞检查工具,可以根据 Debian 安全跟踪信息检查本机软件包漏洞。

安装 debsecan

sudo apt install -y debsecan

查看系统漏洞

debsecan

如果需要指定版本,例如 Debian 12 bookworm:

debsecan --suite bookworm

只显示已经修复但本机未升级的漏洞:

debsecan --suite bookworm --only-fixed

输出适合阅读的格式:

debsecan --suite bookworm --format detail

将结果保存为文件:

debsecan --suite bookworm --format detail > debian-vuln-report.txt

查看高风险漏洞时,可以结合 CVE 编号进一步查询:

debsecan --suite bookworm | grep CVE

3. 使用 Trivy 扫描系统与容器镜像

Trivy 不仅可以扫描容器镜像,也可以扫描文件系统、软件包和配置问题。

安装 Trivy

Debian 可使用官方安装脚本:

sudo apt install -y wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | \
  gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null

echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | \
  sudo tee /etc/apt/sources.list.d/trivy.list

sudo apt update
sudo apt install -y trivy

扫描本机文件系统

sudo trivy fs /

只显示高危和严重漏洞:

sudo trivy fs --severity HIGH,CRITICAL /

输出 JSON 报告:

sudo trivy fs --severity HIGH,CRITICAL --format json -o trivy-report.json /

扫描容器镜像

trivy image debian:12

扫描本地业务镜像:

trivy image your-image-name:tag

六、检查开放端口与服务暴露

漏洞往往需要通过服务入口触发,因此应先确认系统暴露了哪些端口。

1. 查看监听端口

sudo ss -tulpen

参数说明:

  • -t:TCP;
  • -u:UDP;
  • -l:监听状态;
  • -p:显示进程;
  • -e:显示扩展信息;
  • -n:不解析域名和服务名。

也可以使用:

sudo netstat -tulpen

如果没有 netstat

sudo apt install -y net-tools

2. 查看 systemd 服务

systemctl --type=service --state=running

查看开机自启服务:

systemctl list-unit-files --type=service | grep enabled

3. 停止不必要服务

例如停止 Apache:

sudo systemctl stop apache2

禁止开机启动:

sudo systemctl disable apache2

如果确认不需要,可以卸载:

sudo apt purge -y apache2
sudo apt autoremove -y

七、SSH 安全漏洞与加固分析

SSH 是 Debian 服务器最常见的远程管理入口,也是被扫描和攻击最多的服务之一。

1. 查看 SSH 服务状态

sudo systemctl status ssh

或:

sudo systemctl status sshd

2. 查看 SSH 配置

sudo cat /etc/ssh/sshd_config

重点检查以下配置:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
X11Forwarding no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

3. 编辑 SSH 配置

sudo nano /etc/ssh/sshd_config

推荐配置示例:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
X11Forwarding no
MaxAuthTries 3
LoginGraceTime 30
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers adminuser

修改后先检查配置语法:

sudo sshd -t

重启 SSH:

sudo systemctl restart ssh

重要提示:修改 SSH 配置前,务必保持一个已登录的备用终端,避免配置错误导致无法远程登录。

4. 查看 SSH 登录失败日志

Debian 常见认证日志:

sudo tail -f /var/log/auth.log

查看失败登录:

sudo grep "Failed password" /var/log/auth.log

统计攻击来源 IP:

sudo grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head

八、防火墙配置与访问控制

Debian 可以使用 nftablesiptablesufw。对于大多数用户,ufw 更简单。

1. 安装 UFW

sudo apt install -y ufw

2. 默认拒绝入站

sudo ufw default deny incoming
sudo ufw default allow outgoing

3. 放行 SSH

如果 SSH 使用默认 22 端口:

sudo ufw allow 22/tcp

如果 SSH 使用自定义端口,例如 2222:

sudo ufw allow 2222/tcp

4. 放行 Web 服务

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

5. 启用防火墙

sudo ufw enable

查看状态:

sudo ufw status verbose

6. 删除规则

sudo ufw delete allow 80/tcp

九、账户与密码安全检查

1. 查看所有用户

cat /etc/passwd

只查看可登录用户:

awk -F: '$7 !~ /(nologin|false)/ {print}' /etc/passwd

2. 查看 UID 为 0 的账户

正常情况下只有 root 的 UID 为 0:

awk -F: '($3 == 0) {print}' /etc/passwd

如果出现多个 UID 为 0 的账户,需要立即调查。

3. 检查空密码账户

sudo awk -F: '($2 == "") {print $1}' /etc/shadow

4. 锁定可疑账户

sudo passwd -l username

解锁账户:

sudo passwd -u username

删除账户:

sudo userdel -r username

5. 查看 sudo 权限

sudo cat /etc/sudoers

查看 sudoers.d:

sudo ls -lah /etc/sudoers.d/
sudo cat /etc/sudoers.d/*

编辑 sudo 配置必须使用:

sudo visudo

十、文件权限与 SUID 风险排查

Linux 中 SUID 文件在执行时会以文件所有者权限运行。如果 SUID 程序存在漏洞,可能导致本地提权。

1. 查找 SUID 文件

sudo find / -perm -4000 -type f -exec ls -lah {} \; 2>/dev/null

2. 查找 SGID 文件

sudo find / -perm -2000 -type f -exec ls -lah {} \; 2>/dev/null

3. 查找全局可写目录

sudo find / -type d -perm -0002 -exec ls -ld {} \; 2>/dev/null

对于全局可写目录,应确认是否设置了 sticky bit。例如 /tmp 正常权限应类似:

drwxrwxrwt

检查 /tmp

ls -ld /tmp

修复 /tmp 权限:

sudo chmod 1777 /tmp

4. 查找敏感文件权限

ls -l /etc/passwd /etc/shadow /etc/sudoers

常见推荐权限:

-rw-r--r-- /etc/passwd
-rw------- /etc/shadow
-r--r----- /etc/sudoers

修复示例:

sudo chmod 644 /etc/passwd
sudo chmod 600 /etc/shadow
sudo chmod 440 /etc/sudoers

十一、内核参数安全加固

通过 sysctl 可以调整内核网络安全参数,降低 IP 欺骗、ICMP 重定向、SYN Flood 等风险。

1. 查看当前参数

sysctl net.ipv4.ip_forward
sysctl net.ipv4.conf.all.accept_redirects
sysctl net.ipv4.conf.all.send_redirects

2. 创建安全配置文件

sudo nano /etc/sysctl.d/99-security.conf

写入以下内容:

net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.log_martians = 1
kernel.randomize_va_space = 2
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
fs.suid_dumpable = 0

应用配置:

sudo sysctl --system

十二、日志分析与入侵痕迹排查

漏洞分析不仅要看“是否存在漏洞”,还要判断“是否已经被利用”。

1. 查看认证日志

sudo less /var/log/auth.log

查看最近登录成功记录:

last

查看失败登录记录:

lastb

如果没有 lastb 数据,可能是 /var/log/btmp 不存在,可创建:

sudo touch /var/log/btmp
sudo chmod 600 /var/log/btmp

2. 查看当前登录用户

who
w

3. 查看历史命令

history

查看 root 历史命令:

sudo cat /root/.bash_history

查看普通用户历史命令:

cat /home/username/.bash_history

4. 查看计划任务

系统级 cron:

sudo cat /etc/crontab
sudo ls -lah /etc/cron.*

用户级 cron:

sudo crontab -l

查看指定用户 cron:

sudo crontab -u username -l

5. 查找最近修改文件

查看最近一天内修改的文件:

sudo find / -mtime -1 -type f 2>/dev/null

查看最近 10 分钟内修改的文件:

sudo find / -mmin -10 -type f 2>/dev/null

十三、恶意进程与异常连接排查

1. 查看进程

ps aux

按 CPU 排序:

ps aux --sort=-%cpu | head

按内存排序:

ps aux --sort=-%mem | head

2. 查看网络连接

sudo ss -antp

查看已建立连接:

sudo ss -antp | grep ESTAB

查看进程打开文件:

sudo lsof -i

如果没有 lsof

sudo apt install -y lsof

3. 查看可疑二进制文件

sudo find /tmp /var/tmp /dev/shm -type f -executable -ls 2>/dev/null

攻击者常将恶意程序放在 /tmp/var/tmp/dev/shm 等目录中,因为这些目录通常可写。


十四、安装自动安全更新

对于普通服务器,可以启用自动安全更新,减少因忘记打补丁导致的风险。

1. 安装 unattended-upgrades

sudo apt install -y unattended-upgrades apt-listchanges

2. 启用自动更新

sudo dpkg-reconfigure unattended-upgrades

选择 Yes

3. 检查配置文件

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

确认包含安全更新源,例如:

"${distro_id}:${distro_codename}-security";

4. 配置自动更新周期

sudo nano /etc/apt/apt.conf.d/20auto-upgrades

写入:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";

5. 测试自动更新

sudo unattended-upgrades --dry-run --debug

十五、Web 服务常见漏洞检查

如果 Debian 上运行 Nginx、Apache、PHP、Node.js、Java 等业务,需要额外关注 Web 层漏洞。

1. 查看 Nginx 版本

nginx -v

查看编译参数:

nginx -V

检查配置:

sudo nginx -t

重载配置:

sudo systemctl reload nginx

2. 查看 Apache 版本

apache2 -v

查看启用模块:

apache2ctl -M

检查配置:

sudo apache2ctl configtest

3. 查看 PHP 版本

php -v

查看 PHP 模块:

php -m

查找 php.ini:

php --ini

4. 检查网站目录权限

sudo ls -lah /var/www/

查找网站目录可写文件:

sudo find /var/www -type f -perm -0002 -ls 2>/dev/null

查找可执行脚本:

sudo find /var/www -type f \( -name "*.php" -o -name "*.sh" -o -name "*.py" \) -ls

十六、容器与 Docker 安全检查

如果 Debian 上运行 Docker,需要注意容器逃逸、特权容器、Docker Socket 暴露等问题。

1. 查看 Docker 版本

docker version

2. 查看运行容器

docker ps

查看所有容器:

docker ps -a

3. 检查特权容器

docker ps --quiet | xargs docker inspect --format '{{.Name}} Privileged={{.HostConfig.Privileged}}'

4. 检查 Docker Socket 权限

ls -l /var/run/docker.sock

如果普通用户属于 docker 组,实际上接近拥有 root 权限:

getent group docker

5. 扫描镜像漏洞

trivy image your-image-name:tag

十七、Debian 漏洞修复流程建议

当扫描发现漏洞后,不建议盲目执行命令,而应按照以下流程处理:

  1. 确认漏洞影响范围
    根据 CVE 编号、软件包名称、版本号判断是否真正受影响。

  2. 查看 Debian 安全公告
    Debian 安全公告地址通常为:

    https://www.debian.org/security/
  3. 确认是否已有修复包
    使用:

    apt policy package-name

    例如:

    apt policy openssl
  4. 优先升级受影响软件包

    sudo apt install --only-upgrade package-name

    示例:

    sudo apt install --only-upgrade openssl
  5. 升级后重启相关服务

    sudo systemctl restart service-name
  6. 如涉及内核或 libc,建议重启系统

    sudo reboot
  7. 复扫确认漏洞关闭

    debsecan --suite bookworm --only-fixed
    sudo trivy fs --severity HIGH,CRITICAL /
    sudo lynis audit system

十八、常用一键检查命令汇总

以下命令适合快速了解 Debian 当前安全状态。

cat /etc/os-release
uname -a
sudo apt update
apt list --upgradable
sudo ss -tulpen
systemctl --type=service --state=running
awk -F: '$7 !~ /(nologin|false)/ {print}' /etc/passwd
awk -F: '($3 == 0) {print}' /etc/passwd
sudo grep "Failed password" /var/log/auth.log | tail
sudo find / -perm -4000 -type f -exec ls -lah {} \; 2>/dev/null
sudo find /tmp /var/tmp /dev/shm -type f -executable -ls 2>/dev/null
sudo crontab -l
sudo ls -lah /etc/cron.*

安装常用安全工具:

sudo apt update
sudo apt install -y lynis debsecan ufw lsof net-tools unattended-upgrades apt-listchanges

执行安全审计:

sudo lynis audit system
debsecan --suite bookworm --format detail
sudo ufw status verbose

十九、安全加固基线建议

对于生产环境 Debian,建议至少做到以下几点:

  • 保持系统版本处于官方支持周期内;
  • 启用安全更新源;
  • 定期执行 apt update && apt upgrade
  • 禁止 SSH root 登录;
  • 优先使用 SSH 密钥认证;
  • 限制 SSH 登录用户;
  • 启用防火墙,只开放必要端口;
  • 删除不必要的软件包和服务;
  • 定期检查 SUID 文件和计划任务;
  • 启用自动安全更新;
  • 对 Web、数据库、容器服务进行单独加固;
  • 建立日志监控与告警;
  • 定期备份重要数据;
  • 对高危漏洞建立应急升级流程。

二十、总结

Debian 的安全性并不只取决于发行版本身,更取决于系统管理员是否持续维护。一个长期不更新、端口随意暴露、SSH 使用弱口令、日志无人查看的 Debian 服务器,即使系统本身再稳定,也很容易成为攻击目标。

完整的 Debian 安全漏洞分析应包含以下几个方面:首先确认系统版本和内核版本,其次检查安全更新和软件源,再通过 debsecanLynisTrivy 等工具进行漏洞和配置扫描;随后排查开放端口、系统服务、SSH 配置、账户权限、SUID 文件、计划任务、日志记录和异常进程;最后通过补丁升级、防火墙、内核参数加固、自动安全更新和定期审计形成长期安全机制。

安全不是一次性操作,而是持续过程。建议将本文中的命令整理为巡检脚本,定期执行并保存报告,结合变更管理和日志监控,才能真正降低 Debian 系统的安全风险。

目录结构
全文