web-dev-qa-db-ja.com

サブネットが正しく設定されていないサーバーにSSHアクセスすることはできますか?

エンジニアの1人がサブネットを誤って構成したサーバーがあり、このサーバーからロックアウトされ、私が機能する唯一のアクセスはIDCからのシリアルコンソールです(つまり、 IDCエンジニア)。

正しく構成されていないもの:

address 192.168.1.9 # Original address there was
netmask 255.255.255.254 # Misconfigured, originally should've been .240

好奇心から-IDCを呼び出すことを避け、SSH経由でこのホストに接続する方法はありますか(設定を修正できます)?)

18

同じネットワークセグメント上の別のホストにログインできる必要があります。誤って構成されたホストにアクセスする方法には、中間ホストにルートが必要なものもありますが、中間ホストにルートを必要とせずにアクセスする簡単な方法もあります。

IPv6を使用してホストにアクセスする簡単な方法

ssh -o ProxyCommand='ssh -W [fe80::42:ff:fe:42%%eth0]:%p user@intermediate-Host' root@target-server

上記のコマンドの次の例の値は、ユースケースに適した値に置き換える必要があります:fe80::42:ff:fe:42eth0userintermediate-Host、およびtarget-server

仕組みの詳細な説明

ProxyCommandは、ターゲットホストに直接TCP接続を開くことができない場合に使用するssh機能です。ProxyCommandへの引数は、stdin/stdout TCP接続の代わりに使用します。

-Wは、単一のポート転送を開き、それをstdin/stdoutに接続するために使用されます。これはProxyCommandとうまく適合します。

fe80::42:ff:fe:42%%eth0は、ターゲットホストのリンクローカルアドレスです。 ProxyCommandがエスケープ文字として%を使用しているため、入力されたsshコマンドはその場所で%%を使用する必要があることに注意してください。 ssh user@intermediate-Host ping6 -nc2 ff02::1%eth0を実行すると、セグメント上のすべてのリンクローカルアドレスを見つけることができます。

この目的のためにIPv6リンクローカルアドレスを使用することは、最新のすべてのシステムでデフォルトで有効になっているため、通常は最も簡単な方法であり、IPv4スタックとIPv6スタックの両方が大幅に誤って構成されている場合でも、リンクローカルアドレスは機能し続けます。

IPv4へのフォールバック

誤って構成されたホストでIPv6が完全に無効になっている場合(絶対にお勧めしません)、IPv4を使用する必要がある場合があります。 IPv4はリンクローカルアドレスを持たないため、IPv6のように誤って構成されたホストにIPv4を使用してアクセスすることは、より複雑になり、中間ホストでのルートアクセスが必要になります。

誤って構成されたホストが引き続きデフォルトゲートウェイを使用できる場合は、外部からアクセスできます。スタックがネットマスクでカバーされているプレフィックスの外側のゲートウェイの使用を拒否したため、誤って構成されたネットマスクもデフォルトゲートウェイを破壊した可能性があります。これが実際に当てはまる場合、誤って構成されたホストは192.168.1.8とのみ通信できます。これは、この誤って構成されたホストが現在アクセスできるサブネット内の他のIPアドレスだけだからです。

192.168.1.8にログインしている場合、そこから192.168.1.9にSSHで接続できる可能性があります。 192.168.1.8が現在割り当てられていない場合は、ルートアクセス権があるセグメント上の任意のホストに一時的に割り当てることができます。

25
kasperd

kasperdは、質問の状況からどのようにして回復できるかを知るのに十分な詳細なすばらしい回答を投稿しました。この答えは、私がそれをどのように行ったかの正確なステップバイステップです。

  1. 同じ物理ネットワーク上のサーバーへのSSH
  2. arp -aまたはip neighbor listrootとして使用すると、正しく構成されていないサーバーのMACアドレスを見つけることができます。
  3. MACからリンクローカルコンバーターへ 誤って設定されたサーバーのリンクローカルを見つける
  4. これで、ssh user@link-local%devを介して任意のユーザーとしてサーバーにSSH接続できます。ここで:
    • user-SSHが許可されているユーザー名
    • リンクローカル-ステップ3で回復された自己割り当てIPv6アドレス
    • devは、このサーバーから到達可能な物理インターフェイスです(例:eth0)。
9

IPアドレスをロードする必要がありますwithin実際に必要な範囲内だけでなく、ターゲットの構成済みサブネット。

たとえば、10.0.0.220からサブネット255.255.255.248を使用して10.0.0.2にパケットを送信すると、10.0.0.2はサブネットマスクを調べて応答方法を判断します。 .220はサブネット255.255.255.248からWAAYであるため、代わりに.2がデフォルトゲートウェイに応答を送信する必要があります。

したがって、.2と同じサブネット内にIPアドレスをロードできる場合、たとえば、 10.0.0.3の場合は機能します。

特定のケースでは、10.0.0.9の場合、サブネット255.255.255.254 追加のIPアドレスは1つしかありません、つまり10.0.0.8です。したがって、そのIPアドレスをロードできれば、SSHを実行できるはずです。

2
thelogix