← 아티클 목록

SSH 보안 설정 강화 체크리스트 (sshd_config 핵심 항목)

2027-03-01#linux#보안#ssh

인터넷에 노출된 서버는 부팅 직후부터 SSH 무차별 대입(brute-force) 시도를 받습니다. /var/log/auth.log(또는 journalctl -u sshd)를 보면 Failed password for invalid user admin 같은 줄이 수백 줄씩 쌓입니다. 비밀번호 인증을 끄고 몇 가지 기본값만 바꿔도 공격 표면이 크게 줄어듭니다.

증상 — 얼마나 두들겨 맞고 있나

먼저 실패 로그를 세어 봅니다.

서버 터미널
journalctl -u sshd | grep -c "Failed password"
grep "Failed password" /var/log/auth.log | tail

실패가 많다면 비밀번호 인증이 켜져 있고 root 로그인이 열려 있을 가능성이 높습니다.

설정 파일

모든 변경은 /etc/ssh/sshd_config에서 합니다. 최신 배포판은 /etc/ssh/sshd_config.d/ 아래 드롭인 파일도 읽으니 거기에 별도 파일로 두는 것이 깔끔합니다.

핵심 항목

/etc/ssh/sshd_config.d/90-hardening.conf 에 다음을 적용합니다.

INI
# 키 인증만 허용 (비밀번호 인증 차단)
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no

# root 직접 로그인 차단
PermitRootLogin no

# 빈 비밀번호 계정 차단
PermitEmptyPasswords no

# 인증 시도·세션 제한
MaxAuthTries 3
LoginGraceTime 20
MaxSessions 5

# 접속 가능한 사용자 화이트리스트
AllowUsers deploy ops
항목왜 중요한가
PasswordAuthentication no무차별 대입의 표적 자체를 제거
PermitRootLogin noroot 계정을 직접 노리지 못하게 함
MaxAuthTries 3한 연결당 시도 횟수 제한
AllowUsers명시된 계정만 로그인 허용

비밀번호 인증을 끄기 전에 반드시 키 인증이 동작하는지 확인하세요. 그렇지 않으면 스스로 잠깁니다.

로컬 터미널
ssh-copy-id deploy@server     # 공개키 등록
ssh deploy@server             # 키로 접속되는지 먼저 확인

적용 전 검증 — 문법 오류로 잠기지 않기

sshd_config에 오타가 있으면 데몬이 재시작 실패하고, 그 사이 기존 세션도 끊기면 접속 불가가 됩니다. 적용 전 -t로 문법을 검사합니다.

로컬 터미널
sshd -t                       # 문법 검사 (출력 없으면 정상)
sshd -T | grep -i "permitrootlogin\|passwordauth"   # 실제 적용값 확인

검사가 통과하면 재시작하되, 현재 SSH 세션은 끊지 말고 새 터미널로 접속 테스트를 합니다.

서버 터미널
systemctl reload sshd
# 기존 세션 유지한 채 새 창에서 접속 확인

추가 권장

  • 포트 변경(Port 2222)은 로그 노이즈를 줄이지만 보안 자체는 아닙니다. 본질은 키 인증입니다.
  • fail2ban으로 반복 실패 IP를 자동 차단하면 로그가 한결 조용해집니다.
  • 방화벽에서 SSH 포트를 신뢰 대역으로만 여는 것이 가장 강력합니다.

체크리스트

SSH 접속 후
ssh deploy@server             # 키 인증 동작 먼저 확인
sshd -t                       # 설정 문법 검사
sshd -T | grep -i permitroot  # 적용값 확인
systemctl reload sshd         # 무중단 적용
journalctl -u sshd -f         # 적용 후 로그 관찰

SSH 키 인증·권한·로그를 직접 다뤄보는 실습은 리눅스 트랙에서 회원가입 없이 무료로 할 수 있습니다.