실전 보안 가이드: 초보자를 위한 SSH 서버 필수 보안 설정 5단계

SSH(Secure Shell)는 많은 서버 관리자가 원격 관리를 위해 사용하는 필수 도구입니다. 그러나 기본 설정만으로는 무차별 대입 공격이나 권한 탈취와 같은 보안 위협에 노출될 수 있습니다. 실제로 한 연구에 따르면 평균적으로 하루에 수천 건의 무차별 대입 공격이 SSH 서버를 겨냥하고 있습니다. 이 글에서는 실무에서 즉시 적용 가능한 SSH 서버 보안 강화 방법을 5단계로 나누어 설명하겠습니다. 각 단계는 구체적인 명령어와 예제 코드를 포함하여 누구나 쉽게 따라 할 수 있도록 구성되어 있습니다.

SSH 보안 위협과 공격 시나리오

SSH는 기본적으로 강력한 암호화 기술을 사용하지만 잘못된 설정으로 인해 보안 취약점이 발생할 수 있습니다. 대표적인 공격 시나리오는 다음과 같습니다:

무차별 대입 공격(Brute Force Attack): 공격자가 자동화된 도구를 이용해 여러 사용자 이름과 비밀번호 조합을 시도하여 서버에 접근을 시도하는 방식입니다. 특히 기본 포트(22번)를 사용하는 경우 공격 대상이 되기 쉽습니다.

중간자 공격(Man-in-the-Middle Attack): 네트워크 통신 중간에서 공격자가 개입하여 데이터를 가로채는 공격입니다. SSH의 암호화를 우회하려는 시도로, 서버 및 클라이언트 인증이 부족할 때 발생할 수 있습니다.

권한 탈취: 루트 계정으로 직접 접근할 수 있는 경우, 공격자는 시스템 전체를 제어할 수 있는 권한을 얻게 됩니다. 이를 방지하기 위해 루트 계정의 SSH 접근을 차단하는 것이 중요합니다.

Verizon의 2023년 데이터 유출 보고서에 따르면, 약 61%의 침해 사건이 약한 또는 도난당한 자격 증명을 통해 발생했습니다. SSH 서버 역시 예외는 아닙니다. 이러한 통계는 SSH 서버 보안 강화의 중요성을 강조합니다.

SSH 서버 필수 보안 설정 5단계

  1. 기본 포트 변경: SSH의 기본 포트인 22번을 다른 포트로 변경하여 무차별 대입 공격의 대상이 되는 가능성을 줄입니다.
# /etc/ssh/sshd_config 파일을 열어 다음 줄을 수정합니다.
Port 2222  # 원하는 포트 번호로 변경합니다.

변경된 포트 번호가 방화벽에 의해 차단되지 않도록 설정합니다.

  1. 루트 로그인 차단: 루트 계정의 SSH 접근을 차단하여 관리자 권한 탈취를 방지합니다.
# /etc/ssh/sshd_config에서 다음 줄을 수정합니다.
PermitRootLogin no

적용 후 SSH 서비스를 재시작합니다.

  1. 키 기반 인증: 패스워드 대신 공개 키 기반 인증을 사용하여 보안을 강화합니다.
# 클라이언트에서 공개 키 생성
ssh-keygen -t rsa
# 서버에 공개 키 복사
ssh-copy-id -i ~/.ssh/id_rsa.pub user@yourserver

패스워드 인증을 차단하려면 다음을 설정합니다:

# /etc/ssh/sshd_config에서 다음 줄을 수정합니다.
PasswordAuthentication no
  1. fail2ban 설치 및 설정: 무차별 대입 공격을 방지하기 위해 fail2ban을 설치하고 설정합니다.
# fail2ban 설치
sudo apt install fail2ban
# 기본 설정 파일 편집
/etc/fail2ban/jail.local

SSH 설정 섹션에서 다음 내용을 추가합니다:

[sshd]
enabled = true
port    = 2222  # 변경한 포트 번호
  1. 설정 후 테스트: 각 설정의 적용 여부를 확인하고 테스트합니다.

SSH 서버에 접속하여 변경된 포트와 인증 방식을 통해 접근이 가능한지 확인합니다.

결론

SSH 서버 보안 강화를 위해 이 글에서 제시한 5단계를 실천함으로써 무차별 대입 공격과 같은 위협으로부터 서버를 보호할 수 있습니다. 추가적으로, UFW와 같은 방화벽 설정 및 모니터링 툴을 통해 지속적인 보안 강화를 권장합니다. 보다 깊이 있는 참고 자료는 공식 SSH 문서와 보안 커뮤니티의 사례 연구를 참조하시기 바랍니다.

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.