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应 ...
随机推荐
- [Recompose] Make Reusable React Props Streams with Lenses
If you hard-code a stream of props to target a specific prop, it becomes impossible to reuse that st ...
- [Recompose] Merge RxJS Button Event Streams to Build a React Counter Component
Combining input streams then using scan to track the results is a common scenario when coding with s ...
- Cocos2d-x 3.0 Schedule in Node
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- Firefox访问https的网站,一直提示不安全
http://mozilla.com.cn/thread-374897-1-1.html 要激活此功能步骤如下: 在地址栏键入"about:config" 点击“我了解此风险” 在 ...
- HDU 5889 Barricade (Dijkstra+Dinic)
思路: 首先 先Dijkstra一遍 找出来最短路 不是最短路上的边都不要 然后呢 套个Dinic模板就好了-- 求个最小割 输出 大功告成~~ //By SiriusRen #include < ...
- Java 开源博客 —— Solo 0.6.8 正式版发布了!
Java 开源博客 -- Solo 0.6.8 正式版发布了,欢迎大家下载.另外,欢迎观摩我们的另一个产品,在线 Golang IDE--Wide! 特性 基于标签的文章分类 博客/标签 Atom/R ...
- 打包,VS 之 InstallShield Limited Edition for Visual Studio 2015 图文教程
转载收藏于 https://www.cnblogs.com/xinaixia/p/5473815.html 从Visual Studio 2012开始,微软就把自家原来的安装与部署工具彻底废掉了,转而 ...
- 第一次接触正则表达式/^[A-Za-z_][A-Za-z0-9_]{5,15}$/
/^[A-Za-z_][A-Za-z0-9_]{5,15}$/ /^$/ :完整表达式 ^ :表示以什么开始,或者取反 $ :结束 ^[A-Za-z_] : 以字母开始,无论大小都可以: [^A-Za ...
- Maven学习总结(12)——eclipse中构建多模块maven项目
摘要:本文要用Maven来构建一个多模块的web项目 项目结构如下: system-parent |----pom.xml |----system-domain ...
- Linux中为XEN网桥绑定物理网卡
XEN虚拟机会默认将可以连通外网的网卡绑定到xenbr0上, 因此如果需要切换到其他物理网卡上时,需要自己配置脚本或执行命令. 1.添加脚本绑定 a.编写一个脚本,指定网卡与网桥绑定的关系 # vim ...