本节书摘来自华章计算机《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》一书中的第1章,第1.4节,作者:高俊峰著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.4 系统软件安全管理
根据安全机构权威统计,80%以上的服务器遭受攻击都是由于服务器上的系统软件或者应用程序的漏洞所导致,黑客通过这些软件的漏洞,可以很轻易地攻入服务器,由此可见,软件的漏洞已经成为安全的重中之重。作为一名运维人员,虽然无法保证所有应用程序的安全,但是对于系统软件的安全,要有定期检查并试图修复漏洞的意识。修复漏洞最常见的办法就是升级软件,将软件始终保持在最新状态,可以在一定程度上保证系统安全。
在Linux下软件的升级可以分为自动升级和手动升级两种方式。自动升级一般是在有授权的Linux发行版或者免费Linux发行版下进行的,只要输入升级命令,系统会自动完成升级工作,无需人工干预。
手动升级是指有针对性地进行某个系统软件的升级,例如升级系统的SSH登录工具、gcc编译工具等。手动升级其实就是通过RPM包实现软件更新的,通过这种方式在升级软件时可能会遇到软件之间的依赖关系,升级相对比较麻烦。
1.4.1 软件自动升级工具yum
yum是yellow dog updater modified 的缩写,yellow dog(黄狗)也是Linux的一个发行版本,只不过Redhat公司将这种升级技术利用到自己的发行版上就形成了现在的 yum。 yum是进行Linux自动升级常用的一个工具,通过yum工具配合互联网即可实现自动升级系统。例如,一个经过授权的Redhat Linux操作系统,或者一个CentOS Linux系统,只要该系统能连接互联网,输入yum update 即可实现系统自动升级。通过yum进行系统升级实质是使用yum命令下载指定远程互联网主机上的RPM软件包,然后自动进行安装,同时解决各个软件之间的依赖关系。
1.4.2 yum的安装与配置
1 . yum的安装
检查是否已经安装yum:
[root@localhost ~]# rpm -qa|grep yum
如果没有任何显示,表示系统中还没有安装yum工具。yum安装包在CentOS系统光盘中可以找到,执行如下命令进行安装:
[root@localhost ~]# rpm -ivh yum-*.noarch.rpm
安装yum需要python-elementtree、python-sqlite、urlgrabber、yumconf等软件包的支持,这些软件包在CentOS Linux系统安装光盘中均可找到。如果在安装yum过程中出现软件包之间的依赖性,只需按照依赖提示寻找相应软件包安装即可,直到yum包安装成功。
2 . yum的配置
安装完yum工具安装后,接下来的工作是配置yum。yum的配置文件有主配置文件/etc/yum.conf和资源库配置目录/etc/yum.repos.d。安装yum后,默认的一些资源库配置可能无法使用,因此需要进行修改。下面介绍/etc/yum.repos.d/CentOS-Base.repo资源库配置文件的内容以及各项的详细含义。
[root@localhost ~]#more /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
[updates]
#下面这段是updates更新模块要用到的部分配置
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=
updates gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#下面这段指定的是有用的额外软件包部分(extras)配置
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=
extras gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#下面这段指定的是扩展的额外软件包部分(centosplus)配置
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=
centosplus gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#下面这段是contrib配置部分
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=
contrib gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
在上面这个配置中,几个常用关键字的含义介绍如下:
name表示发行版的名称,其格式表示“操作系统名和释出版本”,“Base”表明此段寻找的是Base包信息。
mirrorlist表示yum在互联网上查找升级文件的URL地址。其中“$basearch”代表系统的硬件架构,如“i386”、“x86-64等,同时,yum在资源更新时,会检查baseurl/repodata/repomd.xml文件。“repomd.xml”是一个索引文件,它的作用是提供更新RPM包文件的下载信息和SHA校验值。“repomd.xml”包括了三个文件,分别为other.xml.gz、filelists.xml.gz和primary.xml.gz,表示的含义依次是其他更新包列表、更新文件集中列表和主要更新包列表。
gpgcheck表示是否启用gpg检查,1表示启用,0表示不启用校验。如果启用,就需要在配置文件中注明GPG-RPM-KEY的位置。
gpgkey用来指定GPG密钥的地址。
1.4.3 yum的特点与基本用法
1 . yum的特点
yum的特点如下:
安装方便,自动解决增加或删除RPM包时遇到的依赖性问题。
可以同时配置多个资源库(Repository)。
配置文件简单明了(/etc/yum.conf、/etc/yum.repos.d/CentOS-Base.repo)。
保持与RPM数据库的一致性。
yum会自动下载所有所需的升级资源包并默认放置在/var/cache/yum目录下,当第一次使用yum或yum资源库更新时,软件升级所需的时间可能较长。
2 . yum的基本用法
yum的基本用法主要有4种,下面分别介绍。
(1)通过yum安装和删除RPM包
安装RPM包,如dhcp:
[root@localhost ~]# yum install dhcp
删除RPM包,包括与该包有依赖性的包:
[root@localhost ~]# yum remove licq
注意,同时会提示删除licq-gnome、licq-qt、licq-text。
(2)通过yum工具更新软件包
检查可更新的RPM包:
[root@localhost ~]# yum check-update
更新所有的RPM包:
[root@localhost ~]# yum update
更新指定的RPM包,如更新kernel和kernel source:
[root@localhost ~]# yum update kernel kernel-source
大规模的版本升级,与yum update不同的是,陈旧的包也会升级:
[root@localhost ~]# yum upgrade
(3)通过yum查询RPM包信息
列出资源库中所有可以安装或更新的RPM包的信息:
[root@localhost ~]# yum info
列出资源库中特定的可以安装或更新以及已经安装的RPM包的信息:
[root@localhost ~]# yum info vsftpd
[root@localhost ~]# yum info perl*
注意,可以在RPM包名中使用匹配符,如上面的例子列出所有以perl开头的RPM包的信息。
列出资源库中所有可以更新的RPM包的信息:
[root@localhost ~]# yum info updates
列出已经安装的所有的RPM包的信息:
[root@localhost ~]# yum info installed
列出已经安装但是不包含在资源库中的RPM包的信息:
[root@localhost ~]# yum info extras
注意,也就是通过其他网站下载安装的RPM包的信息。
列出资源库中所有可以更新的RPM包:
[root@localhost ~]# yum list updates
列出已经安装的所有RPM包:
[root@localhost ~]# yum list installed
列出已经安装的但不包含在资源库中的RPM包:
[root@localhost ~]# yum list extras
注意,也就是通过其他网站下载安装的RPM包。
列出资源库中所有可以安装或更新的RPM包:
[root@localhost ~]# yum list
列出资源库中特定的可以安装或更新以及已经安装的RPM包:
[root@localhost ~]# yum list sendmail
[root@localhost ~]# yum list gcc*
注意,可以在RPM包名中使用匹配符,如上面的例子列出了所有以gcc开头的RPM包。
搜索匹配特定字符的RPM包的详细信息:
[root@localhost ~]# yum search wget
注意,可以通过“search”在RPM包名、包描述中搜索。
搜索包含特定文件名的RPM包:
[root@localhost ~]# yum provides realplay
(4)通过yum操作暂存信息(/var/cache/yum)
清除暂存的RPM包文件:
[root@localhost ~]# yum clean packages
清除暂存的RPM头文件:
[root@localhost ~]# yum clean headers
清除暂存中旧的RPM头文件:
[root@localhost ~]# yum clean oldheaders
清除暂存中旧的RPM头文件和包文件:
[root@localhost ~]# yum clean
或
[root@localhost ~]# yum clean all
注意,上面的两个命令相当于yum clean packages + yum clean oldheaders。
1.4.4 几个不错的yum源
由于CentOS系统自带的官方yum源中去除了很多有版权争议的软件,所以可使用的软件种类并不丰富,而且软件版本普遍较低,对于软件bug修复更新也很慢,有时候需要使用最新稳定版本的软件时,可能需要手动进行软件更新,操作比较麻烦。下面介绍几个不错的yum源,以供软件升级和漏洞修复使用。
(1)EPEL
EPEL全称是企业版Linux附加软件包,是由特别兴趣小组创建、维护并管理,针对红帽企业版Linux(RHEL)及其衍生发行版(例如CentOS、Scientific Linux)的一个高质量附加软件包项目。其官方网址为:http://fedoraproject.org/wiki/EPEL/zh-cn
。EPEL的软件包不会与企业版Linux官方源中的软件包发生冲突,或者互相替换文件,因此可以放心使用。
EPEL包含一个名为“epel-release”的包,这个包包含了EPEL源的gpg密钥和软件源信息。可以通过yum命令将这个软件包安装到企业级Linux发行版上,这样就可以使用最全面、最稳定的Linux软件包了。除了epel-release源,还有一个名为“epel-testing”的源,这个源包含最新的测试软件包,其版本很新但是安装有风险,可以根据情况自行斟酌使用。
相关的EPEL软件包可以从EPEL官方网站下载,现在有针对企业版5和企业版6的两个RPM包,读者可根据系统环境进行下载使用。
(2)RPMForge
RPMForge是一个第三方的软件源仓库,也是CentOS官方社区推荐的第三方yum源,它为CentOS系统提供了超过10 000个软件包,被CentOS社区认定为最安全也最稳定的一个软件仓库。但是由于这个安装源不是CentOS本身的组成部分,因此要使用RPMForge,需要手动下载并安装。RPMForge的官方网站是http://repoforge.org/
,可以在http://pkgs.repoforge.org/rpmforge-release/
下载RHEL/Centos各个版本的“rpmforge-release”包,这样就可以使用RPMForge中的丰富软件了。