私は自分のSIPサーバー(アスタリスク)を実行しています。どうやら私のsipサーバーでは、最初にREGISTERを実行せずにINVITEを実行できます。これは私のサーバーへの多くの失敗した攻撃につながります。正常に登録されたクライアントからのINVITEリクエストのみを許可する方法はありますか?アスタリスクまたはiptablesを介して?
4 に答える
sip.confでallowguestパラメーターをnoに変更する必要があります。
アスタリスクのセキュリティに関するその他のヒントについては、以下のリンクを確認してください。
これまでの私の調査によると、REGISTERは、アスタリスクがINVITESに到達または転送するためだけのものであり、INVITEリクエストを認証するためのものではありません。INVITEが来ると、アスタリスクは指定されたユーザー名をチェックしようとし、それが有効な場合は、407(認証が必要)をクライアントに送り返します。次に、クライアントは応答にパスワード(暗号化)を挿入し、INVITE2をサーバーに送信します。これで、サーバーがユーザーを認証し、資格情報が一致すると、呼び出しの確立に進みます。
結論:INVITEはREGISTERとは関係がないため、REGISTEREDクライアントのみにINVITEの送信を制限するという私の考えは不可能です。
回避策として、独自のスクリプトを作成しました。ソースはhttps://github.com/naidu/JailMeにあります
ハッキングされたときにすぐにお金を払う実際のセッションボーダーコントローラーを考えてみましょう。ただし、「十分に良い」オプションが必要な場合は、以下をお読みください。
パケットで特定の文字列を検索する「string」と呼ばれるiptablesモジュールがあります。SIPの場合、任意のアドレスからの最初のパケットに「REGISTER」が表示されると予想されるため、これを-m state --state NEW
または類似のものと組み合わせます。その後、接続追跡が開いたままになるように、キープアライブを実行する必要があります(通常、AsteriskはOPTIONSを送信しますが、空のUDPを送信することもできます)。クライアントがNATの背後にある場合に備えて、とにかくそれが必要です。
iptablesは登録が成功したかどうかを判断できないため、これは理想的な解決策ではありませんが、少なくとも他の人が登録を試みるように主張することはできます。以下にリンクされている回答の1つは、iptablesでの文字列モジュールの使用を示しています。
https://security.stackexchange.com/questions/31957/test-firewall-rules-linux
また、ダイヤルプランにAGIスクリプトを追加して、IPアドレスと内線が登録されているかどうかを確認し、追加のチェックを行うこともできます。INVITEが同じソースIPからのものであることを確認してください。
Fail2Banは、不要なトラフィックをブロックする簡単な方法です。fail2banは、失敗した試行のシステムログをチェックします。リモートIPからの指定された時間内に失敗した試行が多すぎる(定義されたしきい値を超えている)場合、Fail2Panはそれを攻撃と見なし、iptablesにそのIPアドレスを追加して、そこからのあらゆるタイプのトラフィックをブロックします。 。次のリンクが役立ちます
http://www.voip-info.org/wiki/view/Fail2Ban+(with+iptables)+And+Asterisk
http://www.markinthedark.nl/news/ubuntu-linux-unix/70-configure-fail2ban-for-asterisk-centos-5.html