サブネットが正しく構成されていないサーバーにSSHアクセスすることは可能ですか?


18

エンジニアの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経由で何らかの方法でこのホストに接続する方法はありますか(構成を修正できます)。

回答:


25

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

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は、TCP接続の代わりにstdin / stdoutを使用するコマンドです。

-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を使用して誤って構成されたホストにアクセスする方法はより複雑になり、中間ホストでルートアクセスが必要になります。

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

192.168.1.8にログインしている場合、そこから192.168.1.9にsshできるだけかもしれません。192.168.1.8が現在割り当てられていない場合、ルートアクセス権があるセグメント上の任意のホストに一時的に割り当てることができます。


そしてfe80::42:ff:fe:42、アドレスは...?誤って構成されたサーバーだと思いますか?
アレクセイカメンスキー

@AlexKeyはい、誤って設定されたサーバーのリンクローカルIPv6アドレスで置き換える必要があります。
カスペルド

1
IPv4を介したアクセスの例(IPv6が無効になっている場合)
アレクセイカメンスキー

@AlexKey IPv6が無効になっている場合、構成されたプレフィックスの下にある唯一のIPのように見えるため、192.168.1.8を通過する必要があると思います。
カスペルド

1
@Lennieyは明らかにこの質問のような理由で(少なくとも)。
アレクセイKamenskiy

9

kasperd問題の状況からどのように回復できるかを学ぶのに十分な詳細な素晴らしい回答を投稿しました。この答えは、私がそれをやった方法の正確なステップバイステップです。

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

2

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

たとえば、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には1つの追加IPアドレス、つまり10.0.0.8 のみがあります。そのため、そのIPアドレスをロードできれば、SSHを使用できるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.