sshのゲートウェイ

サーバリプレイス作業実施中です。今回の入れ替えで、ウェブのバックエンドを可能な限りLAN内に引っ込めて、外からhttpリクエストを受け付ける機械だけをDMZにおくようにしました。
バックエンドのアプリケーションが各種あるのですが、大体はベンダの保守が必要なシステム。いままでの構成だと、バックエンドのサーバもインタネットから見えるところにあるので直接sshでつないでもらっていたのですが、LANに引っ込めたことでそういうわけにもいかず。

ということでsshゲートウェイをつくってそこから中に入ってもらうようにしました。

  client(C) ---|FW|---SSH gateway(G)---|FW|----backend server(S)
                   <----   DMZ    ---->    <--- LAN  ---->

こんな感じ。

sshゲートウェイ(G)でTCP Fowardingを有効に

sshd_configで

AllowTcpForwarding yes

なんか制限できるのかな。要チェック。

透過的に使えるように

クライアントCで.ssh/configにこんな記述を追加する。
Sってのはつなぎ先のサーバ。名前でもアドレスでも。

Host S
    Hostname localhost
    Port 2001
    HostKeyAlias  S

トンネルを作る。

クライアントCで以下のコマンドを実行してトンネルを作る。

$ ssh -L2001:S:22 G

でもって、Sに接続

$ ssh S

当然GとSの間でsshのポートが通ってないとだめ。結構危険だから、特定のアドレスからのみGへのアクセスを許可するようにFWで設定。危険と利便は背中合わせだ。