1 SSH 서버 설정: sshd_config
SSH 서버의 보안 설정은 /etc/ssh/sshd_config 파일에서 관리한다.
설정 변경 후 반드시 SSH 서비스를 재시작해야 한다:
설정을 잘못하면 서버에 접속할 수 없게 된다. 변경 전에 현재 SSH 세션을 유지한 채 새 세션으로 접속 테스트를 해야 한다.
2 핵심 보안 설정
2.1 비밀번호 인증 비활성화
공개키 인증만 허용하면 브루트포스 공격이 무의미해진다. 가장 효과적인 보안 강화 방법이다.
비밀번호 인증을 끄기 전에 공개키 인증으로 접속이 정상 동작하는지 반드시 확인해야 한다. 그렇지 않으면 서버에 접속할 수 없게 된다.
2.2 Root 로그인 차단
root 계정은 모든 서버에 존재하므로 공격 대상이 되기 쉽다.
root 작업이 필요하면 일반 사용자로 접속 후 sudo를 사용한다.
2.3 접속 허용 사용자 제한
2.4 포트 변경
기본 포트(22)를 변경하면 자동화된 스캐닝 공격을 줄일 수 있다.
포트 변경 후 방화벽에서 새 포트를 허용해야 한다:
# Ubuntu (UFW)
sudo ufw allow 2222/tcp
# CentOS (firewalld)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload포트 변경만으로 보안이 강화되지는 않는다 (security through obscurity). 자동화된 스캐닝을 줄이는 효과만 있으며, 공개키 인증과 함께 사용해야 의미가 있다.
2.5 최대 인증 시도 횟수
2.6 로그인 시간 제한
3 권장 sshd_config 전체
# 포트 설정
Port 2222
# 프로토콜 (SSH-2만 사용)
Protocol 2
# 인증 방식
PasswordAuthentication no
PubkeyAuthentication yes
PermitEmptyPasswords no
# Root 접속 차단
PermitRootLogin no
# 접속 허용 사용자
AllowUsers ubuntu developer
# 인증 시도 제한
MaxAuthTries 3
LoginGraceTime 30
# X11 포워딩 (필요 시만 yes)
X11Forwarding no
# 빈 비밀번호 금지
PermitEmptyPasswords no4 Fail2Ban: 브루트포스 방어
Fail2Ban은 반복적인 로그인 실패를 감지하여 IP를 자동 차단하는 도구다.
4.1 설치
4.2 설정
4.3 관리 명령어
5 2FA: 이중 인증
SSH에 Google Authenticator를 추가하여 키 인증 + OTP 코드의 이중 보안을 적용한다.
5.1 설치 및 설정
5.2 PAM 설정
5.3 SSH 설정
6 방화벽 설정
6.1 원칙: 최소 권한 (Least Privilege)
SSH 포트를 전체 인터넷(0.0.0.0/0)에 열지 않고, 특정 IP만 허용한다.
6.2 Ubuntu (UFW)
6.3 Azure NSG
6.4 AWS Security Group
7 로그 모니터링
7.1 SSH 접속 로그 확인
7.2 비정상 접속 징후
- 알 수 없는 IP에서 반복적인 접속 시도
- 존재하지 않는 사용자명으로의 접속 시도
- 짧은 시간 내 다수의 인증 실패
8 SSH 키 관리 원칙
| 원칙 | 설명 |
|---|---|
| 개인키 비공개 | 절대 공유, 이메일 전송, Git 커밋 금지 |
| 파일 권한 600 | chmod 600 ~/.ssh/id_ed25519 |
| 패스프레이즈 설정 | 개인키 유출 시에도 추가 보호 |
| 정기적 키 순환 | 오래된 키는 새 키로 교체 |
| 퇴사자 키 제거 | authorized_keys에서 즉시 삭제 |
| 용도별 키 분리 | 개인/업무/서비스별 별도 키 사용 |
9 보안 체크리스트
[ ] 비밀번호 인증 비활성화 (PasswordAuthentication no)
[ ] Root 로그인 차단 (PermitRootLogin no)
[ ] SSH 키 파일 권한 확인 (chmod 600)
[ ] 방화벽에서 SSH 포트 IP 제한
[ ] Fail2Ban 설치 및 활성화
[ ] 포트 변경 (선택)
[ ] 2FA 설정 (선택)
[ ] 정기적 로그 점검
[ ] 퇴사자/불필요 키 정리
10 요약
| 설정 | 효과 | 우선순위 |
|---|---|---|
PasswordAuthentication no |
브루트포스 공격 원천 차단 | 필수 |
PermitRootLogin no |
Root 계정 공격 차단 | 필수 |
| 방화벽 IP 제한 | 접근 범위 최소화 | 필수 |
| Fail2Ban | 반복 공격 IP 자동 차단 | 권장 |
| 포트 변경 | 자동 스캐닝 회피 | 선택 |
| 2FA | 이중 인증 | 선택 |