有些事情对我们系统管理员来说至少发生过一次,就是你感觉到你的系统好像不对劲
,开始怀疑有人已经突破了你的防御。确定此事是否发生的途径之一就是检查系统文
件有没有变化,你需要安装TripWire或者其他审计工具来帮忙。
幸运的是,Red Hat的程序员们开发了一个工具,叫作Red Hat Package Manager,简
称为RPM。在Red Hat的Linux系统中是默认存在的。
RPM能为我做些什么?
RPM是一个强大的工具,用来安装、升级和校验Red Hat系统上的软件包。它的校验功能可以用来确认文件是否被修改或覆盖,这正是本文所要讨论的。除了文件的大小和时间戳,RPM还能检查文件的信息文摘或MD5签名。
在
RFC 1321中有MD5的详细描述。简单的说,MD5根据文件的内容用算法产生一个唯一的128位签名,用任何方法改变文件都会导致签名改变。尽管人
们一直在讨论修改文件后能保持签名不变的理论可能性,但截止到目前还没有人能够做到。所以在文件使用前后各作一次MD5检查,能够99.9999%的保证
文件没有改变。
如何使用RPM来检查文件?
有一些RPM的参数你需要注意。第一个是“-V”,它检查与某一RPM包相关所有文件的
完整性。语法为:
rpm -V package_name_to_verify
比如系统上运行了sendmail,通过以下命令检查所有相关文件的完整性:
rpm -V sendmail
输出看来是这样的:
[root@fubar /root]# rpm -V sendmail
S.5....T c /etc/aliases
missing /etc/mail/ip_allow
S.5....T c /etc/mail/relay_allow
S.5....T c /etc/sendmail.cf
S.5....T c /etc/sendmail.cw
S.5....T /usr/sbin/sendmail
S.5....T /var/log/sendmail.st
[root@fubar /root]#
只有校验失败的文件才被列出,没有列出的文件应该是完好无损的。左边给出了为什
么校验失败的原因,具体解释如下:
S = 大小改变
M = 权限改变
5 = MD5改变
L = 连接改变
D = 设备改变
U = 用户改变
G = 组改变
T = 日期和时间改变
missing = 文件丢失
从上面的输出可见,文件aliases, relay_allow, sendmail.cf 和 sendmail.cw的大
小、时间日期和MD5发生了改变。由于它们是配置文件,应该没什么关系。但是/usr/
bin/sendmail的改变就要引起注意了,它是一个监听在25端口的可执行文件,用来接
受信件。除非你升级了sendmail,否则它不应该校验失败,很明显有人修改或者覆盖
了原来的sendmail文件,可能带有木马或者后门。
输出还显示ip_allow文件被删除或者被改名。这是用来检查和控制SPAM的一个文件,
它的丢失某种程度上表明相关的二进制文件可能被修改。
当观察RPM输出的时候,在检查日期时间和文件大小的同时,要特别注意MD5是否变化,入侵者经常修改或覆盖某些文件来隐藏他们的踪迹。
挨个检查软件包很费时间,用“-a”选项可以一次性检查所有RPM包:
rpm -Va > /root/rpm_chk.txt &
这条命令让RPM检查服务器上安装的RPM包,结果输出到rpm_chk.txt文件,最后的可选项“&”表示命令在后台运行,给出shell提示符可以作其他事情。
最后一个技巧,当你想要检查某个文件而不知道它属于哪个RPM包,可以用“-qf”选
项查看哪个软件包安装了此文件:
[root@fubar /root]# rpm -qf /usr/sbin/sendmail
sendmail-8.8.7-20
[root@fubar /root]#
这表明此sendmail文件是sendmail-8.8.7-20 RPM包的一部分。如果一个文件没有关联
的RPM包,输出大概是这样的:
[root@fubar /root]# rpm -qf /sbin/.vile_stuff
file /sbin/.vile_stuff is not owned by any package
[root@fubar /root]#
小心你系统上运行的不能被校验的程序!
如何开始?
首先,你必须有root权限来运行RPM。当以普通用户身份来运行RPM校验时,它的输出信息是不正确的,因为普通用户对某些文件可能都没有read权限。这意味着只有root才能检查整个系统文件的完整性。
RPM二进制文件在/bin目录下,它的数据库文件在/var/lib/rpm下。
最安全的方法是在服务器连到Internet之前,把这些数据文件和RPM二进制文件保存到
软盘或CD上,这能够保证你的工具自身是安全的。
第一件事是检查/var/lib/rpm,这些数据文件的日期和时间应该和安装系统当时的情
况一样,如果你发现日期不对,就要小心了。
其次,我们可以使用RPM来校验自身的完整性:
[root@fubar /root]# rpm -V rpm
[root@fubar /root]#
没有输出表示RPM应该没有什么问题。但这不是绝对的,因为二进制文件如果本身可疑就很难说。所以要尽可能使用CD上的工具,如果你没有比较安全的工具,用RPM校验自身在一般情况下也足够了。
现在我们知道RPM自身没有问题了,对整个系统作个检查:
rpm -Va > /root/rpm_chk.txt &
一个简单的技巧就是定期检查整个系统,然后比较不同时期的rpm_chk.txt,从而发现
哪些不正常的文件改动。
总结
尽管RPM不是专门设计用来审计文件的,但它可以帮你不少忙。目前Red Hat Linux各
个版本中都默认自带RPM,这意味着你完成Red Hat Linux安装以后,就可以使用RPM了,同时MD5提供了一种高精确度的文件校验方法。唯一注意的是要保证RPM自身和它所有数据文件的完整性,以防止入侵者修改它们来隐藏踪迹。
安装 rpm时安装其依赖的rpm包:
#rpm -Uvh --aid rpmname
不过很遗憾
warning: alsa-lib-devel-1.0.6-5.RHEL4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
error: open of /var/spool/up2datepkgconfig-0.15.0-3.i386.rpm failed: No such file or directory
error: Failed dependencies:
pkgconfig is needed by alsa-lib-devel-1.0.6-5.RHEL4.i386
这就说明附属的依赖包要放在 /var/spool/文件夹下
分享到:
相关推荐
RPM校验功能主要用于检查已安装的软件包是否发生了未经授权的更改,如文件被修改或替换等。该功能能够通过比较文件的实际属性与存储在RPM数据库中的属性来进行校验。具体来说,RPM会检查以下文件属性: - 文件大小 ...
#### RPM校验功能 RPM提供了一种强大的校验机制,能够帮助用户检测系统中安装的软件包及其文件是否发生了变化。这一功能对于实现入侵检测非常重要,因为它可以帮助管理员发现潜在的安全威胁或未经授权的更改。 ####...
- `rpm -V`用于检查已安装软件包的状态,包括文件大小、权限、MD5校验码等。 - `rpm --checksig`用于验证软件包的数字签名,确保软件来源的安全性。 #### 精通RPM之制作篇 - **RPM软件包制作过程**: - **准备...
RPM包通常包含了已经编译好的程序和安装脚本,可以方便地进行软件的安装、卸载、升级、查询、校验等操作。在Linux系统中,使用RPM包管理器安装软件包是一种常见且方便的方式。 CentOS(Community ENTerprise ...
**校验与查询**:RPM支持对已安装软件包的状态进行校验,并提供了强大的查询功能。 **打包与解包**:可以将程序打包成RPM格式,便于分发和安装。 **跨平台支持**:RPM支持多种硬件架构(如x86、sparc等),促进了...
- `rpm -Vp <package>.rpm`验证未安装的rpm包文件。 3. **验证类型**: - `rpm -V`后跟的选项代表不同的验证类型: - `S` - 文件大小 - `M` - MD5校验和 - `D` - 设备 - `L` - 链接目标 - `U` - 用户 - `G`...
### RPM命令手册详解 #### 一、安装 RPM(Red Hat Package Manager)是Linux操作系统中用于管理软件包的一种工具。它支持安装、卸载、升级、查询等操作。下面我们将详细介绍RPM命令中与安装相关的操作。 ##### ...
- **源代码包**:通常以 `.src.rpm` 作为文件扩展名,需要经过编译才能安装到系统中,适用于需要自定义编译选项或进行深入调试的情况。 #### RPM 常用命令与参数详解 ##### 1. 安装显示安装进度 - **命令**: `rpm ...
这个包可能包含了多个RPM文件,因为GCC通常由多个组件组成,如gcc、gcc-c++、gcc-gfortran等。 2. **传输RPM包**:将下载好的RPM包通过USB驱动器、网络共享或者其他方式传输到目标系统上。 3. **安装RPM包**:在...
列出一个未被安装进系统的 RPM 包文件中包含有哪些文件? ```sh # rpm -qilp ``` **描述**: - `-p` 或 `--package`:查询软件包的文件。 - `-l` 或 `--list`:列出软件包中的文件列表。 - `-i` 或 `--info`:...
2. **rpm -i [选项] 包文件** - 用于安装新的软件包或更新现有的软件包。 - `-i` 表示安装/更新。 - `-v`: 显示详细信息。 - `-h` 或 `-V`: 在安装过程中显示进度条。 - `--test`: 测试安装过程而不实际执行...
- 检查内容:包括文件权限、文件类型、用户和组所有权、文件大小、时间戳、MD5校验码等。 #### 五、RPM高级功能 - **配置文件管理**:在使用`rpm -e`卸载软件包时,可以通过`--nodeps`选项来选择性保留或删除配置...
- `--rcfile <文件>`:设置 RPM 配置文件。 - `--dbpath <路径>`:设置 RPM 数据库存储路径。 #### 五、总结 通过本文,我们详细了解了 RPM 命令的各种用途及其选项。掌握这些命令能够极大地提高 Linux 用户管理...
压缩包解压后,可以发现多个rpm文件,这些文件包含了库文件和系统服务的安装包。例如,systemd-libs-219-78.el7_9.9.i686.rpm和systemd-libs-219-78.el7_9.9.x86_64.rpm分别是32位和64位的systemd库文件,systemd是...
列出一个未被安装进系统的 RPM 包文件中包含有哪些文件 要查看尚未安装的 RPM 包中的文件列表,使用: ```bash # rpm -qilp ``` #### 三、总结 通过上述介绍,我们可以看到 RPM 提供了非常强大的功能来管理 Linux...
它用于安装、卸载、更新、查询、校验、获取和分发单个软件包,这些软件包内含已压缩的二进制文件、脚本和软件包的元数据。RPM软件包文件通常具有“.rpm”扩展名。 本压缩包文件标题"qt5-rpm-macros-5.9.7-5.el7-9.x...
### RHEL6之6:Linux命令、Bash、Shell脚本、Sudo、GPG应用、RPM包签名校验 #### 常见的文件操作命令 在Red Hat Enterprise Linux 6 (RHEL6)中,掌握常用的文件操作命令对于高效管理文件系统至关重要。 ##### 1. ...
此外,RPM还维护了一个所有已安装包及其文件的数据库,方便用户验证包的完整性并查询有关文件或包的信息。 Red Hat公司鼓励其他发行版厂商也考虑采用RPM作为它们的包管理系统。RPM具有极高的灵活性和易用性,并且...
- RPM是Linux下的一种软件包管理器,通过rpm包,可以安装、卸载、升级、查询和校验软件包。 - 在Linux系统中,通过tar和rpm命令可以进行软件包的解压和安装操作,其中tar命令用于解压缩文件,rpm命令用于安装rpm格式...