리눅스보안
fail2ban 설치 및 사용 방법
https443
2025. 6. 18. 12:10
✅ Fail2ban 이란?
Fail2ban은 리눅스 기반 시스템에서 비정상적인 로그인 시도나 악의적인 접근을 자동으로 차단하는 보안 도구.
로그 파일을 모니터링하여 **반복적인 실패 시도(IP 기준)**를 감지 및 해당 IP를 iptables, firewalld, 또는 기타 방화벽을 통해 차단하는 서비스.
다양한 서비스와 연동이 가능하며, 자동 해제 시간도 설정 가능.
✅ 설치 방법
1. 설치
* CentOS 기준
yum install fail2ban
* Ubuntu 기준
sudo apt install fail2ban
2. 부팅 시 서비스 활성화
* CentOS 6버전 이하 (SysVinit 기반)
chkconfig fail2ban on
* CentOS 7 이상 / Ubuntu 16.04 이상 (systemd 기반)
systemctl enable fail2ban
3. 서비스 활성화 확인
* CentOS 6버전 이하 (SysVinit 기반)
service fail2ban status
chkconfig --list fail2ban
* CentOS 7 이상 / Ubuntu 16.04 이상 (systemd 기반)
systemctl status fail2ban
systemctl list-unit-files | grep fail2ban
systemctl is-enabled fail2ban
✅ 설정 방법
설정파일의 위치는 /etc/fail2ban 에 있으며 jail.conf 를 수정하여 사용한다.
jail.conf 란 Fail2ban에서 어떤 서비스(예: ssh, apache 등)를 보호할지와 각 jail(감시 규칙)의 설정을 정의한 기본 구성 파일.
* 기존 conf 파일에 바로 수정하지 않고 꼭 사본은 만들어 둔 후에 수정하여 사용하도록 함
#디렉토리 이동
cd /etc/fail2ban
#conf 파일 복사
cp jail.conf jail.conf.(날짜)org.bak
#conf 파일 수정
vim jail.conf
* 아래 conf 파일 수정 내용은 CentOS 설치를 기준으로 작성
[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/secure
설정 항목설정 값설명
| enabled | true | 해당 fail2ban 정책(jail)을 활성화 |
| filter | sshd | sshd에 대한 필터 규칙을 사용합니다. 로그에서 SSH 관련 실패 탐지에 사용 |
| action | iptables[name=SSH, port=ssh, protocol=tcp] | iptables를 사용해 SSH 포트(tcp 프로토콜)를 차단하는 액션을 수행 |
| logpath | /var/log/secure | SSH 로그인 실패 등의 로그를 읽어올 경로 (CentOS/RHEL에서 사용됨) |
* Ubuntu의 경우 secure > auth.log 로 변경 하여 사용
✅Fail2ban 재시작 및 확인
conf 파일 수정 후에는 수정된 내용 적용을 위해 재시작을 할 것
service fail2ban start
service fail2ban status
✅정책 확인
fail2ban-client status

* 특정 IP 차단이 되었을 때 확인 및 해제 방법
#차단 IP 확인
iptables -v -L | grep (사용자IP)
# 확인된 IP 해제
fail2ban-client set 정책명 unbanip IP