SIPサーバーはUDPポート5060でリッスンし、公衆インターネットからの認証済みリクエストを受け入れる必要があります。
問題は、SIPサーバーをスキャンして悪意のあるサーバーをスキャンし、サーバーをブルートフォースで攻撃しようとする人が一日中そこに留まることです。私はこの攻撃に十分な長さの資格情報を使用しています。うまく機能することは決してありませんが、多くの帯域幅を消費するので迷惑です。
私はfail2banを設定してアスタリスクログを読み取り、iptablesでこれを行うIPを禁止しました。これにより、アスタリスクが10回失敗した後の着信SIP REGISTERの試行を確認できなくなります(これは、私が見ている攻撃の速度で2番目です。ただし、SipVicious派生スクリプトは、ICMP宛先ホスト到達不能を取得した後すぐに送信を停止しません-パケットとの接続をハンマーし続けます。停止するまでの時間は設定可能ですが、残念ながらこれらのタイプのブルートフォース攻撃を行う攻撃者は、通常、タイムアウトを非常に高く設定します(fail2banが攻撃を停止した後、攻撃は何時間も高レートで継続し、SIP応答が返されると、 SIPサーバー)の初期確認が表示されました。
接続時にパケットの送信を停止する方法はありますか?
これらの攻撃者の多くが使用する公的に利用可能なSipViciousスクリプトは、無効なSIPなしのFrom:行のない応答を受け取った場合、即座に攻撃を停止します。SipViciousは、 SIPフレンドリースキャナーへのリクエスト。
この手法を実際の攻撃者に対して使用することで、パケットのフラッドを即座に阻止することができました。このようなパケットは簡単なスクリプトで送信できます。例えば:
cat >UnfriendlyScannerStopper.scala <<END
import Java.net._
object UnfriendlyScannerStopper {
def main(args : Array[String]) : Unit = {
if (args.length < 2) {
System.out.println("Usage: FriendlyScannerStopper ipAddr port")
return
}
val udpSocket : DatagramSocket = new DatagramSocket();
val packetContents : String = "SIP/2.0 400 Go Away!!!\r\n\r\n"
udpSocket.send(new DatagramPacket(packetContents.getBytes("utf-8"), packetContents.size,
InetAddress.getByName(args(0)), Integer.parseInt(args(1))))
}
}
END
scala UnfriendlyScannerStopper.scala 188.138.107.179 5102
SIP攻撃で送信されているパケットのViaヘッダーのアドレスとポートを188.138.107.179と5102に置き換える必要があります。
上流のプロバイダーに相談してください。私のブラックリストにはREST APIを提供するAPIがあります。このWebサービスを呼び出すようにfail2banを設定しました。パケットがファイアウォールに到達する前にプロバイダーのネットワークのどこかで停止されます。
誰もあなたの質問に直接回答しなかったので:NO
誰かが境界ゲートウェイにパケットを送信するのを防ぐことはできません。あなたができる最善の方法は、それらを上流で停止する(上記のロングネックのように)か、ファイアウォールで停止することです。
Fail2banは失敗した攻撃の数に基づいてトリガーします(すでに上で説明したとおり)。そのため、代替(または組み合わせ)は、ソースIPの地理的な場所に基づいてブロックすることです。 SecAst のような製品または一部のハードウェアファイアウォールは、地理的位置に基づいてブロックすることができ、サーバーに到着するパケットの数をさらに削減します( www.telium.io を参照)。
元の質問に戻る:いいえ
SIPプロキシを設定してみましたか?
まだ設定していない場合は、「SIPサーバー」の前にKamaillioまたはOpenSIPSを設定してください。これらのパッケージはSIPメッセージルーターであり、SIPプロキシとして構成できます。
OpenSIPSまたはKamaillio内では、この問題を解決するために、次のように単純なルーティングスクリプトに行を追加できます。
if($ ua =〜 "friendly-scanner"){drop(); }
これでインバウンドの試みが停止することはありませんが、試みがどこにも行かず、「SIPサーバー」がそれを見ることはありません。非常に控えめなハードウェアであっても、OpenSIPSやKamaillioでは、1秒あたり500のレジスタであっても心配する必要はありません。
VoIPインフラストラクチャの保護は、OpenSIPSとKamaillioが行うように設計されていることの大部分です。これは、着信SIPリクエストをプロキシし、正規化し、不正なリクエスト(およびユーザーエージェントからのリクエスト)ネットワークと通信するビジネスはありません)、プロキシ認証(REGISTER)。
また、トポロジをインターネットから隠し、メディアサーバーにさらに高いレベルのセキュリティを追加します(おそらく、これは「SIPサーバー」が実際に行っている機能です)。
アスタリスクを実行している場合、OpenSIPS/Kamaillio/SERを統合することは、キャリアITSPデプロイメントで一般的な方法です。
そして、帯域幅についてのあなたの声明に関して:これらの攻撃が多くの帯域幅を使用していると聞いて、少し驚いたでしょう。 「たくさん」は相対的な言葉だと思います...しかし、これからどれだけのトラフィックが見られますか?
これがお役に立てば幸いです。ヘルプが必要な場合は、コンサルタントであり、特定の環境に合わせてこれを構成する際のお手伝いをします。
ジェレミー・D・ウォード、CWNE
PS:私を見つけるために、Googleは次のようにします:ジェレミーワードワイヤレス。私のLinkedInプロファイルが最初の結果です。
これらのiptablesルールは私には問題なく機能します。このような攻撃の間、CPU負荷は2%未満に保たれます。
http://txlab.wordpress.com/2013/06/29/protecting-a-vpbx-from-dos-attacks/
別の方法として、SIPここに関連するファイアウォールを見てください: VoIP Firewalls
Pfsenseやおそらく他の製品では、ファイアウォールアプライアンスを作成または購入できます。ソフトウェアは無料です。次に、Suricataを無料でロードできます。これは、Sipviciousなどに関連する大量のIPを即座にドロップするゲートキーパーのようなものです。基本的に、彼らがあなたのIPをスキャンするとき、彼らのパケットはすぐに落とされます。問題がなければ、そのアドレスにSIPサーバーがあることに気づくこともありません。同じファイアウォールには、SIPプロキシをインストールするためのパッケージもあるので、両方を実行できます。