前言

CentOS 作为一款流行的 Linux 发行版,由于其稳定性和企业级支持,被广泛用于服务器环境中。OpenSSH 是 Linux 系统上用于远程登录的标准工具,它也经常成为安全漏洞的目标。为了确保你的 CentOS 系统安全,你需要定期更新和修补 OpenSSH 以及整个系统。


一、什么是OpenSSH 漏洞是什么?

常见的漏洞名称:
  • OpenSSH 命令注入漏洞(CVE-2020-15778)
  • OpenSSH 安全漏洞(CVE-2021-41617)
    如下图所示:在这里插入图片描述

二、具体步骤如下

1.下载依赖包

代码如下(示例):

通过网盘分享的文件:openssh-9.0p1.gz
链接: https://pan.baidu.com/s/1cdaZRAC1Ngvt2puk4y7mwA?pwd=r6pq 提取码: r6pq 复制这段内容后打开百度网盘手机App,操作更方便哦
解压:tar -xvf openssh-9.0p1.tar.gz

2.安装依赖、关闭防火墙

代码如下(示例):

依次执行:
以下是对命令的详细注释:
```bash
# 安装必要的依赖包,包括PAM、zlib、openssl开发包、gcc编译器和make工具
yum install -y pam* zlib* openssl-devel gcc make

# 切换到openssh-9.0p1目录,假设该目录已经存在
cd openssh-9.0p1

# 将/etc/ssh目录及其内容复制到/tmp/目录下,作为备份
cp -r /etc/ssh /tmp/

# 临时关闭SELinux的强制模式,允许系统在宽松模式下运行
setenforce 0

# 永久禁用SELinux,将/etc/selinux/config文件中的enforcing改为disabled
sed -i 's/enforcing/disabled/g' /etc/selinux/config

# 停止防火墙服务,确保防火墙不会干扰后续操作
systemctl stop firewalld

# 禁用防火墙服务,防止系统重启后防火墙自动启动
systemctl disable firewalld

说明

  • yum install -y pam* zlib* openssl-devel gcc make:安装编译和运行OpenSSH所需的依赖包。
  • cd openssh-9.0p1:进入OpenSSH源码目录,假设该目录已经存在。
  • cp -r /etc/ssh /tmp/:备份现有的SSH配置文件,以防升级过程中出现问题。
  • setenforce 0:临时关闭SELinux的强制模式,避免SELinux策略干扰操作。
  • sed -i 's/enforcing/disabled/g' /etc/selinux/config:永久禁用SELinux,修改配置文件使其在系统重启后仍然生效。
  • systemctl stop firewalld:停止防火墙服务,确保防火墙不会阻止SSH服务的运行。
  • systemctl disable firewalld:禁用防火墙服务,防止系统重启后防火墙自动启动。以下是对命令的详细注释和美化格式:

3.编译安装

代码如下(示例):

# 配置 OpenSSH 编译选项
# --prefix=/usr:指定安装目录为 /usr
# --sysconfdir=/etc/ssh:指定配置文件目录为 /etc/ssh
# --with-zlib:启用 zlib 压缩支持
# --with-pam:启用 PAM 支持
# --without-openssl-header-check:跳过 OpenSSL 头文件检查
# --with-ssl-dir=/usr/local/ssl:指定 OpenSSL 安装目录
# --with-privsep-path=/var/lib/sshd:指定特权分离路径
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-pam --without-openssl-header-check --with-ssl-dir=/usr/local/ssl --with-privsep-path=/var/lib/sshd

# 编译 OpenSSH
make

# 卸载系统中已安装的 OpenSSH 相关包
# --nodeps:忽略依赖关系强制卸载
rpm -e --nodeps `rpm -qa | grep openssh`

# 删除 /etc/ssh 目录下的所有文件
rm -rf /etc/ssh/*

# 安装编译好的 OpenSSH
make install

# 修改 SSH 配置文件,允许 root 用户登录
# 将 #PermitRootLogin prohibit-password 替换为 PermitRootLogin yes
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config

说明

  • 该脚本用于编译和安装 OpenSSH,并配置允许 root 用户通过 SSH 登录。
  • 在执行过程中,会卸载系统中已安装的 OpenSSH 相关包,并删除旧的配置文件。
  • 最后通过 sed 命令修改 SSH 配置文件,启用 root 登录功能。

4.使用systemctl管理

代码如下(示例):

复制SSH服务初始化脚本

contrib/redhat/sshd.init 文件复制到 /etc/init.d/ 目录下,并重命名为 sshd-a 参数用于保留文件的所有属性和链接。

cp -a contrib/redhat/sshd.init /etc/init.d/sshd

启用SSH服务开机自启动

使用 chkconfig 命令将 sshd 服务设置为开机自启动。

chkconfig sshd on

添加SSH服务到系统服务列表

sshd 服务添加到系统的服务管理列表中,以便系统能够识别和管理该服务。

chkconfig --add sshd

启用SSH服务

使用 systemctl 命令启用 sshd 服务,确保服务在系统启动时自动运行。

systemctl enable sshd

重启SSH服务

重启 sshd 服务以使配置更改生效。

systemctl restart sshd

5.检查是否成功

代码如下(示例):

1)、ssh -V显示当前ssh版本,重开窗口连接会提示密钥保存
(2)开启防火墙,依次执行:
A: setenforce 1
B: systemctl enable firewalld
C: systemctl start firewalld

三、总结

定期检查 CentOS 的更新通知,并应用所有重要的安全补丁。CentOS 的生命周期较短,通常每几年会发布一个新的版本,因此确保你的系统是最新的或至少是受支持的长期维护版本(LTS)。对于 CentOS 8,你可以考虑迁移到 CentOS Stream 或 Rocky Linux 等较新的替代品,这些都有较长的支持和更新周期。
通过遵循上述步骤,你可以大大增强 CentOS 系统上 OpenSSH 的安全性,并帮助保护你的服务器免受常见的安全威胁。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐