鏡を見る

ネットワーク連帯の優れた例は、世界中の非常に多くの大小のネットワークの舞台裏を見ることができる多くの見張りサービスです。 100のセキュリティシステムの背後に隠れている現代の世界では、データ伝送インフラストラクチャ全体の中で最も重要なデバイスの1つであるルーターでコマンドを実行するだけで驚くほどです。



ルッキンググラスバージョン6








フィールドにIPアドレスまたはプレフィックスを入力し、応答としてルーティングテーブルまたはトレースとpingユーティリティの結果を取得するだけです。 したがって、アドレスだけでなく、意味のあるコマンドに変換された他の文字も入力して意味のある結果を得ることができると理解すると、st迷者が入ります。 私はあらゆる角度で走り、叫びたいと思っています:「しかし、これはすぐに禁止されるものであり、どのようなばかげたことですか?」 これらはすべて、セキュリティが開放性と利便性よりも優れている近年の結果であり、これには間違いなく理由があります。



version6.netのlooking-glassの非常に一般的な実装と、このサービスから得られるものについて話します。



見かけのガラスのインターフェースでIPアドレス以外のものを入力できることが突然普通に思える場合は、「古い学校」に属しているか、ニュースを読んでいない可能性があります。 特にこのサービスの他の実装では許可されていないため、私には珍しいように見えました。





私にとっては珍しいことだったので、サービス所有者に警告し始めましたが、コード調べて、そうであるべきだと気付きました-これはバグではなく機能です。 何らかの理由で現在利用できないversion6.netでは、機能はすべてのBGP showコマンド 、pingおよびtraceroute」と正直に書かれています



lg.cgiを開きます 。これは読みにくく、Perlはここではまったく役に立ちません。



my %FORM = &cgi_decode($incoming); ... $FORM{addr} =~ s/\s.*// if (($FORM{query} eq "ping") || ($FORM{query} eq "trace")); $FORM{addr} =~ s/[^\s\d\.:\w\-_\/\$]//g;
      
      





コマンドは$ addr変数で渡され、空白(タブ、 \ sオプションを含む)、文字、数字、文字「-」、「_」、「/」、「$」、「。」、「:」を除くすべての文字が削除されます。 」



pingを使用した条件さらに厳しくなります。 私が見る限り、すべての入力は空白の後に消去されます。 したがって、 pingおよびtracerouteコマンドに何かを追加するのはるかに困難です。



 my $command = sprintf($query_cmd, $FORM{addr}); ... if ($FORM{addr} !~ /^[\w\.\^\$\-\/ ]*$/) { if ($FORM{addr} =~ /^[\w\.\^\$\-\:\/ ]*$/) { ... } else { &print_error("Illegal characters in parameter string"); } }
      
      





次に、 $ query_cmdテンプレートから直接実行するためのコマンドが形成され、入力がわずかに異なる文字グループに属しているかどうかがチェックされます。スペースが明示的に指定されているためタブは除外され、「_」文字は数字とともに\ wオプションの下にあるため、「 ^ "。 「:」で追加のチェックが行われますが、これはIPv6で作業している場合にのみ可能です。



それだけです。残りのチェックは、一部の操作モードでは空の行でのみ行われます。 実行用のコマンドはすでに以前に生成されており、変更なしでデバイスに送信されます。



 $FORM{addr} = "" if ($FORM{addr} =~ /^[ ]*$/); ... if ($query_cmd =~ /%s/) { &print_error("Parameter missing") if ($FORM{addr} eq ""); } else { &print_warning("No parameter needed") if ($FORM{addr} ne ""); } ... &run_command($FORM{router}, $router_list{$FORM{router}}, $command);
      
      





何ができますか? 便利な失われた引用符から、文字「|」、「?」 およびすべてのブラケット。 しかし、非常に多くのことが残った。 テンプレートを形成するコマンドは次のようになります(Ciscoの場合):



 my %valid_query = ( "ios" => { "ipv4" => { "bgp" => "show ip bgp %s", "advertised-routes" => "show ip bgp neighbors %s advertised-routes", "summary" => "show ip bgp summary", "ping" => "ping %s", "trace" => "traceroute %s" }, ...
      
      





メインコマンドは、ip bgpping 、およびtracerouteを表示します。 明らかに、 show ip bgp summaryshow ip bgp neighbors%sの広告ルートshow ip bgp%sから形成できます。



show ip bgp



私たちのパン。 異なるサイトでは、追加のフィルタリングがまだ実行されているか、標準以外の他のシステムへの改良が行われているため、任意の文字を入力できるとは限らないことに注意してください。 むしろ、それも可能ですが、コマンドをさらに実行するとエラーが発生します。 ただし、元のコードで基本的なデバイスが提供されている場合は、さまざまなコマンドを入力できます。 シスコのWebサイトでは、1つのベンダーに焦点を当てて、 多くのオプションを提供しています 。 たとえば、少し便利です。



show ip bgp regexp



特定のAS-PATHのすべてのルートを調べます。 たとえば、ストックホルムのすべてのYandexネットワークに対して、TTK (GETはクエリ結果に直接送信します):



show ip bgp regexp $ 13,238
 ルーター:sgm01rb 
コマンド:show bgp regexp $ 13,238


 12月19日(土)16:30:21.141 UTC
 BGPルーター識別子10.146.0.1、ローカルAS番号20485
 BGP汎用スキャン間隔60秒
 BGPテーブルの状態:アクティブ
テーブルID:0x0 RDバージョン:0
 BGPメインルーティングテーブルバージョン2995757495
 BGPスキャン間隔60秒

ステータスコード:s抑制、d減衰、h履歴、*有効、>最高
               i-内部、r RIB-failure、S stale、N Nexthop-discard
原産地コード:i-IGP、e-EGP 、?  -不完全
   ネットワークネクストホップメトリックLocPrfウェイトパス
ルート識別:20485:1(vrfインターネットのデフォルト)
 *> i5.45.192.0 / 18 10.78.0.6 1000 70 0 13238 i
 * i 10.99.0.8 1000 70 0 13238 i
 * 149.6.168.201 1000 70 0 174 13238 i
 * 166.63.220.185 1000 70 0 1273 9002 13238 i
 * 212.73.250.153 1000 60 0 3356 13238 i
 * 213.248.99.221 1000 70 0 1299 13238 i
 *> i5.45.194.0 / 24 10.78.0.6 1000 70 0 13238 i
 * i 10.99.0.8 1000 70 0 13238 i
 * 212.73.250.153 1000 60 0 3356 13238 i
 * 213.248.99.221 1000 70 0 1299 13238 i
 *> i5.45.196.0 / 24 10.78.0.6 1000 70 0 13238 i
 * i 10.99.0.8 1000 70 0 13238 i
 * 149.6.168.201 1000 70 0 174 13238 i
 * 166.63.220.185 1000 70 0 1273 9002 13238 i
 * 212.73.250.153 1000 60 0 3356 13238 i
 * 213.248.99.221 1000 70 0 1299 13238 i
 *> i5.45.202.0 / 24 10.78.0.6 1000 70 0 13238 i
 * i 10.99.0.8 1000 70 0 13238 i
 * 212.73.250.153 1000 60 0 3356 13238 i
 * 213.248.99.221 1000 70 0 1299 13238 i
 ... 


show ip bgp neighbors



確立された近所の詳細。 コマンドは、他のコマンドを実行するときに、強調表示された出力で間接的に使用できる場合があります。 たとえば、スタブロポリのビーライン地区の1つに関する詳細情報



show ip bgp neighbors 10.255.0.2
ルーター:len244-bb.stv 
コマンド:show ip bgp neigh


 BGPネイバーは10.255.0.2、リモートAS 3216、外部リンクです
   BGPバージョン4、リモートルーターID 79.104.32.226
   BGP状態=確立済み、1y5wまでアップ
  最終読み取り00:00:40、最終書き込み00:00:14、保留時間は180、キープアライブインターバルは60秒
  ネイバーセッション:
     1アクティブ、マルチセッション対応ではありません
  ネイバー機能:
    ルートの更新:アドバタイズおよび受信(新規)
     4オクテットのASN機能:アドバタイズおよび受信
    アドレスファミリIPv4ユニキャスト:アドバタイズおよび受信
    マルチセッション機能:広告
  メッセージ統計:
     InQの深さは0
    出力深度は0です
    
                         送信されたrcvd
    営業時間:1 1
    通知:0 0
    更新:1,352
    キープアライブ:631466 635532
    ルート更新:0 0
    合計:631468 635885
  公示の実行間のデフォルトの最小時間は30秒です

 アドレスファミリの場合:IPv4ユニキャスト
  セッション:10.255.0.2
   BGPテーブルバージョン182470946、ネイバーバージョン182470946/0
  出力キューサイズ:0
  インデックス77
   77更新グループメンバー
  着信更新プレフィックスフィルタリストはB2B-BRAS-INです
  発信更新プレフィックスフィルタリストはDENY-ALLです
  低速ピア検出は無効です
  低速ピア分割更新グループダイナミックは無効です
                                 送信されたrcvd
  プレフィックスアクティビティ:---- ----
    現在のプレフィックス:0 1(52バイトを消費)
    プレフィックスの合計:0 176
    暗黙の引き出し:0 0
    明示的な引き出し:0 175
    ベストパスとして使用:n / a 1
    マルチパスとして使用:n / a 0

                                   アウトバウンドインバウンド
  ローカルポリシー拒否プレフィックス:-------- -------
    プレフィックスリスト16426 0
    よく知られたコミュニティ:126392327 n / a
    このピアからのベストパス:347 n / a
    減衰のため抑制:15381 n / a
    無効なパス:2886275 n / a
    合計:129310756 0
  許可される最大プレフィックス500
  警告メッセージのしきい値75%、再起動間隔3分
  送信された更新のNLRIの数:最大0、最小0
  動的低速ピアとして最後に検出された:なし
  動的な低速ピアの回復:なし

データグラム(最大データセグメントは1460バイト):
 Rcvd:1268112(順不同:0)、データあり:635885、合計データバイト:12089768
送信済み:1265174(再送信:1 fastretransmit:0)、データあり:631468、合計データバイト:11997935

 ...


アドバタイズされたルートに拡張して、特定のネイバーの方向にアドバタイズされるルートを確認できます。多くの場合、インターフェイスに直接存在します。



show ip bgp summary



このコマンドは常に直接使用できるとは限らないため、バイパスを試みることができます。 たとえば、 RTKOMMの場合



show ip bgp summary
 BGPルーター識別子81.176.81.18、ローカルAS番号8342 
 64 MiBのメモリを使用するRIBエントリ1052472 
ピア2、5024バイトのメモリを使用 
 16バイトのメモリを使用するピアグループ1 

ネイバーV AS MsgRcvd MsgSent TblVer InQ OutQ Up / Down State / PfxRcd 
 195.161.1.10 4 8342 42323357 15458 0 0 0 01w3d17h 574623 
 195.161.1.155 4 8342 43105981 15458 0 0 0 01w3d17h 574623 

近隣の合計数2


pingおよびtraceroute



また、これらのコマンドは拡張できます。パケットのサイズを増やし、フラグメンテーションをオフにします。 しかし、それを難し​​くするのは、フィルタリングコードがより厳密だからです。 ただし、例を見つけることができます-Starnet 、ここでジュニパーです:



pingカウント5詳細do-not-fragmentサイズ1200 8.8.8.8
ルーター:MSK-IX MX480 
コマンド:ping count 5 detail do-not-fragment size 1200 8.8.8.8


 PING 8.8.8.8(8.8.8.8):1200データバイト
 8.8.8.8からxe-3 / 3 / 0.0を介した1208バイト:icmp_seq = 0 ttl = 60 time = 1.041 ms
 8.8.8.8からxe-3 / 3 / 0.0経由で1208バイト:icmp_seq = 1 ttl = 60 time = 0.964 ms
 8.8.8.8からxe-3 / 3 / 0.0を介した1208バイト:icmp_seq = 2 ttl = 60 time = 0.959 ms
 8.8.8.8からxe-3 / 3 / 0.0を介した1208バイト:icmp_seq = 3 ttl = 60 time = 32.190 ms
 8.8.8.8からxe-3 / 3 / 0.0を介した1208バイト:icmp_seq = 4 ttl = 60 time = 1.038 ms

 --- 8.8.8.8 ping統計---
 5パケット送信、5パケット受信、0%パケット損失
往復最小/平均/最大/ stddev = 0.959 / 7.238 / 32.190 / 12.476 ms
 ...


ルッキンググラスはすばらしいツールであり、優れたツールであっても、多くの問題を解決し、世界中のネットワークスペシャリストの仲間入りをします。 いくつかの異なる企業について言及しましたが、私自身のやり方では、そのようなサービスを出すことをまだ決めていません。



長い間試すことができます。世界中で多くのLGサービスが利用可能であり、提供されるversion6.netのバージョンで十分な数のサービスが構築されています。 しかし、どのツールも予測可能である必要があり、フィルタリングされていないチームの一部はひどくリソースを消費し、一部は現代世界で許可されているよりも少しだけオープンです。 コードを覗いて、必要に応じて実行してください。 お互いに気を配り、相互支援とオープン性によってインターネットを構築することができました。インターネットを破壊することはありません。



All Articles