연구실

fail2ban 설치 및 설정(서버 관리)

sw.kim 2026. 2. 5. 16:28

Fail2ban은 반복적인 로그인 실패를 감지해서 해당 IP를 자동으로 차단하는 침입 방지 도구다. SSH 무차별 대입 공격으로부터 서버를 보호하는 데 필수적이다.

 


설치

Ubuntu/Debian 기반 설치 방법으로 설치는 간단하다.

sudo apt update sudo apt install fail2ban -y

 

 

설치 후 서비스를 활성화하고 시작한다.

sudo systemctl enable fail2ban 
sudo systemctl start fail2ban 
sudo systemctl status fail2ban

 


설정 파일 구조

Fail2ban의 설정 파일은 /etc/fail2ban 디렉토리에 위치한다:

  • fail2ban.conf: 전역 설정 파일
  • jail.conf: Jail 설정의 기본 템플릿
  • jail.local: 사용자 정의 설정 파일 (직접 생성)
  • filter.d/: 로그 패턴 필터 정의
  • action.d/: IP 차단/해제 액션 정의

 

기본 설정

업데이트 시 기본 설정이 덮어쓰여질 수 있으므로 .local 파일을 생성해서 사용하는 것이 안전하다.

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

 

주요 설정 값 변경

금지 시간과 최대 실패 횟수 설정

# 차단 시간 (기본값: 10분) 
bantime = 10m
# 로그 분석 시간 범위 (기본값: 10분) 
findtime = 10m
# 차단 전 최대 실패 횟수 (기본값: 5회) 
maxretry = 5

시간 단위는 s(초), m(분), h(시), d(일), w(주)를 사용할 수 있다.

 

예를 들어

bantime = 1h # 1시간 차단
bantime = 1d # 1일 차단
bantime = 5w # 5주 차단

​다음과 같이 설정할 수 있다.

 
 

설정 변경 후 서비스를 재시작한다.

sudo systemctl restart fail2ban

Ban된 IP 확인

현재 활성화된 jail 목록을 확인한다.

sudo fail2ban-client status

 

 

특정 jail의 상세 정보와 차단된 IP 목록을 확인한다.

sudo fail2ban-client status sshd
 
 

Ban된 IP 해제 방법

특정 jail에서 IP를 해제한다.

sudo fail2ban-client unban 192.168.1.100


IP 화이트리스트 등록

특정 IP를 영구적으로 차단 제외하려면 jail.local의 ignoreip 항목에 추가할 수 있다.

sudo nano /etc/fail2ban/jail.local
 
 
ignoreip = 192.168.1.100
 

 

설정 변경 후 서비스를 재시작한다.

sudo systemctl restart fail2ban