IT 기술문서/Redhat Linux

Redhat(CentOS) 7 Openssh 8.6p1 Compile Setup

미니도라 2021. 4. 30. 16:24

Openssh 7.6 에서 보안취약점이 나와서 8.6 으로 업그레이드 해야하는데

 

Redhat RPM 파일이 존재하지 않는다.

 

컴파일을 통해서 업데이트 해보도록 하겠다.

 

ssh를 재시작하면 연결이 끊어지기 때문에 telnet 을 설치하고 telnet으로 작업해야 한다.

yum install -y telnet telnet-server

mv /etc/securetty /etc/securetty.bak

systemctl start telnet.socket  # telnet 시작

 

telnet 으로 접속해서 작업 시작

 

yum install -y gcc gcc-c++ glibc zlib-devel make autoconf openssl openssl-devel pcre-devel pam-devel   # 컴파일을 위해서 필요한 패키지를 먼저 설치한다.

 

openssl version

OpenSSL 1.0.2k-fips  26 Jan 2017          # 1.0.2k 보다 버전이 낮으면 아래 openssl 버전 업데이트 부터 해야한다.

wget www.openssl.org/source/openssl-1.1.1k.tar.gz  
cd openssl-1.1.1k
./config --prefix=/usr --openssldir=/usr shared
make
make install
echo /usr/local/ssl/lib > /etc/ld.so.conf.d/openssl-1.1.1k.conf
ldconfig -v
ver=`openssl version |awk '{print substr ($2,1,5)}'`
mv /usr/bin/openssl /usr/bin/openssl_$ver
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
openssl version

wget www.ftp.ne.jp/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz

Openssh 8.6 다운받고 압축을 해제한다.

 

tar -zxvf openssh-8.6p1.tar.gz

 

systemctl stop sshd

cd openssh-8.6p1

\cp ./contrib/sshd.pam.generic /etc/pam.d/sshd  # 리눅스 사용자 인증을 위해 sshd.pam.generice 파일을 sshd로 복사하여 /etc/pam.d/ 경로에 넣어줌

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-openssl-includes=/usr/include --with-ssl-dir=/usr --with-zlib --with-md5-passwords --with-pam

 

make

sed -i '/^GSSAPIAuthentication/s/GSSAPIAuthentication yes/#GSSAPIAuthentication yes/' /etc/ssh/sshd_config
sed -i '/^GSSAPICleanupCredentials/s/GSSAPICleanupCredentials no/#GSSAPICleanupCredentials no/' /etc/ssh/sshd_config

chmod 600 /etc/ssh/ssh_host_rsa_key 
chmod 600 /etc/ssh/ssh_host_ecdsa_key 
chmod 600 /etc/ssh/ssh_host_ed25519_key

make install

 

cat << EOF >> /etc/systemd/system/sshd.service      # 서비스를 만들어준다.

[Unit]

Description=SSH Server

 

[Service]

ExecStart=/usr/sbin/sshd

RestartSec=10

Restart=always

 

[Install]

WantedBy=multi-user.target

EOF

 

mkdir /lib/security -p

ln -s /lib64/security/pam_unix.so /lib/security/pam_unix.so

ln -s /lib64/security/pam_nologin.so /lib/security/pam_nologin.so

ln -s /lib64/security/pam_cracklib.so /lib/security/pam_cracklib.so

ln -s /lib64/security/pam_limits.so /lib/security/pam_limits.so

 

sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config   # root 접속을 허용

sed -i "s/#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config

 

systemctl daemon-reload

systemctl enable sshd

systemctl start sshd

systemctl status sshd

● sshd.service - OpenSSH server daemon   # 데몬이 정상 실행되고 있다.
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-04-30 15:56:05 KST; 16s ago
        Docs: man:sshd(8)
        man:sshd_config(5)
Main PID: 30729 (sshd)
    Tasks: 1
   CGroup: /system.slice/sshd.service
              └─30729 /usr/sbin/sshd -D

Apr 30 15:56:05 P4BR_1716_5 systemd[1]: Starting OpenSSH server daemon...
Apr 30 15:56:05 P4BR_1716_5 sshd[30729]: Server listening on 0.0.0.0 port 22.
OpenSSH server daemon.

sshd -V

OpenSSH_8.6p1, OpenSSL 1.1.1k  25 Mar 2021    # 버전이 정상적으로 올라갔다.
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
            [-E log_file] [-f config_file] [-g login_grace_time]
            [-h host_key_file] [-o option] [-p port] [-u len]

ssh -V

OpenSSH_8.6p1, OpenSSL 1.1.1k  25 Mar 2021   # 정상적으로 업그레이드 되었다.

 

rpm -e telnet-server      # redhat 7 에서는 telnet 이 tcp wrapper로 제한이 안되서 보안에 취약하기때문에 삭제한다.

 

 

내용 이해가 어려우면 그냥 첨부를 root에 넣고

tar -zxvf openssh.tar.gz

cd openssh

setup.sh 를 실행해주면 된다.

 

 

※ 첨부파일

 

openssh.z01
10.00MB
openssh.z02
10.00MB
openssh.z03
10.00MB
openssh.z04
10.00MB
openssh.z05
10.00MB
openssh.z06
10.00MB
openssh.z07
10.00MB
openssh.zip
0.60MB

반응형