[서론]
지난 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에서도 릴리스노트가 발표되었다.
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/
wget을 이용하여 직접 받아도 된다.
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2.tar.gz |
다운 받은 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 |
압축을 푼 디렉토리 이동 후 컴파일 실행.
./configure --prefix=패키지설치할위치 --with-ssl-dir=openssl설치된위치 --with-pam
cd openssh-9.3p2 ./configure --prefix=/usr/local/openssh --with-ssl-dir=/bin --with-pam |
별다른 에러가 없다면 컴파일이 완료됬다는 문구와 내역이 출력된다.
구글링해보면 컴파일시 --with-md5-passwords 옵션을 붙이는걸 종종 보는데, PAM을 이용한 보안이 안될경우 붙인다고한다. (참고 : http://www.snailbook.com/faq/password-pam.auto.html)
근데 애초에 sha256도 아닌 md5를 사용하는데서 취약한게 아닌지..
컴파일만 이상없이 완료되면 설치는 간단하다.
make make install |
3. 설치 확인 및 테스트
설치 위치와 잘 동작하는지 테스트도 해본다.
ls /usr/local/openssh |
ssh -V |
/usr/local/openssh/bin/ssh user명@접속할IP |
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 |
6. SSH 링크 걸기
기존과 동일하게 사용하려면 심볼릭 링크를 이용하여 명령어를 /bin 아래에 걸어준다.
ln -s /usr/local/openssh/bin/ssh /bin/ssh |
'OS 기술 > Linux' 카테고리의 다른 글
[Linux] Failed to start LSB: Bring up/down networking (0) | 2023.09.26 |
---|---|
OpenSSH 9.3p2 오픈소스 설치 명령어 모음 (CentOS 7 기준) (4) | 2023.08.02 |
dd 명령어를 이용한 더미파일 생성 (0) | 2023.07.15 |
리눅스 파일의 시간 바꾸기 (0) | 2023.07.15 |
리눅스 심볼릭 링크, 하드 링크 (0) | 2023.07.15 |