SSブログ

ssh公開鍵認証で chroot SFTPファイル転送

SFTPでホームページ更新を ssh 公開鍵認証,chroot でアクセスできるディレクトリを制限する。
Windows 10 WSL で Linux が Windows 上で動く。Ubuntu や Debianもあるが,Kali Linux でやってみた。
Kali Linux には,OpenSSH 及び apache2 をインストールしてある。
コマンドプロンプトで kali と入力して Kali linux を起動する。

apache10005

ssh公開鍵認証を用意する。接続ユーザーはこの例ではatc5。
ssh-keygen コマンドで,.sshディレクトリに秘密鍵ファイル id_rsa,  公開鍵ファイルid_rsa.pub が生成される。
公開鍵ファイルは,authorized_keysにリネームしておく。
.ssh ディレクトリのパーミッションは700,.ssh/authorized_keysは600にする。

cd /home/atc5
mkdir -p .ssh
ssh-keygen -t rsa    
mv .ssh/id_rsa.pub .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

chroot の対象にするディレクトリは上位のディレクトリも含めてrootのみライト可(755以下)にしないと接続できない。rootでchroot用のディレクトリを作成する。

mkdir –p /home/chroot/atc5/html

/var/www/html/site1 がホームページのドキュメントルート。

drwxr-xr-x 1 root root 512 Mar  1 22:30 .
drwxr-xr-x 1 root root 512 Feb 27 22:55 ..
drwxrwxrwx 1 atc5 atc5 512 Mar  1 22:30 site1
drwxrwxrwx 1 usr1 usr1 512 Mar  1 22:29 site2
drwxrwxrwx 1 usr2 usr2 512 Mar  1 22:29 site3

site1ディレクトリのオーナーは atc5 なので,site1 に  chroot できない(オーナーがrootではないため)。
site1のオーナーをrootで755にした場合,chroot はできるか,atc5 は site1 内にファイルやサブディレクトリの追加ができない。
そこでディレクトリをマウントできる bind mount で,chrootの対象ディレクトリ下の html に site1 をマウントする。

mount --bind /var/www/html/site1 /home/chroot/atc5/html    

/etc/ssh/sshd_config を編集する。一番下に Match User atc5を以下のように追記する。 /home/chroot/atc5が chroot 先となる。

Match User atc5
        PasswordAuthentication no
        PubkeyAuthentication yes
        ChrootDirectory /home/chroot/atc5
        ForceCommand internal-sftp

再起動しても消えないように,bind mount を/etc/fstabに書いておく。   

/var/www/html/site1      /home/chroot/atc5/html  none    bind            0 0 

IPは 192.168.0.7 であり,WSL なので Windows 10 のIPと同じ。

wifi0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.7  netmask 255.255.255.0  broadcast 192.168.0.255

http://192.168.0.7/site1/でホームページを確認する。

site119216807


WinSCPで接続する。秘密鍵にssh-keygen コマンドで作成しておいた id_rsa ファイルを指定すると自動的にppkファイルに変換してくれる。

apache10004

公開鍵認証で接続してリモート側に html ディレクトリが表示された。chroot しているので上位のディレクトリにはアクセスできない。

apache10002


nice!(1)  コメント(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。