メニュー 閉じる

rdiff-backupのリモートバックアップで、SSHのコマンドを制限したい

rdiff-backupを用いると、世代バックアップが可能となります。
とても便利なツールで、リモートサーバにもSSH経由でバックアップすることが可能です。
これには、SSH公開鍵認証を用います。

ところが、サーバのバックアップ用途とはいえ鍵を作り、バックアップ接続元サーバがクラックされてしまったとすると、リモートサーバにも無制限でアクセスできてしまうことになります。
そうならないために、公開鍵認証において使用できるコマンドを制限する方法があります。

そのためには、~/.ssh/authorized_keysの中の鍵の前(ssh-rsaとかの前)に次のような文言を追加します。(以下は実際には1行です。)

command="実行させたいコマンド",no-port-forwarding,
no-X11-forwarding,no-agent-forwarding,
no-pty ssh-rsa AAA...(鍵続き)

これの鍵ペアでsshをつなぐと、指定したコマンドが自動的に実行されることになります。(他のコマンドは実行できません。)
これで例えば遠隔からSSHで操作したいけど、不要なコマンドは実行させたくないという場合に、セキュリティを向上させることが出来ます。

さて、これを応用してrdiff-backup以外を使用できないようにしたいと思います。
しかし、rdiff-backupはどちらかというと、push側のプログラム。
サーバとなる受け手側では何が実行されているのでしょうか。

答えは、こんな感じ。(以下は実際には1行です。)

command="/usr/bin/rdiff-backup
 --server --restrict /backup_to/"no-port-forwarding,
no-X11-forwarding,no-agent-forwarding,
no-pty ssh-rsa AAA...(鍵続き)

scpでデータを送信する時も、実はリモート側では scp -f が起動しているなど、SSH経由でデータを送受信するときは、リモート側では rdiff-backup –server とか scp -f とか待ち受け用のコマンドが動作しています。
これを、公開鍵の制限するコマンドに設定することで、rdiff-backup 以外の動作をさせないようにします。

–restrict オプションは、マニュアルでも参照しておいてください。

コメントを残す