💭 OpenSSH 보안 취약점 조치(CVE-2023-38408)

현재 재직중인 회사에서 사용하는 OS에 해당 보안 취약점에 대한 보안 주의 권고가 올라와 내가 처리한 조치방법을 정리하였다.
더불어 해당 내용은 폐쇄망(인터넷을 연결할 수 없는 분리된 환경)을 기준으로 작성하였습니다.

 

✏️ 개요

◎ OpenSSH에서 발생하는 취약점을 해결한 보안 업데이트 발표
◎ 영향받는 제품을 사용 중인 시스템 사용자는 해결 방안에 따라 최신 버전으로 업데이트 권고

 

📃 설명

◎ OpenSSH의 ssh-agent에서 PKCS#11 로드 요청 시 발생하는 원격 코드 실행 취약점(CVE-2023-38408)
◎ PKCS#11 : 암호 토큰 인터페이스이며, 암호 토큰에 대한 범용 인터페이스를 정의하는 API
영향받는 OpenSSH 버전 : OpenSSH 9.1 이하
◎ 영향받는 OS 버전 : Redhat 6 전체, Redhat 7.9 이하, Redhat 8.7 이하, Redhat 9.0 이하

 

🖋️ 현재 사용중인 OpenSSH 버전 확인 방법

# ssh -V

 

🖋️현재 OS 버전 확인 방법(Redhat 계열 기준)

# cat /etc/redhat-release

# cat /etc/*release*

# rpm -qa | grep release

 

위와 같이 현재 설치된 OpenSSH의 버전은 7.4p이며, OS 는 CentOS 7.4로 보안취약점 조치가 필요해보였다.

 

🔧 보안취약점 조치 방법_OpenSSH 최신 버전 업데이트(OpenSSH 9.3p2 이상)

1) 업데이트할 환경과 동일한 OS를 로컬환경에 설치
 - 대상 환경이 CentOS 7.4로 VMware에 CentOS 7.4를 설치해주었습니다.


2) 로컬환경 yum 최신 업데이트

 # yum install yum
  - 혹시 몰라 yum도 최신으로 업데이트 해주었습니다.
3) 필요한 패키지를 rpm 확장자로 다운로드

# yumdownloader --downloadonly --resolve [설치할 패키지명] 
  - resolve 옵션은 의존성이 있는 패키지도 함께 설치!

  - 나의 경우 /home 하위에 설치할 패키지 별 디렉터리를 별개로 만들어 각각 rpm파일을 다운로드 해주었다.
  - 다운로드된 rpm 파일 중 x86_64 는 64bit 용, i686은 32bit 용으로 환경에 맞는 버전으로 반출할 것!

4) OpenSSH 설치파일 다운로드

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

     http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
  - wget 명령어로 받거나 위 URL 에서 직접 다운로드 받을 수 있다.


5) 다운로드한 rpm 파일을 업데이트할 서버로 업로드 후 설치

 # rpm -Uvh [패키지 경로]/[패키지 파일명]
 의존성 상관없이 강제 설치하려면 # rpm -Uvh [패키지 경로]/[패키지 파일명] --nodeps --force
 # yum install [패키지 경로]/[패키지 파일명]
중간에 y 누르기 귀찮으면  # yum install -y [패키지 경로]/[패키지 파일명]


6) OpenSSH 컴파일 및 업데이트
 6.1) OpenSSH 압축해제

  # tar -zxvf openssh-9.3p2.tar.gz

 6.2) openssl 설치 경로 확인

  # rpm -ql openssl | grep openssl

  # which openssl

 6.3) OpenSSH 컴파일

  # ./configure --prefix=/usr/local/openssh --with-ssl-dir=[openssl 경로] --with-pam
  # ./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/bin/openssl --with-pam
   - openssh 9.3p2 압축해제한 폴더로 이동 후 컴파일 실행
   - openssl 경로는 다를 수 있으며 이전 보안취약점 조치 등으로 경로가 다를 수 있습니다.(/usr/local/openssl 등..)

7) OpenSSH 설치

# make 명령어 입력 후 완료 시
# make install

 

8) OpenSSH 설치 확인

# 설치한 경로로 이동 후 bin, sbin 등 확인

9) /usr/bin/ssh 백업 (★ 여기서부터 터미널 연결 절대 끊지 말 것!!!!)

# mv /usr/bin/ssh /usr/bin/ssh_bak


10)
새로 설치한 openssh 심볼릭 링크 설정

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


11) ssh 새로운 세션으로 연결 확인..

 - 연결이 된다면 OpenSSH 패치 완료..

 

OpenSSH의 경우 조치가 잘못되는 경우 서버에 접속할 수 없을 수도 있어서 조심 또 조심하셔야 합니다..

만약 11번에서 새로운 세션으로 연결이 되지 않는다면 9번에서 백업한 ssh_bak 으로 다시 원복하셔야합니다.

패치하면서 무서웠네요..

'[보안취약점조치]' 카테고리의 다른 글

glibc 보안 취약점 조치(CVE-2024-2961)  (0) 2024.06.17