当前位置: 首页 > news >正文

SSH漏洞修复方案

方案一:防火墙与端口策略

第一步:启动防火墙

systemctl start firewalld    # 启动

systemctl status firewalld    # 检查防火墙服务状态

第二步:放行需要修改后的SSH端口

注意:不是默认22端口。

firewall-cmd --permanent --zone=public --add-port=33/tcp

firewall-cmd --reload

firewall-cmd --zone=public --list-ports

【避免连接不上】

第三步:修改SSH默认端口

编辑/etc/ssh/sshd_config文件,修改Port参数为非标准端口:33

修改后需重启SSH服务:systemctl restart sshd

第四步:防火墙允许指定IP访问端口

iptables -A INPUT -s 192.168.4.85 -p tcp --dport 33 -j ACCEPT

iptables -A INPUT -s 192.168.3.120 -p tcp --dport 33 -j ACCEPT

iptables -A INPUT -s 192.168.3.121 -p tcp --dport 33 -j ACCEPT

iptables -A INPUT -p tcp --dport 33 -j REJECT

查看iptables现有规则

iptables -L -n

说明:iptables -A,-A的意思是加在最后,而iptables的匹配顺序是从上到下,所以用-A往最后追加的话,那就是【先写先匹配】

注意:白名单IP务必要全,局域网部署集群的IP+VIP+开发者电脑IP+信息科电脑IP。

第五步:防火墙删除端口

firewall-cmd --permanent --zone=public --remove-port=33/tcp

firewall-cmd --reload

firewall-cmd --zone=public --list-ports

​​​​​​​第六步:验证

白名单IP:

ssh -p 33 admin@192.168.3.114

黑名单IP:

​​​​​​​方案二:升级版本策略

解决如下问题:

第一步:下载

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p2.tar.gz

​​​​​​​环境配置​​​​​​​​​​​​​​

[root@centos779 ~]# uname -aLinux centos779 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux[root@centos779 ~]# cat /etc/centos-releaseCentOS Linux release 7.9.2009 (Core)[root@centos779 ~]# ssh -VOpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017[root@centos779 ~]#

​​​​​​​备份现有配置

#命令如下,直接复制进去执行即可

cp -rf /etc/ssh /etc/ssh.bak

cp -rf /usr/bin/openssl /usr/bin/openssl.bak

cp -rf /etc/pam.d /etc/pam.d.bak

cp -rf /usr/lib/systemd/system /usr/lib/systemd/system.bak

#示例如下

[root@centos779 etc]# cp -rf /etc/ssh /etc/ssh.bak

[root@centos779 etc]# cp -rf /usr/bin/openssl /usr/bin/openssl.bak

[root@centos779 etc]# cp -rf /etc/pam.d /etc/pam.d.bak

[root@centos779 etc]# cp -rf /usr/lib/systemd/system /usr/lib/systemd/system.bak

离线安装telnet、telnet-server、xinetd

下载rpm包

先找一台centos7服务器,下载上面的rpm包

sudo yumdownloader --resolve telnet

sudo yumdownloader --resolve telnet-server

sudo yumdownloader --resolve xinetd

​​​​​​​安装rpm包

sudo rpm -ivh --nodeps *.rpm

#查看rpm是否安装成功

​​​​​​​修改配置

vi /etc/securetty

#加入以下内容

pts/1

pts/2

pts/3

pts/4

pts/5

​​​​​​​启动服务telnet相关服务

#启动服务

systemctl start xinetd && systemctl start telnet.socket

#查看状态

systemctl status telnet.socket

​​​​​​​防火墙相关

如果有开启防火墙,需要把23端口对外开放。如果没有开启防火墙,则到服务器控制台里开放端口。

#查看已经开发的端口

firewall-cmd --list-ports --zone=public

#开放防火墙23端口

firewall-cmd --zone=public --add-port=23/tcp --permanent

#重启加载防火墙规则

firewall-cmd --complete-reload

#查看23端口放行情况

firewall-cmd --query-port=23/tcp

​​​​​​​telnet加入开机自启

systemctl enable telnet.socket

​​​​​​​使用telnet登录

采用客户端,用这种方式进行登录。这是担心openssl不能用了,用这个来登录。

​​​​​​​安装需要的依赖

yum install -y vim gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel zlib-devel tcp_wrappers-devel tcp_wrappers libedit-devel

yum install -y perl-IPC-Cmd wget tar lrzsz nano

​​​​​​​下载源码包

cd /usr/local/src

wget https://www.zlib.net/zlib-1.3.1.tar.gz

wget https://www.openssl.org/source/openssl-3.2.1.tar.gz

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable//openssh-9.7p1.tar.gz

​​​​​​​解压源码包

cd /usr/local/src

tar -zxvf openssh-9.7p1.tar.gz

tar -zxvf openssl-3.2.1.tar.gz

tar -zxvf zlib-1.3.1.tar.gz

安装

安装Zlib

cd /usr/local/src/zlib-1.3.1

[root@centos779 zlib-1.3.1]# ./configure --prefix=/usr/local/zlib

[root@centos779 zlib-1.3.1]# make -j 4 && make test && make install

安装OpenSSL

cd /usr/local/src/openssl-3.2.1

[root@centos779 openssl-3.2.1]# ./config --prefix=/usr/local/src/openssl

[root@centos779 openssl-3.2.1]# make -j 4 && make install

#4.配置

mv /usr/bin/openssl /usr/bin/oldopenssl

ln -s /usr/local/src/openssl/bin/openssl /usr/bin/openssl

ln -s /usr/1ocal/src/openssl/1ib64/1ibssl.so.3 /usr/lib64/1ibssl.so.3

ln -s /usr/local/src/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypt.so.3

#更新动态库

echo "/usr/local/src/openssl/lib64" >> /etc/ld.so.conf

ldconfig

#查看更新后的版本

openssl version -v

 

​​​​​​​安装openssh

#卸载老版本openssh

[root@centos779 openssl-3.2.1]# yum remove -y openssh

#清理残余文件

[root@centos779 openssl-3.2.1]# rm -rf /etc/ssh/*

#安装openssh

cd /usr/local/src/openssh-9.7p1

#配置

[root@centos779 openssh-9.7p1]# ./configure --prefix=/usr/local/src/ssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/src/openssl --with-zlib=/usr/local/src/zlib

#编译及安装

[root@centos779 openssh-9.7p1]# make -j 4 && make install

#查看目录版本

/usr/local/src/ssh/bin/ssh -V

#复制新ssh文件

cp -rf /usr/local/src/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd

cp -rf /usr/local/src/openssh-9.7p1/contrib/redhat/sshd.pam /etc/pam.d/sshd

cp -rf /usr/local/src/ssh/sbin/sshd /usr/sbin/sshd

cp -rf /usr/local/src/ssh/bin/ssh /usr/bin/ssh

cp -rf /usr/local/src/ssh/bin/ssh-keygen /usr/bin/ssh-keygen

#允许root登录

echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config

echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config

#重启sshd服务

/etc/init.d/sshd restart

#添加到开机自启

chkconfig --add sshd

#查看升级后的ssh版本

ssh -V

 

表示成功

​​​​​​​关闭telnet

    1. 解决资源管理错误漏洞

Diffie-Hellman Key Agreement Protocol 资源管理错误漏洞(CVE-2002-20001)

CVE-2002-20001处理方法-CSDN博客

echo "KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521" >> /etc/ssh/sshd_config

systemctl restart sshd

相关文章:

  • GitHub 趋势日报 (2025年05月19日)
  • 机器学习第十九讲:交叉验证 → 用五次模拟考试验证真实水平
  • DataLight(V1.7.12)版本更新发布
  • 进程间通信(IPC):LocalSocket
  • ES(Elasticsearch) 基本概念(一)
  • 开疆智能Profinet转RS485网关连接电磁流量计到西门子PLC配置案例
  • WD5030L CC/CV模式DCDC15A高效同步转换器消费电子工业控制汽车电子优选择
  • Linux X86平台安装ARM64交叉编译器方法
  • LLM大模型工具链
  • MySQL与Redis一致性问题分析
  • 4大AI智能体平台,你更适合哪一个呐?
  • 单端传输通道也会有奇偶模现象喔
  • Dockerfile 实战:编写高效镜像的最佳实践与常见误区
  • 算法与数据结构:位运算与快速幂
  • python实战项目70:如何给一个空的DataFrame添加行
  • Vue 3.0 Transition 组件使用详解
  • 软件测试期末复习
  • Redis到底支不支持事务啊?
  • Redis 命令大全
  • Linux命令大全
  • 上海重大工程一季度开局良好,城乡融合类年内计划新开工一项
  • 花290多万维修保质期仅一年多?媒体四问凤阳鼓楼“瓦片脱落”
  • 两次通话、三点诉求,泽连斯基对美称愿与俄签署和平备忘录
  • 特朗普与泽连斯基通话
  • 世卫大会连续九年拒绝涉台提案
  • 苏丹港持续遭无人机袭击,外交部:呼吁各方保护民用设施和平民安全