현재 재직중인 회사에서 사용하는 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 용으로 환경에 맞는 버전으로 반출할 것!
# 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 으로 다시 원복하셔야합니다.