fail2ban으로 시스템 보안을 강화하려면 어떻게 해야 하나요?
💡 요약 정리
- fail2ban은 SSH, FTP 등에서 반복적인 로그인 실패를 감지해 자동으로 IP 차단을 수행하는 보안 도구입니다.
- 기본 yum 저장소에 포함되어 있지 않기 때문에 EPEL 저장소를 먼저 설정해야 합니다.
- 설치 후
jail.conf파일을 수정하여 IP 차단 정책 등을 설정할 수 있습니다. - 설정 후 서비스를 재시작하고, 부팅 시 자동 실행되도록 chkconfig 설정이 필요합니다.
1. 설치 환경
- CentOS 5.x (64bit)
- fail2ban-0.8.4-29.el5.noarch
2. fail2ban이란?
- Python으로 개발되었으며, 특정 서비스로 로그인 시도가 정해진 횟수 이상 실패할 경우 log 파일을 분석해 일정 기간 동안 접속을 제한하는 툴입니다.
- ssh, ftp, http 등 무작위 로그인 시도(brute force attack)를 효과적으로 방어할 수 있습니다.
3. fail2ban 설치 방법
fail2ban은 기본 yum 저장소에 포함되어 있지 않습니다.
[root@cafe24 /]# rpm -qa | grep fain2ban
[root@cafe24 /]# yum install fail2ban
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.tt.co.kr
* extras: ftp.daum.net
* updates: centos.tt.co.kr
Setting up Install Process
No package fail2ban available. <--- 없슴!
Nothing to do
[root@cafe24 /]#
이처럼 기본 저장소에는 패키지가 없기 때문에 EPEL 저장소 안내 페이지로 가서 해당 CentOS 버전에 맞는 EPEL 리포지토리 패키지를 설치해야 합니다.
테스트 서버가 CentOS 5.x 버전이므로 다음 링크에서 epel-release 패키지를 다운로드합니다:
The newest version of 'epel-release' for EL5다음 명령어로 epel-release 설치를 수행합니다.
[root@cafe24 src]# rpm -Uvh epel-release-5-4.noarch.rpm
warning: epel-release-5-4.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing... ########################################### [100%]
1:epel-release ########################################### [100%]
[root@cafe24 src]#
이제 fail2ban을 yum 명령어로 설치할 수 있습니다.
[root@cafe24 src]# yum install fail2ban
...
[root@cafe24 src]# ll /usr/bin/fail2ban-*
-rwxr-xr-x 1 root root 11491 Feb 11 2012 /usr/bin/fail2ban-client
-rwxr-xr-x 1 root root 10700 Feb 11 2012 /usr/bin/fail2ban-regex
-rwxr-xr-x 1 root root 4220 Feb 11 2012 /usr/bin/fail2ban-server
[root@cafe24 src]#
4. fail2ban 설정하기
/etc/fail2ban/jail.conf 파일을 수정합니다.
ignoreip: 명시된 아이피는 차단 대상에서 제외됩니다.bantime: 로그인 실패 시 차단 기간 (기본 600초).maxretry: 로그인 실패 허용 횟수 (기본 3회).
[root@cafe24 src]# vi /etc/fail2ban/jail.conf
[DEFAULT]
ignoreip = 127.0.0.1
bantime = 600
findtime = 600
maxretry = 3
backend = auto
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath = /var/log/secure
maxretry = 5
이러한 항목을 통해 각 서비스별로 fail2ban 적용 여부를 설정할 수 있습니다.
enabled: 해당 서비스에서 fail2ban 적용 여부filter: 로그 분석시 사용할 필터./etc/fail2ban/filter.d/디렉토리의 필터 참조action: 로그인 실패 감지 시 수행할 작업
위 예시에서는 IP를 iptables로 차단하고, 이메일 알림을 보냅니다.
5. fail2ban 데몬 재시작
설정이 완료되면 fail2ban 데몬을 재시작해 적용합니다.
[root@cafe24 fail2ban]# /etc/rc.d/init.d/fail2ban restart
Stopping fail2ban: [ OK ]
Starting fail2ban: [ OK ]
[root@cafe24 fail2ban]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-SSH tcp -- anywhere anywhere tcp dpt:ssh
Chain fail2ban-SSH (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
[root@cafe24 fail2ban]#
fail2ban-SSH 체인이 iptables에 생성된 것을 확인할 수 있습니다.
6. fail2ban을 부팅 시 자동 실행 등록하기
chkconfig 명령어를 이용하여 fail2ban 서비스를 부팅 시 자동으로 실행되도록 설정합니다.
[root@cafe24 fail2ban]# chkconfig --list | grep fail2ban
fail2ban 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@cafe24 fail2ban]# chkconfig fail2ban on
[root@cafe24 fail2ban]# chkconfig --list | grep fail2ban
fail2ban 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@cafe24 fail2ban]#
이제 시스템이 재부팅되어도 fail2ban이 자동으로 실행됩니다.
7. 참고: EPEL이란?
- EPEL(Extra Packages for Enterprise Linux)은 RHEL 기반 시스템을 위한 확장 패키지 저장소입니다.
- 기본 저장소에서는 제공하지 않는 다양한 소프트웨어 패키지를 제공합니다.
fail2ban을 이용하면 시스템에 반복적으로 무작위 로그인 시도를 하는 IP를 자동으로 차단할 수 있어, 보안을 강화할 수 있습니다.
부팅 시 자동 시작을 설정하면 지속적인 보호도 받을 수 있으므로 반드시 설정해 두는 것이 좋습니다.