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

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

느린 배포나 대역폭 제한에 지치셨나요? FDC 서버는 즉각적인 전용 성능, 글로벌 범위, 모든 규모에 맞게 구축된 유연한 요금제를 제공합니다. 업그레이드할 준비가 되셨나요?
지금 성능 활용하기강력하고 계량되지 않는 VPS가 중요한 이유
미터링되지 않은 VPS는 고정된 포트 속도로 정액제 대역폭을 제공합니다. 계량형 요금제와 어떻게 다른지, 언제 요금이 부과되는지, 구매 전에 확인해야 할 사항은 무엇인지 알아보세요.
7분 소요 - 2025년 5월 9일
Linux 메모리 관리: 스왑, OOM 킬러 및 C그룹
12분 소요 - 2026년 5월 31일

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