SSH 接続の権限を限定 (しつつトンネリングするとかそういう話)
SSH でサーバへの接続をトンネリング - kazuhoのメモ置き場の続き。
セキュリティ上の要請として、SSH 接続のクライアント側がクラックされても、サーバ側に対して攻撃ができないよう設計したい、ということがある。
先の例のように単純に公開鍵認証をしているだけだと、ssh のログインユーザー権限でなんでもされちゃうわけであり。じゃあどうするかと言うと、ログインユーザーの .ssh/authorized_keys でいろいろ設定できる。
たとえば、
% cat ~tunnel/.ssh/authorized_keys permitopen="0.0.0.0:9999",command="/home/kazuho/bin/echod",no-pty,no-X11-forwarding,no-agent-forwarding ssh-rsa AAA(略) %
とか設定しておけば、
- -L によって ssh サーバ側の情報が漏洩することはない
- permitopen オプションで存在しないアドレス (ネットワークアドレス等) を指定
- no-X11-forwarding,no-agent-forwading でその他のフォワーディングを抑制
- 任意のコマンドが実行されることはない
- command オプションで実行コマンドを指定
となって、-R しかできないようなシステムになる。と思う。(-L も -R も禁止したいというより一般的なケースでは no-tcp-forwarding オプションを使えばよい)
参考: man sshd