アスタリスクを守る9つのルール!





現在、誰もがアスタリスクや他のPBXに対する多数の攻撃について書いています。 実践からの実例-北朝鮮の仲間のハッカーは、単純なASUSルーターの背後にあるアスタリスクにたどり着きませんでした-その理由については後で説明しましたが、彼らはなんとかそれを解読するか、Yealink SIP T-22 IP電話のパスワードを取得しました。



これを行うことは難しくありませんでした、標準の管理者/管理者パスワードはまだ非常に人気があります。 そして、実践が示しているように、それは数万ルーブルの費用がかかることがあります...



MyAsteriskチームの専門家は、ハッカーの攻撃を回避し、アカウントの資金を節約するのに役立つ9つのルールを作成しました。



ルール1:マイルストーンネットワークデバイスのログインとパスワードを常に変更します。 特にIP電話、VoIPゲートウェイなどで。


加入者、管理者、アスタリスク管理者などのパスワード 少なくとも12文字(文字、数字、大文字と小文字の変更)で構成され、複雑なログインとパスワードを使用する必要があります。 いくつかの既に15,000ルーブルのこの単純なルールを守っていません。



ルール2:非標準のSIP、IAX、SSHポートを使用します。


標準ポートを他のポートに変更します。 それは標準とは異なります-より良い。



SIP :ポートはsipファイルで構成されます 一般セクションの設定:

バインドポート= 5060 =>バインドポート= 5172



SSH :新しいポートは、システムで既に開いているポートと競合しないはずです。 たとえば、9321を使用します。/etc/ssh/sshd_configを編集します



変更前に#記号を削除します。 ポート9321

次に、sshdを再起動して、コマンドを使用して変更を適用します。

サービスsshdの再起動



IAX/etc/asterisk/iax.confに移動します

ポートを回線の空きポートに変更します; bindport = 4569

コマンド/etc/ininit.d/asterisk restartを使用してAsteriskを再起動します



ルール3:SSH権限を持つユーザーを使用します。


ユーザーを作成し、SSH経由でのみアクセス権を付与する必要があります。 たとえば、ユーザーmyasteriskを作成し、パスワードを設定します。 パスワードには、大文字と小文字を変更した文字、数字、文字を含める必要があります。



#useradd myasterisk

#passwd myasterisk



/ etc / ssh / sshd_configを 編集して、次の行を追加しましょうAllowUsers myasterisk



rootユーザーがSSH経由でAsteriskサーバーに接続するのを防ぎます: PermitRootLogin no



ルール4:拡張ユーザーの許可アドレスを設定します(拒否/許可)。


この設定により、信頼できるIPアドレスからのみ内部サブスクライバーを登録する機能が制限されます。 各拡張子に対して、アドレスの範囲または有効なIPアドレスを指定します。



123

拒否= 0.0.0.0 / 0.0.0.0

許可= 10.10.1.7

許可= 10.10.2.1 / 24

ここで、 10.10.2.1 / 24は接続が行われるローカルアドレスの範囲です。 アスタリスクは、他のアドレスからの接続を受け入れません。



ルール5:ゲストコール(ゲストコール)と登録を無効にする


/etc/asterisk/sip.confを編集する必要があります

Allowguest = yesallowguest = noに置き換えます。 ゲストコールを許可または拒否する(デフォルトはyes)



このオプションはすべてのユーザーに適しているわけではありません。ゲストコールを拒否できない場合があります。



ルール6:通話制限の設定


既にハッキングされている場合、内部サブスクライバーの設定で指定されたCall-limit = 1行は、内部サブスクライバーの同時接続の数を制限する、より少ないお金の損失に役立ちます。



ルール7:異なる送信ルーティングルールを使用する


遅延しないで、 Exten => _X。、1、Hangupなどのデフォルトルートを使用します。 8495XXXXXXX、8961XXXXXXXX、89XXXXXXXXXXなど都市コード、携帯電話会社、および国際コード(ある場合)を含むルートを厳密に規定する必要があります。



ルール8:無効なパスワードに対する応答を無効にする


デフォルトでは、アスタリスクは、既存のアカウントのパスワードが正しくないというエラーと、存在しないアカウントの別のエラーを生成します。 パスワード選択用のプログラムは多数あるため、攻撃者は簡単にすべての短い番号を確認し、「間違ったパスワード」と回答した既存のアカウントのパスワードのみを収集できます。 これを防ぐには、 / etc / asterisk / sip.confファイルの行を変更します

alwaysauthreject = no alwaysauthreject = yesで 、Asteriskを再起動します。



この設定後、Asteriskは無効な401 Unauthorized認証に対して同じように応答し、詳細を提供しません。



ルール9:IptablesとFail2banを使用する


Fail2banは、「 '127.0.0.1で失敗-間違ったパスワード」および「127.0.0.1で失敗-'ピアは登録されない」という形式の文字列をキャッチするのに役立ちます。 Fail2banは、ジャンクSIPトラフィックの量を大幅に削減できます。



ただし、アスタリスクログの分析が役に立たない不快な状況がいくつかあります。 たとえば、攻撃者が識別データなしでREGISTERリクエストを送信した場合、「間違ったパスワード」というメッセージはログに表示されません。



実際、アスタリスクでは、すべてのSIP UDPシグナリングが1つのスレッドで処理されます。 SIPトラフィックの処理はリソースを大量に消費するプロセスであり、7〜8メガビットのガベージリクエストにより、アスタリスクはプロセッサコアを完全に消費します(たとえば、Intel E5335、E5405)。 コアが完全に消費されると、有用なSIPトラフィックが置き換えられます-ガベージ。



DTMFは、SIP INFOを使用するクライアントに対して機能しなくなります。 問題は、新しい接続のインストールと既存の接続の終了から始まります。 そして、これはブルートフォースロボットによってもたらされる主な脅威です。



それでは、ログにメッセージがない問題にどう対処するのでしょうか? 非常に簡単です-問題についてのメッセージを自分で生成する必要があります。その後、カウンターシステムの残りの部分(たとえば、fail2banプログラム)を変更せずに残すことができます。 総当たり攻撃の特徴は、単位時間あたりの多数のSIPパケットです。



Recentと呼ばれるiptablesモジュールを使用して、単位時間あたりのパケット数を計算できます。 インターネットには、最近のモジュールの助けを借りて、特定の頻度よりも高い頻度で入ってくるパケットが破棄される方法の例がたくさんあります。 ドロップする代わりに、攻撃検出システム用のメッセージを生成します(たとえば、fail2ban)。 このアプローチには長所と短所があります。 主な欠点は、システムリソースがメッセージの処理に費やされる一方で、パケットのドロップが条件付きで無料になることです。



もう少し利点があります。ホワイトリストに登録されたIPアドレス、検出されたすべての攻撃の統一アカウントなど、攻撃検出システムのすべての機能を利用できます。



理論から実践へ! iptablesルールからスケルトンを準備します。


-A入力-p udp --dport 5060 -j SCAMBLOCK

-A INPUT -p udp --dport 5060 -m recent --set --name SIP

-A INPUT -p udp --dport 5060 -m recent --update --seconds 2 --hitcount 60 --name SIP \

-j LOG --log-prefix“ SIPフラッドが検出されました:„



最初のルールは、パッケージをSCAMBLOCKチェーンに対してチェックします。 ブロックされたIPアドレスはこのチェーンに格納されます。パケットがこのチェーンのアドレスの1つと一致する場合、パケットは破棄されます。 パケットがドロップされない場合、2番目のルールでは、SIPという名前でアカウンティング用にマークされます。 3番目のルールは、指定されたパッケージが指定された時間(2秒)内に指定された量(60)を超えたかどうかを考慮します。



数量を超えていない場合、ルールは無視され、超えている場合、アクションが実行されます。 この場合、パケットに関する詳細情報は、「SIP flood detected:」の行で始まるシステムログに書き込まれます。 パケットの数と時間は、ソースごとに個別に考慮されます。 したがって、ブロックされていない各IPアドレスからのSIPパケットの受信速度は、毎秒30パケットのレベルで制限されていることがわかります。



私にとって、この制限は快適です。一方で、すべてのクライアントは、最大のクライアントであっても、30パケット/秒未満の速度で1つのIPアドレスからパケットを送信しますが、一方で、30パケット/秒は実際にはシステムの動作に影響しません。 サーバーのパフォーマンス、サブスクライバーの数およびタイプに応じて、この値をいずれかの方向に修正する必要がある場合があります。



一部のシステムでは、 Hitcountパラメーターに対する最近のモジュールの組み込み制限は非常に小さく、たとえば、CentOSでは、この制限は20パケットです。 上記のコマンドを実行しようとすると、次のエラーが表示されます。



iptables -A INPUT -p udp --dport 5060 -m recent --update --seconds 2 --hitcount 60 --name SIP \

-j LOG --log-prefix“ SIPフラッドが検出されました:„

iptables:不明なエラー4294967295

または、64ビットシステムの場合:

iptables -A INPUT -p udp --dport 5060 -m recent --update --seconds 2 --hitcount 60 --name SIP \

-j LOG --log-prefix“ SIPフラッドが検出されました:„

iptables:不明なエラー18446744073709551615



ブート時にモジュールに最近の特別なパラメーターを渡すことにより、最大制限を変更できます。 これを行うには、ファイル/etc/modprobe.d/ipt.confを作成し、興味のあるパラメーターを書き込みます。



オプションipt_recent ip_pkt_list_tot = 60



この制限を増やすときは、最新のパケットを保存するのに必要なメモリと、それらを処理するのに必要なプロセッササイクルの数が増えることに注意してください。



さて、それで、ポート5060のフラッドはすべて、最近のiptablesモジュールを使用して検出されます。 検出されたフラッドに関するメッセージは、システムログに送信され、そこでお気に入りの攻撃検出システム(たとえば、fail2ban)で確認できます。 iptablesはシステムログだけに限定しません。メッセージのレベルと機能をLOGアクションに指定し、Syslog設定でメッセージデータを別のファイルにリダイレクトできます。 SIPフラッドメッセージ自体は次のようになります。



6月17日23:54:44 sip2カーネル:SIPフラッド検出:IN = eth0 OUT = MAC = 00:21:5e:db:15:b8:00:0f:34:f8:28:7f:08:00 SRC = 184.172.62.3 DST = 192.168.224.217 LEN = 370 TOS = 0x00 PREC = 0x00 TTL = 47 ID = 0 DF PROTO = UDP SPT = 5495 DPT = 5060 LEN = 350

6月17日23:54:44 sip2カーネル:SIPフラッド検出:IN = eth0 OUT = MAC = 00:21:5e:db:15:b8:00:0f:34:f8:28:7f:08:00 SRC = 184.172.62.3 DST = 192.168.224.217 LEN = 369 TOS = 0x00 PREC = 0x00 TTL = 47 ID = 0 DF PROTO = UDP SPT = 5495 DPT = 5060 LEN = 349

6月17日23:54:44 sip2カーネル:SIPフラッド検出:IN = eth0 OUT = MAC = 00:21:5e:db:15:b8:00:0f:34:f8:28:



セルゲイ・タンコビッチ 、9番目のルールをありがとう。



MyAsteriskチームは、IPアドレスからのみ登録する可能性についてSIPプロバイダーと話し合い、平均コストに基づいて1日あたりの支出制限を設定し、使用しない場合は長距離電話と国際電話を切断するか、発信MGを可能にすることをお勧めしますMNはPINコードの入力後に呼び出します。



このビデオの次のヒーローにならないように、 MyAsterisk Teamの安全規則に従ってください!






All Articles