概要
ネットワーク検証を実施する際に、FTPを利用して転送速度を計測することがあると思います。以前であれば、vsftpdを利用してFTPサーバーを立てることが多かったのですが、最近では、デフォルトでFTPがインストールされていないことも多いです。そのため、セキュリティ的にも優れているSFTPサーバーを構築し、SFTPによるファイル転送をできるようにしていきます。
※この方法で作成したSFTPサーバーを利用した、WAN回線の検証方法はこちら
CMLを始めよう!(12.WANエミュレーター)
SFTPサーバーの設定
CML(Cisco Modeling Labs)上のUbuntuノードを利用し設定していきます。
SFTP専用ユーザーを作成し、パスワードを設定します。
sudo useradd sftp-user
sudo passwd sftp-user
![SFTP専用ユーザーの作成、パスワードの設定](https://infrastructure-engineer.com/wp-content/uploads/2021/07/002-10-1024x659.png)
SFTP専用ユーザーのホームディレクトリを変更します。
sudo usermod -d / sftp-user
![SFTP専用ユーザーのホームディレクトリ変更](https://infrastructure-engineer.com/wp-content/uploads/2021/07/003-8-1024x659.png)
ファイルを読み書きするディレクトリを作成します。
sudo chown root:root /home/
sudo mkdir /home/sftp-user
sudo chown root:root /home/sftp-user
sudo chmod 755 /home/sftp-user
![ファイルを読み書きするディレクトリ作成](https://infrastructure-engineer.com/wp-content/uploads/2021/07/004-8-1024x660.png)
/home配下にsftp-userディレクトリが作成できていることを確認します。
![/home配下にsftp-userディレクトリが作成できていることの確認](https://infrastructure-engineer.com/wp-content/uploads/2021/07/005-8-1024x659.png)
SFTP専用ユーザーのグループを作成します。
sudo groupadd sftponly
![SFTP専用ユーザーのグループ作成](https://infrastructure-engineer.com/wp-content/uploads/2021/07/006-9-1024x659.png)
SFTP専用ユーザーのグループを変更します。
sudo usermod -G sftponly sftp-user
![SFTP専用ユーザーのグループ変更](https://infrastructure-engineer.com/wp-content/uploads/2021/07/007-7-1024x660.png)
sshdの設定を変更します。
sudo vim /etc/ssh/sshd_config
![sshdの設定変更](https://infrastructure-engineer.com/wp-content/uploads/2021/07/008-7-1024x660.png)
“Subsystem sftp /usr/lib/openssh/sftp-server”をコメントアウトし、”Subsystem sftp internal-sftp”を追加します。
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
![sshdの設定変更内容](https://infrastructure-engineer.com/wp-content/uploads/2021/07/009-7-1024x659.png)
SFTP専用ユーザーがファイルを読み書きするディレクトリを作成します。
ここでは、”test”ディレクトリを作成しています。
cd /home/sftp-user
sudo mkdir test
sudo chown sftp-user:sftp-user test
![SFTP専用ユーザーがファイルを読み書きするディレクトリ"test"作成](https://infrastructure-engineer.com/wp-content/uploads/2021/07/010-6-1024x659.png)
“test”ディレクトリが作成されたことを確認します。
!["test"ディレクトリが作成されたことを確認](https://infrastructure-engineer.com/wp-content/uploads/2021/07/011-5-1024x658.png)
SFTP専用ユーザー移動できるディレクトリを制限するために、sshd_configを再度修正します。
sudo vim /etc/ssh/sshd_config
![sshd_configの再度修正(SFTP専用ユーザー移動できるディレクトリを制限)](https://infrastructure-engineer.com/wp-content/uploads/2021/07/012-5-1024x658.png)
末尾に下記を追記します。
Match group sftponly
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
![sshd_configの修正内容](https://infrastructure-engineer.com/wp-content/uploads/2021/07/013-6-1024x658.png)
問題なく追記できていることを確認します。
cat /etc/ssh/sshd_config
![sshd_configの変更内容確認](https://infrastructure-engineer.com/wp-content/uploads/2021/07/015-5-1024x659.png)
sshdを再起動します。
sudo service sshd restart
![sshdの再起動](https://infrastructure-engineer.com/wp-content/uploads/2021/07/016-3-1024x659.png)
これで、SFTPサーバーの設定は完了です。
接続確認
まずは、通常のSSHで接続できないことを確認します。
「This service allows sftp connections only.」と表示され、接続が拒否されます。
ssh sftp-user@localhost
![sshで接続できないことを確認](https://infrastructure-engineer.com/wp-content/uploads/2021/07/017-2-1024x659.png)
次に、SFTPで接続します。
「Connected to localhost.」と表示され、無事にSFTP接続ができました。
sftp sftp-user@localhost
![sftpで接続できることを確認](https://infrastructure-engineer.com/wp-content/uploads/2021/07/018-2-1024x659.png)
これで、UbuntuのSFTPサーバー設定は完了です!