# apt-get install fail2ban # cd /etc/fail2ban # cp jail.conf jail.local # vi jail.local
ignoreip = 127.0.0.1 bantime = 3600 防御する時間 findtime = 600 この期間中に maxretry = 3 3回以上 destemail = ckenko25@lgmail.com sender = fail2ban@localhost action = %(action_mw)s [asterisk-tcp] enabled = true [asterisk-udp] enabled = true [aterisk-brute-force] 追記 enabled = true filter = asterisk-brute-force logpath = /var/log/asterisk/messages action = iptables-asterisk[name=ASTERISK, protocol=all] sendmail-whois[name=ASTERISK, dest=ckenko25@gmail.com, sender=fail2ban@localhost] bantime = 604800 ; 1 week #findtime = 86400 ; 1 day maxretry = 3
vi /etc/fail2ban/action.d/iptables-asterisk
# Fail2Ban configuration file # # # $Revision: 250 $ # [INCLUDES] # Read common prefixes. If any customizations available -- read them from # common.local #before = common.conf [Definition] #_daemon = asterisk # Option: failregex # Notes.: regex to match the password failures messages in the logfile. The # host must be matched by a group named "host". The tag "<HOST>" can # be used for standard IP/hostname matching and is only an alias for # (?:::f{4,6}:)?(?P<host>\S+) # Values: TEXT # failregex = Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - Wrong password Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - No matching peer found Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - Username/auth name mismatch Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - Device does not match ACL Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - Peer is not supposed to register Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - Not a local domain NOTICE.* .*: Failed to authenticate device .* \(<HOST>:.*\) # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =
# vi /etc/fail2ban/jail.local
[asterisk-udp]の下に追記
[aterisk-brute-force] enabled = true filter = asterisk-brute-force logpath = /var/log/asterisk/messages action = iptables-asterisk[name=ASTERISK, protocol=all] sendmail-whois[name=ASTERISK, dest=ckenko25@gmail.com, sender=fail2ban@localhost] bantime = 604800 ; 1 week #findtime = 86400 ; 1 day maxretry = 3
action
BAN処理のアクションを定義します。この例ではiptables-sipを実行します。その後、sendmail-whois で BANしたIPアドレスのwhois情報を dest= で指定された宛先に送ります。このとき使用されるメールのFrom:はfail2ban@exampleになりますので、適切なものに書き換えます。
アクションの所で iptables-allports を指定するとSIPだけでなく、すべてのポートからの接続を蹴るように iptables に設定されます。『怪しい攻撃元』をブロックするという意味では、こちらのアクションの方がより安全と言えます。
logpath
Asteriskのログファイルへのパスを記述します。
maxretry
何回以上失敗したらBANするかの指定です。
findtime
この時間内にmaxretryで指定した回数以上失敗するとBANします。上の例では600秒(10分)の間に、5回以上の失敗があった場合にはBANされます。
bantime
ここで指定された期間がBAN期間になります。指定は秒数です。上の例では 60x60x24x7=604800、つまり1週間になります。
fail2banを起動する
# /etc/init.d/fail2ban start
コメント