《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》——1.4 系统软件安全管理

简介:

本节书摘来自华章计算机《高性能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中的丰富软件了。

相关文章
|
7天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
31 3
|
7天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
26 2
|
11天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
18天前
|
运维 持续交付 API
从零构建微服务架构:一次深度技术探索之旅####
【10月更文挑战第28天】 本文记录了作者在从零开始构建微服务架构过程中的深刻技术感悟,通过实战案例详细剖析了微服务设计、开发、部署及运维中的关键要点与挑战。文章首先概述了微服务架构的核心理念及其对企业IT架构转型的重要性,随后深入探讨了服务拆分策略、API网关选型、服务间通信协议选择、容器化部署(Docker+Kubernetes)、以及持续集成/持续部署(CI/CD)流程的设计与优化。最后,分享了在高并发场景下的性能调优经验与故障排查心得,旨在为读者提供一套可借鉴的微服务架构实施路径。 ####
55 3
|
17天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
39 5
linux系统服务二!
|
17天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
38 3
linux系统服务!!!
|
7天前
|
传感器 算法 物联网
智能停车解决方案之停车场室内导航系统(二):核心技术与系统架构构建
随着城市化进程的加速,停车难问题日益凸显。本文深入剖析智能停车系统的关键技术,包括停车场电子地图编辑绘制、物联网与传感器技术、大数据与云计算的应用、定位技术及车辆导航路径规划,为读者提供全面的技术解决方案。系统架构分为应用层、业务层、数据层和运行环境,涵盖停车场室内导航、车位占用检测、动态更新、精准导航和路径规划等方面。
39 4
|
7天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
28 3
|
10天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
29 6
|
10天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
37 6
下一篇
无影云桌面