[Linux] Fail2ban으로 SSH 로그인 시도 차단하기

리눅스 서버를 인터넷에 열어두면, 하루에도 수백 번의 SSH 로그인 시도가 발생할 수 있습니다.
비밀번호 기반 로그인이라면 특히나 위험하죠. 이럴 때 사용할 수 있는 도구가 바로 Fail2ban입니다.

Fail2ban은 로그 파일을 감시하고, 반복적으로 로그인에 실패한 IP를 자동으로 차단해주는 보안 도구입니다.


1. Fail2ban 설치하기

Ubuntu / Debian 계열

sudo apt update
sudo apt install fail2ban

CentOS / RHEL 계열

sudo dnf install epel-release
sudo dnf install fail2ban

 

 

2. Fail2ban 서비스 시작 및 자동 실행 설정

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

설치 후 fail2ban 서비스가 정상적으로 작동하는지 확인해봅니다:

sudo systemctl status fail2ban

 

 

3. SSH 보호 설정하기

- 기본 설정 복사

설정을 커스터마이징하기 위해 기본 파일을 복사해서 사용합니다.

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

- jail.local 파일 열기

sudo nano /etc/fail2ban/jail.local

- [sshd] 섹션 찾기 또는 추가하기

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 5
bantime = 600
findtime = 600
  • enabled: 이 jail을 활성화할지 여부
  • port: 보호할 포트 (기본 ssh는 22번)
  • maxretry: 차단되기 전 허용할 실패 횟수
  • bantime: 차단 시간 (초 단위, 위 예시는 10분)
  • findtime: 위 횟수가 누적되는 시간 (초 단위)

 

4. Fail2ban 재시작 및 상태 확인

설정이 완료되었으면 Fail2ban을 다시 시작합니다.

sudo systemctl restart fail2ban

SSH 관련 jail이 잘 작동하는지 확인합니다:

sudo fail2ban-client status sshd

예시 출력:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 2
|  |- Total failed: 5
|  `- File list: /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned: 3
   `- Banned IP list: 192.168.0.20

 

 

5. 해제 및 차단 IP 수동 관리

- 특정 IP 해제하기

sudo fail2ban-client set sshd unbanip 192.168.0.20

- 즉시 차단하기

sudo fail2ban-client set sshd banip 192.168.0.30

 

 

자동 차단으로 SSH 보안을 강화하세요

Fail2ban은 설치만 해도 기본적인 SSH 보호 효과를 제공합니다.
특히 비밀번호 인증을 사용하는 경우엔 꼭 설정해두는 것이 좋습니다.

단순하면서도 강력한 도구인 만큼, 너무 민감하게 설정하면 일반 사용자까지 차단될 수 있으니,
maxretrybantime 값을 적절히 조정해 사용하는 것이 좋습니다.