方案一:防火墙与端口策略
第一步:启动防火墙
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 -a
Linux 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-release
CentOS Linux release 7.9.2009 (Core)
[root@centos779 ~]# ssh -V
OpenSSH_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
-
- 解决资源管理错误漏洞
Diffie-Hellman Key Agreement Protocol 资源管理错误漏洞(CVE-2002-20001)
echo "KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521" >> /etc/ssh/sshd_config |
systemctl restart sshd |