본문 바로가기

리눅스

centos fail2ban 설치 하기

무작위로 ssh 및 postfix 에 접근 하는 IP 를 일일이 찻아서 블럭하기가 생각만큼 쉽지는 않다 

그럴때를 위해서 fail2ban 이라는 데몬이 있다. 

설치 방법

# yum install fail2ban -y

설치 후 

/etc/fail2ban 이라는 폴더가 생길 것이다. 

거기 보면 

-rw-r--r-- 1 root root 21338 2018-11-13 16:58 \

drwxr-xr-x 2 root root  4096 2018-11-13 16:27 action.d

-rw-r--r-- 1 root root  2313 2017-02-18 03:17 fail2ban.conf

drwxr-xr-x 2 root root  4096 2017-02-18 03:17 fail2ban.d

drwxr-xr-x 3 root root  4096 2018-11-13 16:27 filter.d

-rw-r--r-- 1 root root 21338 2018-11-13 16:58 jail.conf

drwxr-xr-x 2 root root  4096 2017-02-18 03:17 jail.d

-rw-r--r-- 1 root root  2375 2016-12-09 23:36 paths-common.conf

-rw-r--r-- 1 root root   642 2016-12-09 23:36 paths-debian.conf

-rw-r--r-- 1 root root   769 2017-02-18 03:17 paths-fedora.conf

-rw-r--r-- 1 root root  1174 2016-12-09 23:36 paths-freebsd.conf

-rw-r--r-- 1 root root   975 2016-12-09 23:36 paths-opensuse.conf

-rw-r--r-- 1 root root   290 2016-12-09 23:36 paths-osx.conf

위와 같이 나올 것이다. 

딴거 다 볼 필요 없이 jail.conf 파일 만 수정 하면 된다. 

이 부분 설정 

ignoreip =   --> 제외 할 IP 여기 설정한 아이피는 ban 당하지 않는다 .

bantime  = 600 ban 할 시간. 

findtime  = 600 입력한 시간간격 사이에 지정횟수 초과시 차단 

maxretry = 5  -->입력횟수 초과시 접근 거부 

time은  전부 초단위다 

중간쯤 보면 

[sshd]

enabled = true --> 이부분 추가 해야 실행이 된다. 

port    = ssh

logpath = /var/log/secure  --> 참조할 로그 이다. 

backend = %(sshd_backend)s


[postfix]

enabled = true

port     = smtp,465,submission

logpath  = /var/log/maillog

backend  = %(postfix_backend)s


[postfix-sasl]

enabled = true
port     = smtp,465,submission,imap3,imaps,pop3,pop3s
# You might consider monitoring /var/log/mail.warn instead if you are
# running postfix since it would provide the same log lines at the
# "warn" level but overall at the smaller filesize.
logpath  = /var/log/maillog
backend  = %(postfix_backend)s

그리고 나머지는 설정 하지 않아도 된다. 

나는 메일과 ssh 만 설정 했다. 

그 후 

/etc/fail2ban/filter.d

들어가면 해당 설정에 따른 설정 파일이 있다. 

postfix 설정을 보면 

# common.local
before = common.conf

[Definition]

_daemon = postfix(-\w+)?/(?:submission/|smtps/)?smtp[ds]

failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 Client host rejected: cannot find your hostname, (\[\S*\]); from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
            ^%(__prefix_line)sNOQUEUE: reject: EHLO from \S+\[<HOST>\]: 504 5\.5\.2 <\S+>: Helo command rejected: need fully-qualified hostname;
            ^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.1\.8 <\S*>: Sender address rejected: Domain not found; from=<\S*> to=<\S+> proto=ESMTP helo=<\S*>$
            ^%(__prefix_line)simproper command pipelining after \S+ from [^[]*\[<HOST>\]:?$ 

위 부분이 로그에서 찻는 부분이다. 나중에 필요에 따라 설정 하면 된다. 

ignoreregex =

[Init]

journalmatch = _SYSTEMD_UNIT=postfix.service

그후 service fail2ban start 하면 끝!!




'리눅스' 카테고리의 다른 글

정보처리기사실기 #요구사항  (0) 2022.04.06
Centos 6 설치  (0) 2019.08.31
postfix SPF check 하기  (0) 2018.11.13
bash 특정 파일 전부 바꾸기  (0) 2018.10.25
우분투 mrtg 용 snmp 설정 방법  (0) 2018.10.11