본문 바로가기

Server Story..../ubuntu

중복로그인 실패시 자동 ip 거부 등록 우분투 fail2ban

fail2ban 설정

Linux/System Management 2010/03/30 14:31

홈페이지 : http://www.fail2ban.org/

 

각종 로그를 검사하여 주기적으로 접속하여 해킹을 시도 하는 IP를 iptables 또는 host.deny 를 이용하여 자동으로 차단해 주는 프로그램이다.

 

 

설치

요구사항

python 2.3 이상 (http://www.python.org 또는 yum upgrade python)

gamin 0.0.21 이상 (http://www.gnome.org/~veillard/gamin)

 

> tar xvfj fail2ban-0.8.4.tar.bz2
> cd fail2ban-0.8.4
> python setup.py install

 

 

설정

 

/etc/fail2ban/jail.conf 파일을 수정하여 사용

 

[DEFAULT] 섹션 : 아래의 설정사항들에 대한 기본값을 설정한다. 이 섹션에서 설정한 기본값은 각각의 필터항목에서 개별적으로도 설정이 가능하다.

 

ignoreip : 무시할 IP주소 (여기에 입력한 IP는 차단 하지 않음) CIDR Mask, DNS, IP를 입력가능

              공백을 이용하여 여러개 입력 가능

bantime : 해킹시도가 감지되었을 때 해당 IP를 차단할 차단기간 (기본값 : 600, 단위 : 초)

findtime : 로그에서 검색할 시간 (기본값 : 600, 단위 : 초)

maxretry : 일정시간동안 해킹시도 횟수

backend : 로그 파일 변경을 감지할 방법 (gamin, polling, auto)

               gamin : Gamin(file alteration monitor)설치된 경우 사용가능

               polling : 주기적으로 점검

               auto : Gamin이 설치된 경우 gamin사용, 아니면 polling 사용

 

* ignoreip에 있는 주소를 제외한 다른 곳에서 findtime 동안 maxretry 횟수 만큼 인증실패가 일어 난 경우 bantime 시간 만큼 해당 IP를 차단한다.

 

설정파일에서 이메일 주소 변경

:%s/you@mail.com/내메일주소

:%s/fail2ban@mail.com/보내는사람 메일 주소

 

Proftpd 필터 사용시 proftpd 설정에 따라 로그를 검사하지 못하는 경우가 생긴다. /etc/fail2ban/filter.d/proftpd.conf 파일을 아래와 같이 변경 (파란색 부분을 추가)

 

failregex = (S+[<HOST>])[: -]+ USER S+: no such user found from S+ [S+] to S+:S+$
            (S+[<HOST>])[: -]+ USER S+ (Login failed): Incorrect password.$
            (S+[<HOST>])[: -]+ SECURITY VIOLATION: S+ login attempted.$
            (S+[<HOST>])[: -]+ Maximum login attempts (d+) exceeded$ 
            USER S+: no such user found from S* [<HOST>] to S+s*$
          ^<HOST> .* nobody .*PASS .* 530

 

필터 검사 툴

fail2ban-regex [로그파일] [설정파일경로]

로 체크하는 것을 jail.conf 파일에서 enable = true로 된 항목 모두 체크해 주는 스크립트

 

CentOS용 fail2ban run 스크립트 

cp fail2ban /etc/init.d/fail2ban

chmod +x /etc/init.d/fail2ban

ln -s /etc/init.d/fail2ban /etc/rc3.d/S90fail2ban

ln -s /etc/init.d/fail2ban /etc/rc3.d/K10fail2ban

ln -s /etc/init.d/fail2ban /etc/rc5.d/S90fail2ban

ln -s /etc/init.d/fail2ban /etc/rc5.d/K10fail2ban


############################################################################
fail2ban 설치하기
1. 패키지 설치
# sudo apt-get install fail2ban
  - 설치 완료 후 설정 파일은 /etc/fail2ban/jail.conf 에 있다.

2. 설정
# vi /etc/fail2ban/jail.conf
[기본 설정]
ignoreip  =   <- 적용 제외할 아이피 번호
bantime  =   <- 밴 적용 시간(초)
maxretry =   <- 밴 적용할 로그인 실패 횟수
그 아래 내용중 fail2ban을 적용할 서비스에 대하여 enabled 항목에 true로 바꾸어 주면됨.


※ dovecot 서비스 적용법 [출처:http://wiki.dovecot.org/HowTo/Fail2Ban]

# sudo vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf  <- 파일 추가
[Definition]
failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
ignoreregex =


# sudo vi /etc/fail2bain/jail.conf   <- 아래 내용 추가
[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,imap", protocol=tcp]
logpath = /var/log/maillog
maxretry = 20
findtime = 1200
bantime = 1200

# sudo /etc/init.d/fail2ban restart   <- 서비스 재시작