我被告知我应该这样做,rpm -Va
因为:
必须配置操作系统,以便系统文件和命令的加密哈希与供应商值匹配...如果没有加密完整性保护,未经授权的用户可能会在不被发现的情况下更改系统命令和文件
所以 arpm -Va | grep '^..5'
已经完成,如果有任何返回,那就是应该是一个问题。
通过从 DVD 进行全新安装,我可以成功满足该标准。
不过,我也是告诉配置文件,例如,/etc/ssh/sshd_config
更不用说/etc/audit/audit.rules
一些明显的其他文件来使系统正常运行,更改这些文件当然会导致这些文件与供应商值不匹配,因此rpm -Va
返回的主要是S.5....T
有人可以解释一下这样做的目的或理由吗?以及grep '^..5'
应该如何工作?有没有一种方法可以使这项工作顺利进行——是的,我更改了 .conf 文件,但已rpm
更新为不将指定的包标记为已改变的?
答案1
首先从简单的部分开始,该grep '^..5
部分研究以任意两个字符开头且后跟 的行的输出5
。这5
代表(从man rpm
):
5 摘要(以前的 MD5 总和)不同
作为相应文件已更改的相当好的指示器。
接下来,我鼓励任何rpm -Va | grep ...
调查忽略配置文件。正如您所指出的,这些文件旨在由系统管理员更改。幸运的是,它们在rpm -Va
输出中用标记表示c
:
输出的格式是一个 9 个字符的字符串,一个可能的属性标记:
c %config configuration file. d %doc documentation file. g %ghost file (i.e. the file contents are not included in the package payload). l %license license file. r %readme readme file.
来自包头,后跟文件名。
...所以我会考虑以下内容:
sudo rpm -Va | awk '/^..5/ && $2 != "c"'
grep ^..5
...它将这个想法与忽略被分类为配置文件的文件联系在一起。或者,您可以捕获每个标记的输出行,然后将您接受更改风险的配置文件“列入白名单”——然后,当假定的静态配置文件发生更改时,您会收到警报。
如果不重新打包 RPM,我不知道如何更新 RPM 数据库中的摘要以表明您已更改配置文件,这就是我建议上述解决方法的原因。