使用 rkhunter --propupd 仅更新升级的软件包

使用 rkhunter --propupd 仅更新升级的软件包

当使用 升级我的系统上的软件包时,通常我们会使用以下命令apt-get更新文件数据库rkhunter

sudo rkhunter --propupd

缺点是,这会更新全部受 监督的文件rkhunter。因此,如果另一个包裹真的是被操纵的, 这信息对于这个其他包丢失了每当您更新整个数据库时。

如何仅更新使用包管理器有意升级的文件的属性,并保持所有其他文件属性完好无损,以便仍报告潜在威胁rkhunter

答案1

  1. APT_AUTOGEN="false"/etc/default/rkhunter

  2. 此脚本创建 rkhunter propupdate 命令,您在 apt 运行后需要:


#!/bin/bash
# store this file as /usr/local/sbin/rkhunter-auto-update-after-apt

cat /var/lib/rkhunter/db/rkhunter.dat|fgrep "File:" \
    | awk -F ":" '{print $3}' > /tmp/rkhunter-list.txt
NUM=$(grep -n "startup archives unpack" /var/log/dpkg.log|cut -d":" -f1|tail -n1)
tail --lines=+$NUM /var/log/dpkg.log | grep 'installed' \
    | awk '{ print $5 }'|sed s/:.*//|xargs dpkg-query -L > /tmp/installed-list.txt

cat /tmp/rkhunter-list.txt | while read BIN; do   
    if grep "^${BIN}$" /tmp/installed-list.txt > /dev/null; then
        if [ "" != "$BIN" ];then
                echo rkhunter --propupd "$BIN"
        fi
    fi
done

(在 trisquel 上,rkhunter.dat文件少了一行,因此 awk 需要{print $2}在那里)

在 apt-get 运行后调用此脚本以更新列表。

如果您满意,请删除echo并创建一个钩子/etc/apt/apt.conf.d/91rkhunter-post-apt

DPkg::Post-Invoke { "if [ -x /usr/bin/rkhunter ]; then /usr/local/sbin/rkhunter-auto-update-after-apt; fi"; };

相关内容