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