RPM是Red Hat Package Manager的缩写即Red Hat软件管理器。它是一个开放的包管理软件,由Red Hat公司所开发和维护,可以在Red Hat Linux及其他的Linux上运行。用于管理RPM软件包的主要工具是rpm命令,它有六个基本的功能:安装、卸载、升级、更新、查询和校验软件包。此外,它还有鲜为人知的功能—安全维护。本文介绍如何使用rpm来进行安全维护。
1.检查系统公钥
在RPM软件包安装前,rpm命令通过检查软件包签名可以保证软件没有被篡改和破坏。现在无论发行版、YUM或apt等软件库都带有GPG公有密钥(下文简称公钥)签名,它们保存在 /usr/share/doc/fedora-release-4目录下,主要包括RPM-GPG-KEY、RPM-GPG-KEY-beta和RPM-GPG-KEY-fedora-extras等。使用如下命令来检测系统公钥:
[root@localhost ~]#rpm -qagpg-pubkey*
gpg-pubkey-a109blec-3f6e28d5
gpg-pubkey-66534c2b-41d57eae
gpg-pubkey-1ac70ce6-41bebeef
gpg-pubkey-9a2a932b-4192dfad
gpg-pubkey-a109b1ec-3f6e28d5
gpg-pubkey-e42d547b-3960bdf1
gpg-pubkey-66534c2b-41d57eae
gpg-pubkey-e42d547b-3960bdf1
pgp-pubkey-1aa78495-3eb24301
pgp-pubkey-4f2a6fd2-3f9d9d3b0
其中“gpg-pubkey-a109b1ec-3f6e28d5”代表FedoraCore公钥,如果想知道详细的资料,则可以输入以下命令
[roat@localhost~]# rpm-qi gpg-pubkey-a109b1ec-3f6e28d5 | less
从输出的结果可看出,密钥的名称分为版本号和发行号两种数字,本密钥适用于livna.org rpms的gpg。如果希望安装新的或升级PRM软件包时,自动检查密钥,如果不比配就会停止程序的继续进行
2 .导入和删除GPG密钥
1.1).导入官方密钥
#rpm –import RPM-GPG-KEY-fedora
.导入软件仓密钥
#rpm –import http://svn.rpmforge.net/svn/branches/rpms/matthias/apt/RPM-GPG-KEY.freshrpms
.删除密钥
#rpm -e gpg-pubkey-a109b1ec-3f6e28d5
软件安装前,检查签名的正确性:
[root@localhost ~]#cd /root/downfile
[root@localhost downfile]# rpm --checksig yumex-0.42-5.0.fc4.noarch.rpmyumex-0.42-5.0.fc4.noarch.rpm:(shal)dsa shal md5 gpg OK
3.检测软件完整性
以上结果全部通过后,就可以安心地安装这个软件了。如果缺少密钥DSA、SHA1和GPG及PRM文件遭到破坏就全部以大写出现;RPM文件内容被修改则MD5、GPG显示为BAD。
软件安装后,可以使用rpm命令辨别是否有人进行过修改,下面介绍具体的步骤:
[root@locahost ~]#rpm –V sendmail
..?...... c /etc/mail/domaintable
..?...... c /etc/mail/mailertable
.......T. c /etc/mail/sendmail.cf
..?...... c /etc/mail/virtusertable
S.5....T. c /var/log/mail/statistics
上面输出结果的右侧列出与原始状态不匹配的文件,左侧现实存储系统属性出现的错误。其中,“.”点表示通过测试,“?”表示因为某些原因计算不出文件的md5sum;“S”表示文件大小已经变更;“T”代表时间已经变更,“5”代表md5sum已经变更。此外,rpm命令还可以检查单个文件的完整性(已启动脚本为例)。
首先使用如下命令检查文件的来源:
[root@localhost ~]# rpm -qf /etc/rc.d/init.d/sendmail
Sendmail-8.13.4-2
然后再使用下列命令列出软件包含的文件存储信息:
[root@localhost ~]#rpm –ql --dump sendmail|grep /etc/rc.d/init.d/sendmail
/etc/rc.d/init.d/sendmail 334811153829111d213325d3ce95952cf87f4a05d8a488 01100755 root root 1 0 0 X
由上得到以下有用的存储信息:
文件中最初的字符数(3348);
Sendmail文件内容的md5sum(1d213325d3ce95952cf87f4a05d8a488);
与该文件关联的权限
文件的所有者(root)
最后,检查实际文件内容是否被修改:
[root@localhost ~]# ls –l /etc/rc.d/init.d/sendmail
-rwxr-xr-x 1 root root 3348 3月6 20:35 /etc/rc.d/init.d/sendmail
[root@localhost ~]# md5sum /etc/rc.d/init.d/sendmail
1d213325d3ce95952cf87f4a05d8a488 /rtc/rc.d/init.d/sendmail
这里显示的信息与上步的输出信息相同,启动脚本与原始脚本相匹配。Sendmail软件报的文件大小、md5sum和时间都被变更,这是正常的,而且启动脚本没有变更,这个如果变更就会影响软件正常执行。所以,这个软件包的RPM数据库处在安全状态。
4.修复被破坏的RPM数据库
如果RPM数据库被破坏,在软件安装、删除等会长期无响应,有事重启系统会自动修复,如果不能修复,可以参考一下的方法。
首先,使用如下命令杀出当前的RPM数据库
#rm -f /var/lib/rpm/_db.*
然后,使用下列命令重建数据库:
#rpm –vv -rebuilddb
5.检查系统的安全性
如果系统遭到入侵或被攻击,一些重要文件必须被修改,主要包括含有字符串/bin和/sbin的文件。可以通过一下命令进行检查:
[root@localhost ~]# rpm -Va|grep ‘bin\/’
如果输出结果显示多个存储属性发生变化,就表明系统曾被攻击过。较好解决办法是断开网络,备份重要文件重新安装系统。
RPM命令可以保证软件包安装前后的完整性,并且可以跟踪软件里文件被修改的存储信息,从而及时发现系统被入侵的情况。但聪明的入侵者是会先破坏RPM架构,让其失去成为安全防护工具的意义。为了系统更加安全,大家应该及时备份系统的RPM数据库。
本文出自 “李晨光原创技术博客” 博客,谢绝转载!
- 至顶网推荐-Rpm另类用法加固Linux安全
http://www.zdnet.com.cn/ 650) this.width=650;" onclick='window.open("http://blog.51cto.com ...
- Linux CentOS7 VMware 安装软件包的三种方法、rpm包介绍、rpm工具用法、yum工具用法、yum搭建本地仓库
一.安装软件包的三种方法 Linux下游三种安装方法,rpm工具.yum工具.源码包.rpm按装一个程序包时,有可能因为该程序包依赖另一个程序包而无法安装:yum工具,可以连同依赖的程序包一起安装. ...
- RPM常见用法
rpm常见的用法: 命令 说明 rpm -i <.rpm file name> 安装指定的 .rpm 文件 rpm -U <.rpm file name> 用指定的.rpm文件 ...
- 研究 Javascript的&&和||的另类用法
这篇文章主要介绍了Javascript的&&和||的另类用法,需要的朋友可以参考下 最近也没什么心思写文章了,感觉总有忙不完的事情,呵. 不过这些天又开始研究起 Titanium 来, ...
- 如何加固Linux系统
如何加固Linux系统 一. 账户安全 1.1 锁定系统中多余的自建帐号 检查方法: 执行命令 #cat /etc/passwd #cat /etc/shadow 查看账户.口令文件,与系统管理员确认 ...
- Python装饰器的另类用法
之前有比较系统介绍过Python的装饰器(请查阅<详解Python装饰器>),本文算是一个补充.今天我们一起探讨一下装饰器的另类用法. 语法回顾 开始之前我们再将Python装饰器的语法回 ...
- Javascript的&&和||的另类用法
Javascript的&&和||的另类用法. 又开始研究起 Titanium 来,发现其官方出品的MVC框架(Alloy)还是挺不错的,刚开始苦于没有好的代码来学习,文档又少,所以一直 ...
- 7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库
7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库 三种方法 rpm工具----->类型windows下的exe程序 ...
- 写在Github被微软收购之际 - Github的那些另类用法
这几天朋友圈被微软75亿美元收购Github的新闻刷屏了.Jerry也来贡献一篇和Github相关的文章. 这篇文章包含了Jerry平时对于Github的一些另类用法.目录如下: 1. 部署HTML应 ...
随机推荐
- ArcGIS api for javascript——创建地图
描述 这个示例显示ArcGIS Server的一个地图.ArcGIS Server地图是缓存的,意味着它有服务器管理员建来提升性能的一组预先渲染的切片.由于这个原因地图通过ArcGISTiledMap ...
- [Python] Read and plot data from csv file
Install: pip install pandas pip install matplotlib # check out the doc from site import pandas as pd ...
- 通过C语言程序改动控制台的背景和前景颜色
本文主要解说怎样通过C语言来改动dos背景和前景颜色.我们首先来看一下dos的背景颜色的属性. 打开開始菜单,点击执行,弹出执行对话框.输入cmd,回车. (打开dos控制台) 在命令提示符界面下,输 ...
- vue.2.0-路由
vue2.0 路由: http://router.vuejs.org/zh-cn/index.html 基本使用: 1. 布局 <router-link to="/home" ...
- 8. java操作mongodb——查询数据
转自:https://www.cnblogs.com/adjk/p/6430074.html 通过find方法查询集合中的文档信息 ---------------------------------- ...
- 解决Maven项目相互依赖/循环依赖/双向依赖的问题
转自:https://blog.csdn.net/leolu007/article/details/53079875 添加新随笔很多时候随着项目的膨胀,模块会越来越多 ...
- Ubuntu下通过Firefox Opera Chromium浏览器直接执行java应用程序(打开java jnlp文件)实现在服务器远程虚拟控制台完成远程管理的方法
远程虚拟控制台依赖于java运行环境(jre),在通过浏览器打开链接前,系统必须安装jre环境,远程管理控制台其实就是一个java程序,打开相应的网站会下载一个jnlp(java网络加载协议)的文件, ...
- 学习《Python数据科学手册》高清中文PDF+高清英文PDF+代码
如果有一定的数据分析与机器学习理论与实践基础,<Python数据科学手册>这本书是绝佳选择. 是对以数据深度需求为中心的科学.研究以及针对计算和统计方法的参考书.很友好实用,结构很清晰.但 ...
- 【Django】Cookie
目录 Cookie介绍 操作Cookie 获取Cookie 设置 Cookie 删除Cookie @ Cookie介绍 Cookie的由来 大家都知道==HTTP协议是无状态的==. ==无状态的的意 ...
- Activiti工作流框架学习(一)——环境的搭建和数据表的了解
一.什么是工作流 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现 ...