Fail2ban이란
서버 로그 파일을 감시하다가 일정 횟수 이상 로그인 실패가 감지되면, 해당 IP를 방화벽 규칙(iptables 등)으로 자동 차단하는 침입 방지 도구입니다.
기본 설정 — SSH 보호
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
maxretry = 5
findtime = 600
bantime = 3600
10분(600초) 이내에 5번 실패하면 해당 IP를 1시간(3600초) 동안 차단합니다.
동작 확인
fail2ban-client status sshd
fail2ban-client status sshd --banned
차단 해제
fail2ban-client set sshd unbanip 1.2.3.4
SSH 외 다른 서비스도 보호 가능
Fail2ban은 SSH뿐 아니라 Nginx, Apache, FTP, 메일 서버 등 로그를 남기는 대부분의 서비스에 필터를 적용해 같은 방식으로 보호할 수 있습니다.
SSH 키 인증과 함께 쓰면
이미 비밀번호 로그인을 막았더라도, Fail2ban은 다른 서비스(웹 로그인 폼 등)의 무차별 대입 공격을 막는 데 여전히 유용합니다.