매일 업데이트
2022-02-08 20:09 4 min

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 권한을 통해 루트 계정으로 전환해야 합니다.

저자
Korea

기술 트렌드와 실용적인 팁을 전하는 लेखक입니다.