Before | After | |
OS | CentOS 7.1 | |
OpenSSH | 6.6.1p1 | 9.8p1 |
OpenSSL | 1.0.2 | 1.1.1 |
CentOS 7.1에서 OpenSSH를 최신 버전으로 업데이트하는 것은 보안 취약점을 해결하고 시스템의 안정성을 향상시키기 위해 중요한 작업이다. 이 포스팅에서는 OpenSSH를 6.6.1 버전에서 9.8p1 이상의 버전으로 업데이트하는 방법과 주의 사항을 단계별로 설명할 예정이다.
다른 블로그나 글들을 살펴봤을 때, 주의 사항이나 사전 준비 과정이 뒤쪽에 있는 경우가 있었다.
OpenSSH 업데이트 관련 사항은 Config 파일과 각종 라이브러리 및 의존성 파일들을 확인해야할 사항이 많기 때문에 사전 준비, 주의사항을 먼저 포스팅하였다.
1. 사전 준비
1.1 백업
업데이트 전에는 항상 중요한 설정 파일과 데이터를 백업해야 한다.
특히 OpenSSH 설정 파일을 백업하는 것이 가장 중요하다.
#보통 아래 경로에 설정파일이 있다.
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
#위 경로에 설정 파일이 없을 경우에는 아래 find 명령어를 통해서 설정파일을 백업해두자.
find / -name sshd_config
**여기서 주의사항
필자는 위와 같이 진행한 것이 아니라 FTP를 통해서 설정파일을 백업했다. FTP를 통해서 백업했을 경우 문제가 발생 시, FTP 연결에 문제가 생겨 백업 파일을 복원하지 못 하는 문제가 발생할 수 있다..
그러므로 위와 같이 폴더 내에 백업 파일을 복사해 두는 것이 더 좋다.
1.2 접속 유지
SSH 업데이트 중 연결이 끊어질 수 있으므로, 가능하면 물리적 접근이 가능한 상태에서 작업을 진행하는 것이 좋다.
위의 주의사항과 비슷한 문제다. 원격에서 작업해야 한다면, 두 번째 SSH 세션을 열어 두고 작업을 진행하는 것이 좋다.
1.3 방화벽 설정 확인
SSH 포트(기본적으로 22)가 방화벽에 의해 차단되지 않았는지 확인한다.
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --reload
1.4 OpenSSL 버전 체크
OpenSSH 9.8버전 이상을 사용하기 위하여 OpenSSL 버전이 1.1.1 이상이 필요하다.
그러므로 아래 명령어를 통해 OpenSSL 버전을 확인한 뒤에 1.1.1 버전 이상이 아니라면 아래 링크를 통해서 설치하고 OpenSSH 업데이트를 진행하자.
ssh -V
OpenSSL 최신 버전 설치 (checking openssl library version... configure: error: openssl >= 1.1.1 required)
2. 의존성 확인 및 설치
업데이트를 원활하게 진행하기 위해서 필요한 의존성을 확인하고 설치한다.
2.1 의존성 패키지 설치 여부 확인
yum list installed | grep zlib-devel
yum list installed | grep openssl-devel
yum list installed | grep gcc
yum list installed | grep make
위 명령어를 통해 의존성 패키지가 설치 되어 있는지 확인한다.
설치 되어 있지 않은 패키지는 다음 명령어로 설치한다.
2.2 필요한 패키지 설치
#모두 설치가 안 되어 있다는 가정으로 아래와 같은 명령어 실행
yum install gcc make zlib-devel openssl-devel
3. OpenSSH 업데이트 절차
3.1 기존 OpenSSH 제거
먼저, 기존 OpenSSH를 제거한다.
yum remove openssh openssh-server
3.2 새 버전 다운로드
#아래 경로에 설치(경로는 원하는 곳에서 진행하면 된다)
cd /usr/local/src
#공식 웹사이트 소스 코드 다운로드
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
#다운로드 받은 파일 압축 해제
tar -xzf openssh-9.8p1.tar.gz
#압축 해제한 폴더 내로 이동
cd openssh-9.8p1
3.3 컴파일 및 설치
#컴파일 및 설치 진행
#(OpenSSL 버전이 낮거나 의존성 패키지들이 존재하지 않으면 여기로 오류가 난다)
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl
make
make install
3.4 설정 파일 복원 및 업데이트
cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
3.5 SSH 데몬 재시작
systemctl restart sshd
SSH 데몬을 재시작하여 변경 사항을 적용한다.
위 명령어를 날리면 간혹 Unit sshd.service could not be found 라는 오류 메세지가 나오는 경우가 있다.
이럴 경우 아래 포스팅을 통해 진행해주면 된다.
OpenSSH 서비스 파일 생성 및 등록 (Unit sshd.service could not be found)
3.6 버전 확인 및 로그 확인
새로운 버전으로 업데이트 되었는지 확인하고 로그 파일에 에러 로그가 없는 지 확인한다.
#버전 확인
ssh -V
#로그 확인
tail -f /var/log/secure
4. 추가 권장 사항
4.1 보안 설정 강화
업데이트 후에는 OpenSSH의 보안 설정을 강화하는 것이 좋다. 예를 들어, PermitRootLogin을 no로 설정하고, PasswordAuthentication을 no로 설정하여 키 기반 인증만 허용하도록 설정할 수 있다.
4.2 정기적 업데이트
보안 취약점이 발견될 때마다 최신 버전으로 정기적으로 업데이트하는 것이 좋다.
이 절차에 따라 OpenSSH를 안전하게 업데이트할 수 있다.
문제 발생 시, 백업 파일을 통해 원래 상태로 복구할 수 있도록 준비를 철저히 해두는 것이 중요하다.
이번 포스팅은 삽질을 많이했다..
생각보다 시간도 오래걸렸고 설정파일과 경로 관련하여 체크해야할 사항이 많아서 힘들었다.