ユーザーは WAN 側で Ubuntu サーバーへのシェルアクセスが必要です。単純なパスワードを使用するシェルアカウントがたくさんあります。したがって、シェルポート(ポート22)はファイアウォールでブロックされます。 WAN側のユーザーのためにDebian chrootでSSHサーバーを実行し、ファイアウォールでそのポートを開く予定です。この設定が可能であれば、これを実装する最良の方法は何ですか?
答え1
シングルSSHサーバー
chrootでSSHサーバーを実行する唯一の理由がパスワード認証を特定のユーザーに制限することである場合は、これを行う必要はありません。 sshdにホワイトリストのユーザーにのみパスワードを許可するように指示できます。存在する/etc/ssh/sshd_config
,Match
次のコマンドを使用します。
PasswordAuthentication No
Match User trusted_user_1,trusted_user_2
PasswordAuthentication yes
実際には、一部のユーザーをchrootしたい場合でも、単一のsshデーモンを実行し、ChrootDirectory
ディレクティブをsshd_config
(指示文の範囲内でMatch
)使用できます。
異なるアドレスを受信する2つのSSHサーバー
2 つの SSH デーモンが異なるアドレスをリッスンする場合は、同じポートでリッスンすることができます。各ディレクティブにListenAddress
ディレクティブを挿入します。/etc/ssh/sshd_config
、それぞれサーバーが受信するIPアドレスがあります(受信存在する、聞かないで到着つまり、サーバーのネットワークインターフェイスアドレスです。この方法は、サーバーコンピュータがLAN / WANフィルタリングを実行するノードである場合にのみ適用が制限されます。これは、このような操作がssh localhost
透過的ではないことを意味します(localhostを受け取らないデーモンへのアクセスは引き続き使用できますssh -b
)。
異なるポートでリッスンする2つのSSHサーバー
Port
次のディレクティブを使用して、chrootのsshデーモンが別のポートでリッスンできるようにすることができます。/etc/ssh/sshd_config
。ファイアウォールの外側でポート 22 をブロックし続け、chroot sshd に対して選択した他のポートをブロックしないでください。
2つのSSHサーバー、ファイアウォールによるルーティングの実行
上記のように、2つのデーモンが異なるポートでリッスンしている場合、両方ともポート22でリッスンしているように見えます。たとえば、chrooted ssh デーモンがポート 2201 でリッスンするようにし、ポート 22 からポートeth1
2201 にトラフィックをリダイレクトします。
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 -j REDIRECT --to-ports 2201
その後、localhost または eth0 経由でポート 22 への ssh 接続は chroot ではなくサーバーに到達し、eth1 経由でポート 22 への ssh 接続は chroot サーバーに到達します。ポート2201の接続はchrootサーバーに到達します。-i eth
たとえば、! -s 10.1.0.0/16 ! -s 127.0.0.0/8
ソースアドレスを10.1.xyまたはループバックを除くすべてのエントリと一致させるなど、他の基準を使用できます。