리눅스 서버 sshd 무작위 로그인 시도 차단하기 – fail2ban

 

fail2ban 설치 및 간단 설정

리눅스 서버의 특정 서비스에 과도한 패스워드 공격이 가해지면 자동으로 해당 IP를

iptables 혹은 filrewalld 에서 차단하는 기능이다.

1. 설치

# yum install -y fail2ban fail2ban-systemd whois 

iptables 로 차단 관리를 할 경우 firewalld 설정 제거

# rm -f /etc/fail2ban/jail.d/00-firewalld.conf

기본 서비스 시작

# systemctl enable fail2ban
# systemctl start fail2ban 

2. 설정

# cd /etc/fail2ban/

jail.conf 파일에 바로 설정도 가능하지만, 패키지 업데이트등이 이루어지면 설정이 초기화되는 상황이

발생한다. 기본 설정은 그대로 두고, 개별 설정을 부가적으로 적용하는 방법으로 설정한다.

# vi jail.local

[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.201.0/24 192.168.123.0/24  ## 허가 IP 대역 
bantime = 10800 ## findtime 시간동안 maxretry 시도가 탐지된 경우 해당 IP 차단 시간 
findtime = 600  
maxretry = 5
backend = pooling
destemail = alang@clunx.com   
sender = admin@clunix.com
mta = sendmail
action = %(action_mwl)s

[sshd]
enabled = true
port = ssh,22

[dovecot]
enabled = true

[postfix]
enabled = true

[postfix-sasl]
enabled = true

dovecot 이나 postfix 처럼 기본 제공되는 filter 에서 해당되는 서비스를 활성화 시켜준다.

sshd 는 필수적으로 적용해 주고..

filter 로 제공되는 기본 서비스는 아래와 같다.

# ls /etc/fail2ban/filter.d/

3proxy.conf                counter-strike.conf  haproxy-http-auth.conf  pam-generic.conf        sogo-auth.conf
apache-auth.conf           courier-auth.conf    horde.conf              perdition.conf          solid-pop3d.conf
apache-badbots.conf        courier-smtp.conf    ignorecommands          php-url-fopen.conf      squid.conf
apache-botsearch.conf      cyrus-imap.conf      kerio.conf              phpmyadmin-syslog.conf  squirrelmail.conf
apache-common.conf         directadmin.conf     lighttpd-auth.conf      portsentry.conf         sshd.conf
apache-fakegooglebot.conf  domino-smtp.conf     mongodb-auth.conf       postfix.conf            stunnel.conf
apache-modsecurity.conf    dovecot.conf         monit.conf              proftpd.conf            suhosin.conf
apache-nohome.conf         dropbear.conf        murmur.conf             pure-ftpd.conf          tine20.conf
apache-noscript.conf       drupal-auth.conf     mysqld-auth.conf        qmail.conf              traefik-auth.conf
apache-overflows.conf      ejabberd-auth.conf   nagios.conf             recidive.conf           uwimap-auth.conf
apache-pass.conf           exim-common.conf     named-refused.conf      roundcube-auth.conf     vsftpd.conf
apache-shellshock.conf     exim-spam.conf       nginx-botsearch.conf    screensharingd.conf     webmin-auth.conf
assp.conf                  exim.conf            nginx-http-auth.conf    selinux-common.conf     wuftpd.conf
asterisk.conf              freeswitch.conf      nginx-limit-req.conf    selinux-ssh.conf        xinetd-fail.conf
bitwarden.conf             froxlor-auth.conf    nsd.conf                sendmail-auth.conf      znc-adminlog.conf
botsearch-common.conf      groupoffice.conf     openhab.conf            sendmail-reject.conf    zoneminder.conf
centreon.conf              gssftpd.conf         openwebmail.conf        sieve.conf
common.conf                guacamole.conf       oracleims.conf          slapd.conf

설정이 완료되면 fail2ban 서비스를 재시작한다.

# systemctl restart fail2ban

동작 상태를 확인한다.

# fail2ban-client status

Status
|- Number of jail:	4
`- Jail list:	dovecot, postfix, postfix-sasl, sshd

현재 등록된 서비스가 4개 있다는 것을 알수 있다. 이중 sshd 상태를 확인한다.

# fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed:	15
|  |- Total failed:	125
|  `- Journal matches:	_SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned:	8
   |- Total banned:	8
   `- Banned IP list:	111.61.241.100 165.22.69.147 37.187.12.126 139.59.40.240 139.59.68.15 27.191.237.67 217.182.79.176 119.29.16.190

여러 IP 들이 sshd 로 무작위 접근 했고, 차단된 것을 확인할 수 있다.

실제 iptables 에 차단된 rule 이 등록되었는지 확인한다.

# iptables -nL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
f2b-sshd   tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 22,22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain f2b-sshd (1 references)
target     prot opt source               destination         
REJECT     all  --  182.151.41.208       0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  45.131.108.196       0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  140.143.136.41       0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  1.194.238.226        0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  54.38.139.210        0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  104.248.205.24       0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  46.101.245.176       0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  217.182.79.176       0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  139.59.40.240        0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  37.187.12.126        0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  27.191.237.67        0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  165.22.69.147        0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  139.59.68.15         0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  119.29.16.190        0.0.0.0/0            reject-with icmp-port-unreachable
REJECT     all  --  111.61.241.100       0.0.0.0/0            reject-with icmp-port-unreachable
RETURN     all  --  0.0.0.0/0            0.0.0.0/0      

혹 fail2ban 에 정상적인 IP 가 차단 된 경우 아래와 같은 방법으로 차단을 해제할 수 있다.

# fail2ban-client set sshd unbanip x.x.x.x

 

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.