fail2ban しつこい奴はbanしてやんよ!

19

Upload: hiroko-takeda

Post on 14-Aug-2015

54 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Fail2ban しつこい奴はbanしてやんよ!
Page 2: Fail2ban しつこい奴はbanしてやんよ!

FAIL2BANとは

• 不正アクセスをなんども試⾏している IPアドレス または ホスト を動的にFIREWALLに設定し、一定期間アクセスできないようにする(BANする)製品です。

• ログを監視し、特定の条件に一致したもの(FAILEDなど)をBANします。

• BANが⾏われると、管理者にメールを通知できます。

Banしてやるぜ!

Image

Page 3: Fail2ban しつこい奴はbanしてやんよ!

不正アクセスFirewallの設定だけで満足ですか?

Page 4: Fail2ban しつこい奴はbanしてやんよ!

FIREWALLで制御すればいいって?

たとえば、こんなFIREWALLの設定の場合

60秒間に4回アクセス試⾏されたら60秒間DROPする設定。

でも、それ以外は防げていない(1分間に1回のアタックなど)。

ACCEPT tcp -- ***.***.0.0/16 anywhere state NEW tcp dpt:sshACCEPT tcp -- ***.***.***.0/24 anywhere state NEW tcp dpt:ssh

tcp -- anywhere anywhere tcp dpt:ssh state NEW recent: SET name: SSH side: source DROP tcp -- anywhere anywhere tcp dpt:ssh state NEW recent: UPDATE seconds: 60 hit_count: 4 TTL-Match name: SSH side: source

Page 5: Fail2ban しつこい奴はbanしてやんよ!

たとえFIREWALLで設定していても…すり抜けた不正アクセスの試⾏が多ければ、このようにログが肥⼤します。

※BTMPはシステムに対するログイン試⾏のうち、失敗したものについての情報を記録したログ

[root@***** log]# ll | grep secure-rw-r--r-- 1 root root 90206 7月 9 10:09 2015 secure-rw-r--r-- 1 root root 3034668 6月 14 03:25 2015 secure-20150614-rw-r--r-- 1 root root 1246114 6月 21 03:17 2015 secure-20150621-rw-r--r-- 1 root root 2067468 6月 28 04:28 2015 secure-20150628-rw-r--r-- 1 root root 926293 7月 5 03:15 2015 secure-20150705

[root@***** log]# ll | grep btmp-rw------- 1 root utmp 133368576 7月 9 10:09 2015 btmp-rw------- 1 root utmp 643274880 7月 1 03:35 2015 btmp-20150701

Page 6: Fail2ban しつこい奴はbanしてやんよ!

これでは攻撃者の思うつぼ

Page 7: Fail2ban しつこい奴はbanしてやんよ!

システムにとって、良いことはない!

Page 8: Fail2ban しつこい奴はbanしてやんよ!

そんなあなたにこの製品

Page 9: Fail2ban しつこい奴はbanしてやんよ!

Fail2ban !!

Page 10: Fail2ban しつこい奴はbanしてやんよ!

こんな攻撃に有効

• DOS(F5など)

• DDOS

• 辞書攻撃

• ブルートフォース攻撃

Page 11: Fail2ban しつこい奴はbanしてやんよ!

たとえば

• ApacheやnginxのようなWebサーバ

• wardpressのようなブログソフトウェア

• sendmailやpostfix、dovecotのようなメール関連サーバ

• sshなどのリモートアクセス

• その他にも、ログでIPアドレスやホスト名が検出できるものはすべて対応可能。

Page 12: Fail2ban しつこい奴はbanしてやんよ!

フィルタ

製品ごとにフィルタを設定できるようになっており、デフォルトでも様々なフィルタがそろっています。

自分でフィルタを作成することもできます。

apache-auth.conf asterisk.conf dovecot.conf lighttpd-fastcgi.conf proftpd.conf sieve.conf webmin-auth.conf apache-badbots.conf common.conf dropbear.conf named-refused.conf pure-ftpd.confsshd-ddos.conf wuftpd.conf apache-nohome.conf courierlogin.conf exim.conf pam-generic.confqmail.conf sshd.conf xinetd-fail.conf apache-noscript.conf couriersmtp.conf gssftpd.conf php-url-fopen.conf recidive.conf sshd.conf.org apache-overflows.conf cyrus-imap.conf lighttpd-auth.confpostfix.conf sasl.conf vsftpd.conf

Page 13: Fail2ban しつこい奴はbanしてやんよ!

SSHのフィルターFAILREGEX = ^%(__PREFIX_LINE)S(?:ERROR: PAM: )?AUTHENTICATION FAILURE FOR .* FROM <HOST>¥S*$

^%(__PREFIX_LINE)S(?:ERROR: PAM: )?USER NOT KNOWN TO THE UNDERLYING AUTHENTICATION MODULE FOR .* FROM <HOST>¥S*$

^%(__PREFIX_LINE)SFAILED (?:PASSWORD|PUBLICKEY) FOR .* FROM <HOST>(?: PORT ¥D*)?(?: SSH¥D*)?¥S*$

^%(__PREFIX_LINE)SROOT LOGIN REFUSED.* FROM <HOST>¥S*$

^%(__PREFIX_LINE)S[II](?:LLEGAL|NVALID) USER .* FROM <HOST>¥S*$

^%(__PREFIX_LINE)SUSER .+ FROM <HOST> NOT ALLOWED BECAUSE NOT LISTED IN ALLOWUSERS¥S*$

^%(__PREFIX_LINE)SUSER .+ FROM <HOST> NOT ALLOWED BECAUSE LISTED IN DENYUSERS¥S*$

^%(__PREFIX_LINE)S(?:PAM_UNIX¥(SSHD:AUTH¥):¥S)?AUTHENTICATION FAILURE; LOGNAME=¥S* UID=¥S* EUID=¥S* TTY=¥S* RUSER=¥S* RHOST=<HOST>(?:¥S+USER=.*)?¥S*$

^%(__PREFIX_LINE)SREFUSED CONNECT FROM ¥S+ ¥(<HOST>¥)¥S*$

^%(__PREFIX_LINE)SADDRESS <HOST> .* POSSIBLE BREAK-IN ATTEMPT!*¥S*$

^%(__PREFIX_LINE)SUSER .+ FROM <HOST> NOT ALLOWED BECAUSE NONE OF USER'S GROUPS ARE LISTED IN ALLOWGROUPS¥S*$

^%(__PREFIX_LINE)SREVERSE MAPPING CHECKING GETADDRINFO .* ¥[<HOST>¥] FAILED - POSSIBLE BREAK-IN ATTEMPT!¥S*$ # ADD 20150708 TAKEDA

^%(__PREFIX_LINE)S.+RECEIVED DISCONNECT FROM <HOST>: 11: BYE BYE *$ # ADD 20150708 TAKEDA

sshのフィルターの設定に条件式(○○なログが出⼒されたら) が設定されています。

Page 14: Fail2ban しつこい奴はbanしてやんよ!

たとえば、FAIL2BANにこんな設定をすると?# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not# ban a host which matches an address in this list. Several addresses can be# defined using space separator.ignoreip = 127.0.0.1/8 ***.***.0.0/24 ***.***.***.*** �- Banの対象外とするIPアドレス

# "bantime" is the number of seconds that a host is banned.bantime = 172800 �- banする期間

# A host is banned if it has generated "maxretry" during the last "findtime"# seconds.findtime = 1800 �- この時間内に maxretry の回数に達したら、banする。

# "maxretry" is the number of failures before a host get banned.maxretry = 3 �- 試⾏回数

30分間で3回フィルタに引っかかったら、1日間banされる。

Page 15: Fail2ban しつこい奴はbanしてやんよ!

BANされると

BANの対象になったホストが動的にIPTABLESに追加されます。

# iptables -L

(省略)

Chain fail2ban-SSH (1 references)target prot opt source destination DROP all -- 117.79.155.237 anywhere DROP all -- 111.67.205.212 anywhere DROP all -- 222.187.198.50 anywhere DROP all -- 59.4.98.43 anywhere DROP all -- 118-163-223-214.HINET-IP.hinet.net anywhere DROP all -- 222.186.59.91 anywhere DROP all -- 138.243.26.218.internet.sx.cn anywhere DROP all -- 182.100.67.102 anywhere DROP all -- forisug-41-190-192-249.bb.foristel.co.ug anywhere DROP all -- vs248017.vserver.de anywhere DROP all -- zebra913.server4you.de anywhere DROP all -- 119-46-91-221.static.asianet.co.th anywhere DROP all -- 180.166.152.146 anywhere DROP all -- vhost083.server-home.net anywhere DROP all -- 140.206.187.123 anywhere DROP all -- vps849dds.dns26.com anywhere DROP all -- 49.236.204.181 anywhere DROP all -- static-71-123-44-83.phlapa.fios.verizon.net anywhere DROP all -- r0-s00.db.demo.s123.synapp.io anywhere DROP all -- 41.21.160.252 anywhere DROP all -- mail.aridesa.net.br anywhere DROP all -- 211.100.27.22 anywhere DROP all -- 118-175-13-242.totisp.net anywhere DROP all -- 103.7.229.9 anywhere RETURN all -- anywhere anywhere

Page 16: Fail2ban しつこい奴はbanしてやんよ!

FAIL2BANのログにも2015-07-09 11:50:41,043 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 62.75.248.172015-07-09 11:52:14,268 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 41.190.192.1582015-07-09 11:53:08,437 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 182.100.67.1022015-07-09 11:54:52,664 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 218.26.243.1382015-07-09 12:01:14,204 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 222.186.59.912015-07-09 12:12:55,995 FAIL2BAN.FILTER : WARNING DETERMINED IP USING DNS REVERSE LOOKUP: 118-163-223-214.HINET-IP.HINET.NET = ['118.163.223.214']2015-07-09 12:12:58,005 FAIL2BAN.FILTER : WARNING DETERMINED IP USING DNS REVERSE LOOKUP: 118-163-223-214.HINET-IP.HINET.NET = ['118.163.223.214']2015-07-09 12:12:58,148 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 118.163.223.2142015-07-09 12:22:04,905 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 59.4.98.432015-07-09 12:22:09,017 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] 59.4.98.43 ALREADY BANNED2015-07-09 12:38:40,192 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 222.187.198.502015-07-09 13:01:42,202 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 111.67.205.2122015-07-09 13:01:46,313 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] 111.67.205.212 ALREADY BANNED2015-07-09 13:02:14,347 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 117.79.155.2372015-07-09 13:10:22,102 FAIL2BAN.FILTER : WARNING DETERMINED IP USING DNS REVERSE LOOKUP: LL81-2-252-10-192-81.LL81-2.IAM.NET.MA = ['81.192.10.252']2015-07-09 13:10:23,045 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 81.192.10.252

BANがいっぱい!!

Page 17: Fail2ban しつこい奴はbanしてやんよ!

Image

カ・イ・カ・ン!

Page 18: Fail2ban しつこい奴はbanしてやんよ!

ということで、

Fail2ban、お薦めです

Page 19: Fail2ban しつこい奴はbanしてやんよ!

THE END