Redhat(CentOS) 7 Openssh 8.6p1 Compile Setup
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 를 실행해주면 된다.
※ 첨부파일