Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,203 views

Published on

アタック攻撃対策のオープンソース製品、Fail2banの紹介資料です。

Published in: Software
  • Be the first to comment

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

  1. 1. FAIL2BANとは • 不正アクセスをなんども試⾏している IP アドレス または ホスト を動的に FIREWALLに設定し、一定期間アクセス できないようにする(BANする)製品です。 • ログを監視し、特定の条件に一致したも の(FAILEDなど)をBANします。 • BANが⾏われると、管理者にメールを通 知できます。 Banしてやるぜ! Image
  2. 2. 不正アクセス Firewallの設定だけ で満足ですか?
  3. 3. FIREWALLで制御すればいいって? たとえば、こんなFIREWALLの設定の場合 60秒間に4回アクセス試⾏されたら60秒間DROPする設定。 でも、それ以外は防げていない(1分間に1回のアタックなど)。 ACCEPT tcp -- ***.***.0.0/16 anywhere state NEW tcp dpt:ssh ACCEPT 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
  4. 4. たとえ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
  5. 5. これでは 攻撃者の思うつぼ
  6. 6. システムにとって、 良いことはない!
  7. 7. そんなあなたに この製品
  8. 8. Fail2ban !!
  9. 9. こんな攻撃に有効 • DOS(F5など) • DDOS • 辞書攻撃 • ブルートフォース攻撃
  10. 10. たとえば • ApacheやnginxのようなWebサーバ • wardpressのようなブログソフトウェア • sendmailやpostfix、dovecotのようなメール関連サーバ • sshなどのリモートアクセス • その他にも、ログでIPアドレスやホスト名が検出できるものはすべて対応可能。
  11. 11. フィルタ 製品ごとにフィルタを設定できるようになっており、デフォルトでも様々なフィルタがそろっています。 自分でフィルタを作成することもできます。 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.conf sshd-ddos.conf wuftpd.conf apache-nohome.conf courierlogin.conf exim.conf pam-generic.conf qmail.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.conf postfix.conf sasl.conf vsftpd.conf
  12. 12. 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のフィルターの設定に条件式(○○なログが出⼒されたら) が設定されています。
  13. 13. たとえば、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される。
  14. 14. 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
  15. 15. FAIL2BANのログにも 2015-07-09 11:50:41,043 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 62.75.248.17 2015-07-09 11:52:14,268 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 41.190.192.158 2015-07-09 11:53:08,437 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 182.100.67.102 2015-07-09 11:54:52,664 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 218.26.243.138 2015-07-09 12:01:14,204 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 222.186.59.91 2015-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.214 2015-07-09 12:22:04,905 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 59.4.98.43 2015-07-09 12:22:09,017 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] 59.4.98.43 ALREADY BANNED 2015-07-09 12:38:40,192 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 222.187.198.50 2015-07-09 13:01:42,202 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 111.67.205.212 2015-07-09 13:01:46,313 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] 111.67.205.212 ALREADY BANNED 2015-07-09 13:02:14,347 FAIL2BAN.ACTIONS: WARNING [SSH-IPTABLES] BAN 117.79.155.237 2015-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がいっぱい!!
  16. 16. Image カ・イ・カ・ン!
  17. 17. ということで、 Fail2ban、お薦めです
  18. 18. THE END

×