Linux에서 Fail2Ban을 설치하고 구성하는 방법
9분 소요 - 2026년 5월 14일

우분투, 데비안 및 RHEL 기반 Linux 서버에 Fail2Ban을 설치, 구성 및 테스트하는 단계별 가이드입니다.
Linux에서 Fail2Ban 설치 및 구성 방법
Fail2Ban은 서버 로그에서 의심스러운 활동을 모니터링하고 방화벽 규칙을 업데이트하여 문제가 되는 IP를 자동으로 차단합니다. 무차별 대입 공격을 차단하고 로그 노이즈를 줄이며 한 번 구성하면 백그라운드에서 조용히 실행됩니다. 이 가이드에서는 우분투/데비안에서의 설치, 핵심 구성, 자일 설정 및 알아두면 유용한 몇 가지 고급 옵션에 대해 설명합니다.
전제 조건
Fail2Ban은 대부분의 Linux 배포판에서 실행됩니다: 우분투, 데비안, 알마리눅스, 센트OS, RHEL, 록키 리눅스, 페도라. 다음이 필요합니다:
- 시스템에 설치된Python 3
- 패키지 설치 및 방화벽 변경을 위한루트 또는 sudo 액세스 권한
- 활성 방화벽 (iptables, nftables, ufw 또는 firewalld)
- 실패한 로그인 시도를 캡처하는로그 파일
(Debian 기반 시스템의 경우/var/log/auth.log, RHEL 기반 시스템의 경우/var/log/secure)
RHEL 기반 시스템에서는 먼저 EPEL 리포지토리를 활성화하세요. Fail2Ban을 설치하기 전에 방화벽이 ufw 상태 또는 systemctl 상태 firewalld로 실행 중인지 확인하세요.
우분투/데비안에 Fail2Ban 설치하기
패키지를 업데이트하고 Fail2Ban을 설치합니다:
sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban부팅 시 시작되도록 서비스를 활성화한 다음 시작합니다:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban기본 구성을 로컬 오버라이드 파일에 복사합니다. 패키지 업데이트가 설정을 덮어쓰지 않도록 항상 jail.conf가 아닌 jail.local을 편집하세요:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local모든 것이 실행 중인지 확인합니다:
sudo systemctl status fail2ban
sudo fail2ban-client status첫 번째 명령에 "활성: 활성(실행 중)"이 표시되어야 합니다. 두 번째 명령은 활성 상태인 재울을 나열합니다. Sudo systemctl is-enabled fail2ban으로 부팅 시 Fail2Ban이 활성화되어 있는지 확인합니다.
Jails 구성하기
기본 설정
Etc/fail2ban/jail.local을 열고 [DEFAULT] 섹션을 조정합니다. 이 설정은 재정의하지 않는 한 모든 자일에 적용됩니다:
| 파라미터 | 권장 값 | 기능 |
|---|---|---|
밴 시간 | 3600 | 1시간 동안 IP를 차단합니다 |
findtime | 600 | 10분 동안 실패 횟수 계산 |
최대 재시도 | 3~5회 | 금지가 트리거되기 전 실패 횟수 |
무시 | 127.0.0.1/8 ::1 | 차단되지 않는 IP |
스스로 차단되지 않도록 관리 IP를 무시IP에 추가하세요. 예: ignoreip = 127.0.0.1/8 ::1 203.0.113.50.
SSH 보호
Jail.local에서 SSH 감옥을 활성화하세요:
[sshd]
enabled = true로그 경로가 배포판의 올바른 로그 파일을 가리키는지 확인하세요. SSH를 비표준 포트(예: 2222)로 이동한 경우 포트 매개변수를 일치하도록 업데이트하세요.
웹 서버 보호
웹 서버와 일치하는 자일을 사용 설정합니다:
- Nginx: 인증 실패의 경우
[nginx-http-auth], 악성 봇의 경우[nginx-botsearch] - Apache: 인증의 경우
[apache-auth], 봇의 경우[apache-badbots]
리시디브 감옥
리시디브] 감옥은 다른 감옥에서 계속 금지되는 IP를 포착하여 일반적으로 1주일(604,800초)의 더 긴 페널티를 적용합니다. 접근 방식을 바꾸는 끈질긴 공격자에게 유용합니다.
변경한 후 다시 로드하세요:
sudo systemctl restart fail2ban
sudo fail2ban-client status테스트 및 모니터링
테스트 금지
프로덕션 환경에서 Fail2Ban을 사용하기 전에 테스트하세요. 관리자 IP가 아닌 원격 컴퓨터에서 최대 시도 횟수를 초과할 때까지 SSH 로그인을 시도합니다. 차단되어야 합니다. 확인합니다:
sudo fail2ban-client status sshd차단이 실시간으로 발생하는지 확인하세요:
tail -f /var/log/fail2ban.log실수로 합법적인 IP를 차단한 경우 차단을 해제하세요:
sudo fail2ban-client set sshd unbanip 203.0.113.50일일 모니터링
로그를 그래프로 표시하여 차단 기록을 검토하세요:
grep "Ban\|Unban" /var/log/fail2ban.log유용한 관리 명령
| 명령 | 목적 |
|---|---|
fail2ban-client 상태 | 모든 활성 감옥을 나열합니다 |
fail2ban-client 금지됨 | 현재 금지된 모든 IP 표시 |
fail2ban-client set <jail> unbanip <IP> | 특정 IP 차단 해제 |
fail2ban-client unban --all | 모든 금지 해제 |
fail2ban-client set <jail> banip <IP> | 수동으로 IP 차단하기 |
재시작 시에도 차단이 유지됩니다. Fail2Ban은 /var/lib/fail2ban/fail2ban.sqlite3의 SQLite 데이터베이스에 이를 저장합니다.
고급 구성
Nftables로 전환
nftables는 iptables의 최신 대체품입니다. 단일 프레임워크에서 IPv4와 IPv6를 처리하고, 대규모 금지 목록으로 더 잘 확장되며, 속도 제한 기능이 내장되어 있습니다. 우분투 22.04 이상, 데비안 11 이상 또는 최신 배포판을 사용 중이라면 더 나은 선택입니다.
Jail.local에 설정하세요:
[DEFAULT]
banaction = nftables-multiportFail2Ban을 재시작한 다음 sudo nft 목록 규칙 집합으로 확인합니다. 출력에 f2b-table 및 f2b-chain이 표시되어야 합니다. 구형 시스템을 사용 중이거나 호환성 요구 사항이 있는 경우에만 iptables를 사용하세요.
이메일 알림
기본적으로 Fail2Ban은 자동으로 차단합니다. 이메일 알림을 받으려면 jail.local의 [DEFAULT] 섹션에 다음을 추가하세요:
[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)sAction_mwl 동작은 차단 세부 정보, WHOIS 데이터 및 차단을 트리거한 로그 줄이 포함된 이메일을 보냅니다. WHOIS 데이터만 원하는 경우 action_mw를 사용하세요. Sendmail과 같은 메일 전송 에이전트가 설치되어 있거나 msmtp와 같은 것을 통해 구성된 SMTP 릴레이가 있어야 합니다.
Slack 또는 Discord 알림의 경우 웹훅을 전송하는 스크립트를 만들어 /etc/fail2ban/action.d/의 사용자 지정 작업 파일을 통해 연결합니다.
Fail2Ban을 실행할 수 있는 전체 루트 액세스 권한과 무제한 대역폭을 갖춘 서버를 찾고 있다면 FDC의 전용 서버를 확인하세요.

느린 배포나 대역폭 제한에 지치셨나요? FDC 서버는 즉각적인 전용 성능, 글로벌 범위, 모든 규모에 맞게 구축된 유연한 요금제를 제공합니다. 업그레이드할 준비가 되셨나요?
지금 성능 활용하기
Linux 서버 강화 체크리스트
Linux 서버를 강화하기 위한 단계별 체크리스트. SSH, 방화벽, 패치, 파일 권한, SELinux/AppArmor 및 감사 로깅을 다룹니다
15분 소요 - 2026년 5월 8일
iperf3 튜토리얼: Linux 및 Windows에서 네트워크 속도 테스트하기
10분 소요 - 2026년 5월 7일

질문이 있거나 맞춤형 솔루션이 필요하신가요?
유연한 옵션
글로벌 도달 범위
즉시 배포
유연한 옵션
글로벌 도달 범위
즉시 배포