rbashを使用してCentOS7上にssh踏み台サーバーを作りたいと思います。
複数人が使用し、人数が増えることがある企業向けの普通の踏み台サーバーを想定しています。
rbashを採用することで
sshでログインしたユーザーはsshやscpなどの限定したコマンドしか使えないようにします。
概要
rBashを作成する
まず、opt配下にrbashを作成します。
新規でsshユーザーを作成する際にbashのシンボリックリンクとしてrbashを使います。
1 2 |
sudo mkdir /opt/bin sudo ln -s /bin/bash /opt/bin/rbash |
これから追加するsshユーザー分だけuseraddなどのコマンドを打っていきます。
しかし、今後不定期に追加する処理を何度も打つなんてやってられません。
シェルスクリプトにしちゃいましょう。
sshユーザー追加時の処理を自動化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#!/bin/bash USER_N=$USERNAME CHECK=`cut -d: -f1 /etc/passwd | grep $USER_N` if [ $USER_N = "" ]; then echo "create user and set USERNAME" exit fi if [ $USER_N = $CHECK ]; then sudo mkdir /opt/bin/$USER_N/ sudo ln -s $(which ping | grep bin) /opt/bin/$USER_N/ sudo ln -s $(which ls | grep bin) /opt/bin/$USER_N/ sudo ln -s $(which pwd | grep bin) /opt/bin/$USER_N/ sudo ln -s $(which ssh | grep bin) /opt/bin/$USER_N/ sudo ln -s $(which scp | grep bin) /opt/bin/$USER_N/ sudo ln -s $(which vim | grep bin) /opt/bin/$USER_N/ sudo ln -s $(which mkdir | grep bin) /opt/bin/$USER_N/ sudo ln -s $(which touch | grep bin) /opt/bin/$USER_N/ sudo chown root:root /home/$USER_N/.bash_profile sudo chmod 755 /home/$USER_N/.bash_profile sudo sed -i "/^PATH=/cPATH=/opt/bin/${USER_N}/" /home/$USER_N/.bash_profile sudo mkdir /home/$USER_N/.ssh sudo chmod 700 /home/$USER_N/.ssh sudo chown $USER_N:$USER_N /home/$USER_N/.ssh sudo touch /home/$USER_N/.ssh/authorized_keys sudo chown $USER_N:$USER_N /home/$USER_N/.ssh/authorized_keys sudo cat first_pub.key | sudo tee >> /home/$USER_N/.ssh/authorized_keys sudo chmod 600 /home/$USER_N/.ssh/authorized_keys else echo "You have to check USERNAME" exit fi |
環境変数「USERNAME」を指定することで好きなssh名前のユーザーを追加できます。
1 |
$ USERNAME=tanaka sh create_ssh_user.sh |
使用できるコマンドを制限する
実際にどのコマンドを使えるようにするには、下記のpingの部分を書き換えて追記してください。
1 |
sudo ln -s $(which ping | grep bin) /opt/bin/$USER_N/ |
作成したsshユーザーがログインできるように
ip制限のある公開鍵を
このときのipは社内LANにすれば安全です。
公開鍵にfromを追加するだけでできます。
first_pub.keyとします
1 |
from="192.168.*.*" ssh-rsa AAAAB3NzaC1yc2BBBBBAADAQABAAABAQDZwyUUvX3cmL1TCty9lJ0iPgzayiyqyVwPVYQjk6h7hcRJS9B4YJFG0xU3hRT5Q779eKSsePm9fdsafdsa7txsadffvPEbNAcifIFASDFVy3Kl+iH/GAi8dDpW0L5EqSCw+t0Yn+jFADSFADS91CRe+FADSFASADFADS21a qxXChRKs+BrExy1EbaQaGgQS3qBchVQ5pe3MzbmqvdMiqvvvGY4BK6rPo9h1MnMdmz607hh6NNLmS660etvR/k/Wl9niHXfmG4+dsfadsfasdaAFA443adfa1GADF vagrant |
このようにfrom設定をした初期ログイン用の公開鍵を
作成したsshユーザーの.ssh/authorized_keysにコピーします。
管理ユーザーでスクリプトを実行すれば
簡単にsshユーザーを作れるようになります。
初期ssh秘密鍵を使用してアクセスしてください。
あとは、それぞれが踏み台アクセスする際に使用する公開鍵を設定すれば
セキュアなssh踏み台サーバーが完成します。
rBashについて
rhashについて詳しく知りたいからはredhatのページをどうぞ。
Linux5, Linux6ってあるけどLinux7でもほぼいけます。
https://access.redhat.com/solutions/65822