Linux에서 SSH 서버를 보호하는 3가지 방법

SSH 서버 보안 강화: 리눅스 환경에서의 실용적인 방법

SSH는 네트워크를 통해 원격 리눅스 PC 및 서버에 안전하게 접속할 수 있도록 해주는 매우 유용한 기술입니다. 하지만 이 기술은 편리한 만큼 보안상의 취약점도 존재합니다. 일반 사용자라면 복잡한 보안 도구를 설치하는 것보다, 몇 가지 기본적인 단계를 통해 SSH 서버를 더욱 안전하게 보호할 수 있습니다. 다음은 리눅스 환경에서 SSH 서버를 보호하는 데 도움이 되는 몇 가지 핵심 전략입니다.

기본 연결 포트 변경의 중요성

SSH 서버 보안을 강화하는 가장 빠르고 쉬운 방법 중 하나는 기본 포트를 변경하는 것입니다. SSH 서버는 기본적으로 22번 포트를 사용합니다. 이 포트를 변경하려면 터미널을 열고 원격 PC에 SSH로 접속해야 합니다.

ssh [email protected]

접속 후에는 루트 권한을 얻어야 합니다. 루트 계정으로 직접 로그인하거나 sudo를 사용하여 관리자 권한을 얻을 수 있습니다.

su -

또는

sudo -s

관리자 권한을 얻은 후, Nano 편집기를 사용하여 SSH 구성 파일을 엽니다.

nano /etc/ssh/sshd_config

구성 파일에서 “Port 22” 부분을 찾아 # 기호를 제거하고 “22”를 다른 포트 번호로 변경합니다. 100 이상의 포트 또는 1000번대 포트가 일반적으로 안전합니다. 변경 후 Ctrl + O로 저장하고 Ctrl + X로 편집기를 종료합니다.

구성 파일을 변경했다고 해서 SSH 서버가 즉시 새 포트를 사용하는 것은 아닙니다. 서비스를 수동으로 다시 시작해야 변경 사항이 적용됩니다.

systemctl restart sshd

SSH 데몬이 재시작되면 새 설정이 적용됩니다. 만약 데몬 재시작에 실패하면 시스템을 재부팅해야 할 수도 있습니다.

reboot

데몬 또는 시스템 재시작 후, 22번 포트로는 SSH에 접속할 수 없습니다. 새 포트를 사용하여 SSH에 접속해야 합니다. 예를 들어, 포트를 “1234”로 변경했다면 다음과 같이 접속해야 합니다.

ssh -p 1234 [email protected]

비밀번호 로그인 대신 SSH 키 사용

SSH 서버를 보호하는 또 다른 효과적인 방법은 비밀번호 로그인을 비활성화하고 SSH 키를 사용하는 것입니다. SSH 키를 사용하면 서버와 원격 시스템 간에 신뢰 관계가 형성되며, 이는 암호화된 키 파일을 통해 이루어집니다.

먼저 서버에 SSH 키를 설정해야 합니다. 키가 설정되면 터미널을 열고 SSH 구성 파일을 편집합니다.

su -

또는

sudo -s

다음 명령어를 사용하여 Nano 편집기로 구성 파일을 엽니다.

nano /etc/ssh/sshd_config

기본적으로 SSH 서버는 사용자의 비밀번호를 통해 인증을 처리합니다. 안전한 비밀번호를 사용하는 것도 좋지만, 신뢰할 수 있는 컴퓨터의 암호화된 SSH 키를 사용하는 것이 더 빠르고 편리하며 안전합니다. 구성 파일에서 “PasswordAuthentication” 항목을 찾아 “#” 기호를 제거하고 “no”로 변경합니다. 변경 후 Ctrl + O로 저장하고 Ctrl + X로 편집기를 종료합니다.

변경 사항을 적용하려면 SSHD를 다시 시작해야 합니다.

systemctl restart sshd

systemd를 사용하지 않는 경우, 다음 명령어를 사용해 보세요.

service ssh restart

이제 원격 시스템에서 이 SSH 서버에 접속할 때, 올바른 키를 확인하고 비밀번호 없이 접속할 수 있게 됩니다.

루트 계정 비활성화

SSH 서버에서 루트 계정을 비활성화하면 권한 없는 사용자가 SSH를 통해 서버에 접근했을 때 발생할 수 있는 피해를 줄일 수 있습니다. 루트 계정을 비활성화하기 전에, sudo를 통해 루트 권한을 얻을 수 있는 사용자가 최소한 한 명 이상 있어야 합니다.

주의: sudo를 통해 루트 권한에 접근할 수 있는 사용자는 반드시 강력한 비밀번호를 사용해야 합니다. 그렇지 않으면 루트 계정 비활성화의 효과가 줄어듭니다.

루트 계정을 비활성화하려면 터미널에서 수퍼유저 권한을 획득해야 합니다.

sudo -s

sudo -s 명령을 사용하면 su로 로그인할 필요 없이 sudoers 파일을 통해 루트 셸을 얻을 수 있습니다. 루트 권한을 얻은 후, passwd 명령어를 사용하여 루트 계정을 잠급니다.

passwd --lock root

위 명령을 실행하면 루트 계정의 비밀번호가 잠겨 su를 통한 로그인이 불가능해집니다. 이제부터 사용자는 로컬 사용자 계정으로 SSH에 접속한 후, sudo 권한을 통해 루트 계정으로 전환해야 합니다.