← 전체 목록
서버백업운영

fail2ban 설치 10분으로 SSH 브루트포스 공격을 자동 차단합니다

ℹ️ 본 글은 정보 제공 목적이며, 광고·제휴 링크가 포함될 수 있습니다.

fail2ban으로 SSH 무차별 대입 차단을 설정하기 전, 서버 로그를 열면 심장이 쫄깃했습니다. /var/log/auth.log 를 보면 중국, 러시아, 동유럽 IP에서 root, admin, ubuntu, test 같은 계정명으로 1초에 수 번씩 로그인을 시도하는 기록이 끝없이 이어졌습니다. fail2ban을 설치하고 나서는 그 로그가 눈에 띄게 줄었습니다. 5회 이상 실패한 IP가 자동으로 방화벽에 등록되기 때문입니다.

fail2ban 설치와 기본 설정

우분투 기준 설치는 한 줄입니다.

sudo apt update
sudo apt install fail2ban -y

설치 후 기본 설정 파일을 복사해서 사용자 설정 파일을 만듭니다. 원본을 직접 수정하면 패키지 업데이트 때 덮어쓰여 지기 때문입니다.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

/etc/fail2ban/jail.local 을 열어서 SSH 섹션을 확인합니다.

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
maxretry = 5
bantime  = 3600
findtime = 600
  • maxretry = 5: 10분 안에 5회 실패하면 차단
  • bantime = 3600: 1시간 동안 IP 차단
  • 더 강하게 하려면 bantime = 86400 (24시간)으로 변경

SSH 포트 변경과 병행 사용

SSH 포트를 기본 22에서 다른 포트로 변경했다면 fail2ban 설정도 맞춰줘야 합니다.

[sshd]
enabled = true
port    = 22222   # 변경한 포트 번호

설정 후 fail2ban을 재시작하고 상태를 확인합니다.

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

# 차단 현황 확인
sudo fail2ban-client status sshd

차단된 IP 관리

fail2ban이 차단한 IP 목록은 언제든 확인하고 수동으로 해제할 수 있습니다.

# 차단된 IP 목록 확인
sudo fail2ban-client status sshd

# 특정 IP 수동 해제 (실수로 차단됐을 때)
sudo fail2ban-client set sshd unbanip 1.2.3.4

# 로그에서 차단 기록 확인
sudo tail -100 /var/log/fail2ban.log

실제 운영하면서 정작 관리자 IP가 차단되는 당황스러운 경험을 한 번은 합니다. 그럴 때를 대비해 관리자 IP를 화이트리스트에 등록해두세요.

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 <관리자_IP>

fail2ban은 설치 후 서버 부하 없이 조용히 작동합니다. SSH 보안의 최소한의 안전망으로 반드시 설치해두어야 합니다.

편집 정책

AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.

작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)