Asteriskでfail2ban

Asterisk 11.2.1からSecurityログ形式が新しくなりました。この頁の上半分は無効にしたので頁下部を参照願います。

SIPサーバに対してはブルートフォースアタックが来ることが多い。

Asteriskでもfail2banを使って不正なアクセスを弾きたいが、ノーマルのAsteriskのログにはブルートフォースアタックなどは何故かサーバのIPが記録されて肝心のリモートホストの情報が残らないのでfail2banで弾くことができない。

Asteriskバージョンパッチファイル
11.08patch-channels-chan_sip.c__asterisk11.08.txt
11.10patch-channels-chan_sip.c__asterisk11.10.txt

使い方

  • # portsnap fetch update でportsを更新する。
  • # portsdb -F で、portsのメタ情報を更新する。
  • # pkg update でpkgのメタ情報を更新する。
  • # pkg search asterisk11(新規インストール) または# pkg version -v | grep asterisk11(更新) で最新のasterisk11のバージョンを確認する。
  • 確認したバージョンと対応するこのページのパッチファイルをダウンロードする。
  • ダウンロードしたパッチファイルをpatch-channels-chan_sip.c__asterisk11.10.txt  を  patch-channels-chan_sip.cのようにリネームする。    "__asterisk{Ver.No}.txt"が不要な部分
  • リネームしたパッチファイルを/usr/ports/net/asterisk11/files/に置く。

新規インストールの場合

# cd /usr/ports/net/asterisk11
# make install
# echo asterisk_enable=\"YES\" >> /etc/rc.conf

更新の場合

# portupgrade asterisk11

/usr/local/etc/fail2ban/jail.local

[DEFAULT]
ignoreip = 127.0.0.1 192.168.0.0/24 #弾く対象から外すIPアドレス
bantime  = 259200 #秒
findtime  = 86400 #秒
backend = auto

[asterisk]
enabled  = true
filter   = asterisk11  #新規作成のフィルタ
action   = pf  #Linuxの場合はpfではなくiptablesかと・・
           sendmail-whois[name=Asterisk, dest=foo@example.com, sender=bar@example.com]
logpath  = /var/log/asterisk/security  #Securityログを分けた場合(最下部参照)
maxretry = 1

/usr/local/etc/fail2ban/filter.d/asterisk11.conf   (新規作成のフィルタファイル)

[Definition]

failregex = SECURITY.* SecurityEvent="FailedACL".*RemoteAddress=".+?/.+?/<HOST>/.+?".*
            SECURITY.* SecurityEvent="InvalidAccountID".*RemoteAddress=".+?/.+?/<HOST>/.+?".*
            SECURITY.* SecurityEvent="ChallengeResponseFailed".*RemoteAddress=".+?/.+?/<HOST>/.+?".*
            SECURITY.* SecurityEvent="InvalidPassword".*RemoteAddress=".+?/.+?/<HOST>/.+?".*

ignoreregex =

Securityログを分離する場合

/usr/local/etc/asterisk/logger.conf
security => security   #行頭の"#"を外す