で挙げた
# cat authorized_keys command="ls /$SSH_ORIGINAL_COMMAND" ssh-rsa AAAAB.... $ ssh root@xxx.xxx.xxx.xxx -i ~/.ssh/com "tmp;hostname" ls: /tmp;hostname: No such file or directory
みたいなケースで$SSH_ORIGINAL_COMMAND
に../
とかを指定される問題の対策にrbash
が使えないかと思って調べてみた。
$ echo $0 rbash $ /bin/sh rbash: /bin/sh: restricted: cannot specify `/' in command names $ ./sanitize1.sh rbash: ./sanitize1.sh: restricted: cannot specify `/' in command names $ ls ../ satob
rbash
で制限できるのは「実行プログラムのパスに/
が含まれるケース」だけで、引き数に/
が含まれるケースは制限してくれない。そのため、ディレクトリトラバーサルの防止には使えない。