본문으로 건너뛰기

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 기반 시스템을 위한 확장 패키지 저장소입니다.
  • 기본 저장소에서는 제공하지 않는 다양한 소프트웨어 패키지를 제공합니다.
'epel-release' 패키지를 설치하면 fail2ban뿐만 아니라 여러 보안 도구를 쉽게 설치할 수 있습니다.
fail2ban을 이용하면 시스템에 반복적으로 무작위 로그인 시도를 하는 IP를 자동으로 차단할 수 있어, 보안을 강화할 수 있습니다.

부팅 시 자동 시작을 설정하면 지속적인 보호도 받을 수 있으므로 반드시 설정해 두는 것이 좋습니다.