当你在安装RHEL 9新版本时,系统会附带一组最少的预安装软件包和服务,以保持系统轻量和安全。但是,随着时间的推移,当安装新的软件包和服务越来越多,你会发现系统可能会变得臃肿并容易受到安全威胁。
为此,在本文中小编主要介绍如何在基于RHEL发行版(例如Rocky Linux、AlmaLinux和Fedora )上禁用和删除不需要的服务和包,以确保系统的安全性和正常运转。
如果你计划使用新安装的RHEL系统来托管服务,例如一个在Apache或Nginx上运行的小型网站,或者提供网络服务(如DNS、DHCP、PXE启动、FTP服务器等)或其它不需要运行Postifx MTA、CUPS和Avahi守护程序的服务,那么为什么我们要保留所有这些不必要的守护进程安装或者在服务器上运行呢?
在执行最小安装后,你的服务器服务器实际上只需要运行SSH守护进程,以允许远程登录系统,但在某些情况下可能需要NTP服务,以确保你服务器的内部时钟与外部NTP服务器准确同步。
安装有用的系统实用程序
安装完成后,使用root帐户或具有root权限的用户登录服务器并执行系统更新,以确保系统包含所有软件包和安全补丁:
yum update -y yum upgrade y
接下来是安装一些有用的系统实用程序,例如net-tools(此软件包提供了较旧但很好用的ifconfig命令)、nano文本编辑器、用于文件下载的wget和用于URL传输的curl、lsof(列出打开的文件)和bash-completion,它可以自动完成输入的命令。
yum install nano bash-completion net-tools wget curl lsof
禁用并删除不需要的服务
现在可以开始禁用和删除预先安装的不需要的服务,但在此之前,需要获取系统上所有启用和正在运行的服务的列表。
检查已启用的服务
在禁用服务之前,必须检查系统上当前启用了哪些服务(包括自动启动服务)。
对于SystemD:
systemctl list-unit-files --type=service --state=enabled
对于SysVinit:
ls /etc/rc.d/rc3.d/
对于OpenRC:
rc-update show
记下你想要禁用的服务,方面后面操作。
识别不必要的服务
在禁用和删除不需要的服务之前,需要确定哪些服务是必要的以及哪些服务可以安全地禁用。
第一种方法是检查所有可用服务的列表并查找其描述以确定它们的作用。
例如,以下命令将显示基于systemd发行版上所有可用的服务及其描述的列表:
systemctl list-unit-files --type=service --all --no-pager
对于SysVinit:
ls /etc/init.d/
对于OpenRC:
rc-status --all
然后,你可以检查每个服务的描述以确定它是否是你的系统所必需的。
另一种方法是使用systemd-analyze之类的工具来分析系统的启动时间并识别减慢启动过程的服务:
systemd-analyze systemd-analyze blame
上述命令将显示所有正在运行的systemd单元(服务)的列表,按初始化时间排序:
对于系统运行不重要且减慢启动过程的服务通常可以安全地禁用。
禁用不必要的服务
一旦确定了某个服务不是至关重要但可能会减慢启动时间,你就可以使用以下命令禁用并停止它。
对于SystemD:
sudo systemctl disable <service_name> sudo systemctl stop <service_name>
对于SysVinit:
sudo service <service_name> stop sudo chkconfig <service_name> off
对于OpenRC:
sudo rc-service <service_name> stop sudo rc-update del <service_name> default
虽然需要禁用或删除的服务取决于你的使用需求,但你可能需要考虑在RHEL最小安装中禁用或删除一些常见服务。
Postfix
Postfix是一个邮件传输代理( MTA ),用于在系统上发送和接收电子邮件。如果你不使用系统来收发电子邮件,可以禁用并删除此服务:
sudo systemctl stop postfix sudo systemctl disable postfix sudo yum remove postfix
Avahi
Avahi是一种用于零配置网络的服务,允许设备在同一网络上相互发现并通信。如果不需要此功能,可以禁用并删除avahi服务:
sudo systemctl stop avahi-daemon.socket sudo systemctl disable avahi-daemon.socket sudo yum remove avahi-autoipd avahi-libs avahi-tools
cups
cups服务用于打印,如果你的系统不需要打印功能,可以禁用并停止它:
sudo systemctl disable cups sudo systemctl stop cups suod yum remove cups
删除不需要的服务
除了删除不需要的服务外,你还可能还想删除不再需要的任何软件包,毕竟未使用的软件包会占用磁盘空间并可能造成安全漏洞,具体可以按照以下过程步骤就进行操作。
首先,列出已安装的软件包以确定哪些软件包与不需要的服务相关:
rpm -qa
要找出哪个包提供了特定的服务,请使用命令:
rpm -qf /usr/lib/systemd/system/<service_name>.service
要删除包及其相关文件,请使用以下命令:
sudo yum remove <package_name>
禁用和删除服务常用命令
在RHEL系统中禁用和删除服务时,必须遵循最佳实践以确保系统保持安全和正常运行。以下是一些需要操作的常见命令,请务必遵循,以确保系统安全运行。
- 在删除服务之前,请先禁用它以防止其在后台运行,这可以使用命令完成
systemctl disable
。 - 停止服务以防止其在当前会话中运行,可以使用命令完成
systemctl stop
。 - 删除不再需要的软件包以释放磁盘空间并减少安全漏洞,可以使用
yum remove
命令来完成。 - 禁用或删除服务后,刷新systemd守护程序以确保更改生效,这可以使用命令完成
systemctl daemon-reload
。 - 删除服务后,检查可能仍在运行的ghost服务,这可以使用
systemctl list-units
命令完成。
结论
众所周知,禁用和删除RHEL上不需要的服务和包是维护系统安全和性能的重要步骤。安装上述步骤操作之后,你可以确保系统保持安全和正常运行。请记住,在禁用和删除服务时始终安装正常流程进行,并在删除软件包时要小心谨慎,以避免潜在的安全漏洞。