OS 기술/Linux

OpenSSH 취약점 발견에 따른 업그레이드 (CVE-2023-38408)

DongT 2023. 8. 1. 14:18
728x90
반응형

[서론]

지난 7월24일 KISA에서 OpenSSH 취약점에 대한 발표가 있었다.
https://www.krcert.or.kr/kr/bbs/view.do?searchCnd=&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=1&categoryCode=&nttId=71140

OpenSSH 취약점 공지

 

openssh에서도 릴리스노트가 발표되었다.

https://www.openssh.com/releasenotes.html

 

 


 

SSH를 외부에 대놓고 사용하는 기업은 없겠지만 그래도 취약점은 취약점이니 조치가 필요하다.

조치 방법에는 크게 2가지가 있는데, 이번 포스트에서는 업그레이드 하는 방법으로 작업한다.

 1) 최신 릴리즈인 OpenSSH 9.3p2로 업그레이드

 2) Two Factor 추가 인증으로 로그인 절차 보안

 

 

아래 내용은 CentOS7 버전을 기준으로 작성됨. (이하 버전, 우분투에서는 세부내용이 다름)


0. 사전에 준비해야하는 것

 1) 패키지 설치

# 설치패키지 다운로드용
yum install wget

# 컴파일용 : GNU 컴파일러
yum install gcc

# 컴파일용 : zlib 헤더
yum install zlib-devel

# 컴파일용 : libcrypto
yum install openssl-devel

# 컴파일용 : PAM header 인증
yum install pam-devel

 

 

의존성 패키지 업데이트가 많이 필요할 수 있어서 온라인으로 yum이 되는 환경이 아니면 많이 힘들다.

패키지 하나 설치하는데 의존성 업데이트가 엄청 많은 경우도 있다

 

 2) 직접 연결할수 있는 콘솔 환경

SSH로 작업중에 문제가 생겨서 세션 연결이 끊어지면 직접 연결할 수 있는 수단이 필요하다.

(KVM, HMC 등등 콘솔 준비)

 

 

 


 

1. SSH 설치파일 다운로드

 아래 URL로 직접 들어가서 패키지를 다운받아서 ftp로 파일 업로드하거나

 URL :  http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/

openssh-9.3p2.tar.gz 파일을 다운

wget을 이용하여 직접 받아도 된다.

wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2.tar.gz

wget으로 파일 다운로드

 

다운 받은 openssh-9.3p2.tar.gz 파일의 압축을 해제한다

tar -zxvf openssh-9.3p2.tar.gz

압축해제하면 현재 위치에 디렉토리 생김


 

2. SSH 컴파일 및 설치

ssh에서 openssl을 이용한 SSL/TLS 보안통신을 사용하기 위해서 openssl 설치 위치도 지정해줘야함.

rpm -ql openssl | grep openssl
which openssl

openssl 설치 위치 확인

 

압축을 푼 디렉토리 이동 후 컴파일 실행.

./configure --prefix=패키지설치할위치 --with-ssl-dir=openssl설치된위치 --with-pam 

cd openssh-9.3p2
./configure --prefix=/usr/local/openssh --with-ssl-dir=/bin --with-pam

configure 컴파일 완료 화면

별다른 에러가 없다면 컴파일이 완료됬다는 문구와 내역이 출력된다.

뭐가 잘 안될때 예시

구글링해보면 컴파일시 --with-md5-passwords 옵션을 붙이는걸 종종 보는데, PAM을 이용한 보안이 안될경우 붙인다고한다. (참고 : http://www.snailbook.com/faq/password-pam.auto.html)

근데 애초에 sha256도 아닌 md5를 사용하는데서 취약한게 아닌지..

 

 

컴파일만 이상없이 완료되면 설치는 간단하다.

make
make install

 


 

3. 설치 확인 및 테스트

설치 위치와 잘 동작하는지 테스트도 해본다.

ls /usr/local/openssh

ssh 관련 프로그램 모두 설치

 

ssh -V

ssh 버전 비교

 

 

/usr/local/openssh/bin/ssh user명@접속할IP

새로 설치한 SSH로 다른 시스템 접속 테스트

 

 

 


4. SSH 환경 설정 및 서비스 설정

일단 ssh가 실행 될 수 있는 최소한의 환경구성만 설정함. 필요시 추가 보완설정 하면 됨.

  !!) 이 작업할 때 SSH 세션이 끊길수 있으므로 주의

 1) 서비스 파일(systemd)  이동 

# 기존에 사용하던 SSH의 서비스 파일 이동
mv /lib/systemd/system/sshd.service /etc/systemd/system/sshd.service

서비스 파일 내용 수정

# SSH 서비스 기동에 필요한것만 남기고 주석처리함
# ExecStart 경로를 지정할 때 새로 설치한 경로로 지정해야한다.
vi /etc/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon fix
#Documentation=man:sshd(8) man:sshd_config(5)
#After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
#Type=notify
#EnvironmentFile=/etc/sysconfig/sshd
#ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecStart=/usr/local/openssh/sbin/sshd
#ExecReload=/bin/kill -HUP $MAINPID
#KillMode=process
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target

systemd 데몬 다시 불러오기

systemctl daemon-reload

새로 구성한 SSH 서비스 시작하기

기존에 같은 이름으로 수행되던 서비스가 있으므로 restart를 이용함

systemctl restart sshd

새로 설치한 경로로 시작되는것을 볼 수 있다.

 

 

 2) config 파일 복사

필요한 설정 백업용

# 기존에 사용하던 SSH의 설정파일 복사(백업)
cp /etc/ssh/sshd_config /usr/local/openssh/etc/sshd_config_ori

그 외 별도의 config를 수정한 파일이 있다면 똑같이 백업하면 됨.

 

 

 


 

5. 취약점이 있는 SSH 제거

서비스는 실행하지 않더라도 나중에 헷갈릴 우려가 있으므로, 기존의 SSH는 제거하도록 한다.

# 설치된 openssh 확인
rpm -qa | grep openssh

# 설치된 openssh 모두 제거
rpm -e --nodeps openssh openssh-clients openssh-server

rpm을 이용해서 openssh 패키지 모두 제거

 

 


6. SSH 링크 걸기

기존과 동일하게 사용하려면 심볼릭 링크를 이용하여 명령어를 /bin 아래에 걸어준다.

ln -s /usr/local/openssh/bin/ssh /bin/ssh

sftp, scp 등 필요한 기능은 링크를 걸어서 사용

 

반응형

 

728x90