SSH는 원격으로 서버를 제어하는 가장 기본적인 통로입니다. 그만큼 공격자들이 가장 먼저 노리는 지점이기도 합니다. 기본 설정 그대로 두면 끊임없이 로그인 시도를 당하게 됩니다. 이 글에서는 SSH 접속을 더 안전하게 만드는 핵심 설정 5가지를 정리했습니
1. 비밀번호 대신 키 인증 사용하기
비밀번호는 추측당하거나 무차별 대입 공격에 뚫릴 수 있습니다. 가장 강력한 방법은 SSH 키 인증입니다. 내 컴퓨터에서 키 쌍을 만들고 공개키를 서버에 등록합니다.
ssh-keygen -t ed25519
ssh-copy-id deploy@서버IP
키 인증이 정상 동작하는 것을 확인한 뒤, 설정에서 비밀번호 로그인을 비활성화합니다.
PasswordAuthentication no
2. root 직접 로그인 차단
root는 모든 권한을 가진 계정이라 탈취되면 치명적입니다. /etc/ssh/sshd_config에서 다음을 설정합니다.
PermitRootLogin no
평소에는 일반 계정으로 접속하고, 필요할 때만 sudo를 사용하세요.
3. SSH 포트 변경
기본 포트인 22번은 자동 공격 봇의 1순위 타깃입니다. 포트를 바꾸면 무차별 공격 시도가 눈에 띄게 줄어듭니다.
Port 2222
포트를 바꾼 뒤에는 방화벽에서 해당 포트를 먼저 열어야 접속이 끊기지 않습니다.
sudo ufw allow 2222
4. fail2ban으로 자동 차단
fail2ban은 반복적으로 로그인에 실패하는 IP를 자동으로 일정 시간 차단해 줍니다.
sudo apt install fail2ban -y
설치만 해도 기본 규칙으로 SSH를 보호합니다. 차단 시간이나 허용 실패 횟수는 설정 파일에서 조정할 수 있습니다.
5. 접속 가능한 사용자 제한
특정 계정만 SSH 접속을 허용하면 보안이 한층 강해집니다. 설정 파일에 다음을 추가합니다.
AllowUsers deploy
이렇게 하면 deploy 계정 외에는 SSH로 접속할 수 없습니다.
설정 적용하기
모든 변경 후에는 SSH 서비스를 재시작해 적용합니다. 단, 현재 접속을 끊지 말고 새 터미널로 접속이 되는지 먼저 확인하세요. 설정 실수로 접속이 막히는 사고를 예방할 수 있습니다.
sudo systemctl restart ssh
마무리
키 인증, root 차단, 포트 변경, fail2ban, 사용자 제한 이 다섯 가지만 적용해도 SSH 보안은 비약적으로 강해집니다. 서버를 외부에 공개하기 전에 반드시 점검해야 할 기본기이니, 하나씩 차근차근 적용해 보세요.