OpenSSH
OpenSSH 是 SSH (Secure SHell) 協議的免費開源實現。SSH協議族可以用來進行遠程控制, 或在計算機之間傳送文件。而實現此功能的傳統方式,如telnet(終端仿真協議)、 rcp ftp、 rlogin、rsh都是極爲不安全的,並且會使用明文傳送密碼。OpenSSH提供了服務端後臺程序和客戶端工具,用來加密遠程控制和文件傳輸過程中的數據,並由此來代替原來的類似服務。
網絡安全一刻也不能放鬆,爲了系統安全儘量將 OPENSSH 升級到最新版本,目前最新版本爲 8.2 P1,下面開始準備升級。
- 實驗環境 CentOS 7.5
- 爲了預防萬一升級失敗後,無法登陸遠程主機的問題,需要先安裝 、啓動Telnet 服務,確保可以遠程登錄。
- 安裝、配置 Telnet 以及超級守護進程 xinetd 服務
- 編輯 telnet 主配置文件 /etc/xinetd.d/telnet
- vim /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
} - 配置telnet登錄的終端類型,在 /etc/securetty 文件末尾增加一些pts終端
vim /etc/securettypts/0
pts/1
pts/2
pts/3 - 啓動telnet服務
systemctl start telnet.socket
查看服務狀態
systemctl status telnet.socket
查看偵聽端口
ss -atnl | grep 23
安裝完成後,將xinetd服務加入開機自啓動:
systemctl enable xinetd.service
將telnet服務加入開機自啓動:
systemctl enable telnet.socket
- 使用 telnet 測試登錄
- 接下來開始升級 OPENSSH
- 首先在官網上下載最新版本的源碼包
- OPENSSH 源碼包下載地址:https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/
- OPENSSL 源碼包下載地址:https://ftp.openssl.org/source/old/
- wget https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-8.2p1.tar.gz
- wget https://ftp.openssl.org/source/old/1.1.1/openssl-1.1.1c.tar.gz
- 接下來安裝 openssh 和 openssl 依賴包
yum -y install perl gcc gcc-c++ glibc make - yum -y group install 'Development Tools'
- yum -y install pam-devel libselinux-devel zlib-devel openssl-devel
-
備份原先的 openssl 文件
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old -
解壓 openssl 包,編譯安裝(需要 root 用戶)
tar xf openssl-1.1.1c.tar.gz - ./config --prefix=/usr/local/openssl && make clean && make && make install
-
編譯、安裝無誤後,下面開始配置 OPENSSL
設置 openssl 命令的軟鏈接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
openssl version
- 開始安裝 openssh 前,先備份原先的 openssh 文件
- mv /etc/ssh/* /bak/sshbak
- tar xf openssh-8.2p1.tar.gz
- ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-pam=enable && make clean && make && make install
- echo $? --> 0 確保編譯安裝無誤後,複製啓動腳本和PAM驗證文件
- cp /home/gf/openssh/openssh-8.2p1/contrib/redhat/sshd.init /etc/init.d/sshd
cp /home/gf/openssh/openssh-8.2p1/contrib/redhat/sshd.pam /etc/pam.d/sshd.pam - 編輯 /etc/ssh/sshd.conf 配置文件
- Port 22
PermitRootLogin no
PasswordAuthentication yes
UsePAM yes
UseDNS no
Subsystem sftp /usr/libexec/sftp-server - chmod +x /etc/init.d/sshd
- 把原先的 systemd 管理的 sshd 啓動腳本文件刪移或者移走,否則影響重啓 sshd 服務
mv /usr/lib/systemd/system/sshd.service /bak/sshbak
mv /usr/lib/systemd/system/sshd.socket /bak/sshbak - 重新加載服務配置文件後重啓 sshd 服務
- systemctl daemon-reload
- systemctl restart sshd
- chkconfig sshd on
- 重啓確認無誤後可以停掉 telnet 服務
- systemctl disable telnet
- 使用 ssh 測試重新登錄