差分

移動先: 案内検索

SIP-Fail2ban

2,693 バイト追加, 2011年3月16日 (水) 18:30
編集の要約なし
11 6424 DROP udp -- any any xxx.xxx.xxx.xx anywhere udp dpt:5060
のようなDROPのエントリが追加されているはずです。
 
 
==INVITEによるBrute force攻撃への対策==
REGISTERメッセージによる攻撃以外に、INVITEによるBrute force攻撃も確認されています。
 
この攻撃時に出力されるログメッセージは以下のようなものになります。
 
Failed to authenticate user "Anonymous" <sip:anonymous@192.168.1.2>;tag=as105e401c
 
このログメッセージの攻撃元IPアドレスが、FROMヘッダに記載されているIPアドレスになっています。
 
このままでは、NAT配下のサーバーからの攻撃や、FROMヘッダが偽装された場合にfail2banで対応することができません。
 
そこで、Asteriskへパッチを当てて、実際の攻撃元IPアドレスを表示するように修正します。
 
===Asteriskへパッチを当てる===
 
次のようなパッチをAsteriskに適用します。
 
このパッチはAsterisk-1.4.40を対象にしていますが、1.6系、1.8系にも同様の修正で対応できます。
 
--- asterisk-1.4.40.orig/channels/chan_sip.c 2011-01-05 02:11:48.000000000 +0900
+++ asterisk-1.4.40/channels/chan_sip.c 2011-03-10 17:59:26.000000000 +0900
@@ -15456,7 +15456,7 @@
ast_log(LOG_NOTICE, "Sending fake auth rejection for user %s\n", get_header(req, "From"));
transmit_fake_auth_response(p, SIP_INVITE, req, XMIT_RELIABLE);
} else {
- ast_log(LOG_NOTICE, "Failed to authenticate user %s\n", get_header(req, "From"));
+ ast_log(LOG_NOTICE, "Failed to authenticate user %s (%s:%d)\n", get_header(req, "From"), ast_inet_ntoa(sin->sin_addr), ntohs(sin->sin_port));
transmit_response_reliable(p, "403 Forbidden", req);
}
p->invitestate = INV_COMPLETED;
 
パッチを当てて、Asteriskをコンパイルし直し、再起動します。
 
すると、先ほどの攻撃時のログは以下のように出力されるようになります。
 
Failed to authenticate user "Anonymous" <sip:anonymous@192.168.1.2>;tag=as105e401c (123.45.67.89:5060)
 
ログの( )内に攻撃元の実IPアドレスが表示されるようになり、これを元にfail2banで攻撃を検知することができます。
 
===fail2banへ設定を追加===
 
修正したログに合わせたフィルタ設定をfail2banに追加します。
 
/etc/fail2ban/filter.d/asterisk.conf の failregex の項目に以下を追加します。
 
NOTICE.* .*: Failed to authenticate user .* \(<HOST>:.*\)
 
フィルタ追加後、fail2banを再起動し設定完了です。
 
[[Category:セキュリティ]]
3
回編集

案内メニュー

VoIp-Info.jp

HP Directplus -HP公式オンラインストア-