fail2ban으로 SSH 무차별 대입 차단을 설정하기 전, 서버 로그를 열면 심장이 쫄깃했습니다. /var/log/auth.log 를 보면 중국, 러시아, 동유럽 IP에서 root, admin, ubuntu, test 같은 계정명으로 1초에 수 번씩 로그인을 시도하는 기록이 끝없이 이어졌습니다. fail2ban을 설치하고 나서는 그 로그가 눈에 띄게 줄었습니다. 5회 이상 실패한 IP가 자동으로 방화벽에 등록되기 때문입니다.
우분투 기준 설치는 한 줄입니다.
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 포트를 기본 22에서 다른 포트로 변경했다면 fail2ban 설정도 맞춰줘야 합니다.
[sshd]
enabled = true
port = 22222 # 변경한 포트 번호
설정 후 fail2ban을 재시작하고 상태를 확인합니다.
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
# 차단 현황 확인
sudo fail2ban-client status sshd
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곳 인프라 전담)