UbuntuVPSでSSL/TLSを使用するようにvsftpdを構成する方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由: Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.
代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。
序章
警告:FTPは本質的に安全ではありません! Consider [[“%3Ca|how-to-use-sftp-to-securely-transfer-files-with-a-remote-server]]”>using SFTP instead of FTP.
FTP(ファイル転送プロトコル)は、以前はローカルコンピューターとリモートコンピューターの間でファイルを転送するための一般的な方法でした。 このプロトコルは本質的に安全ではないため、その使用法は支持されなくなりました。
SSHプロトコルを使用してファイル転送を実装するSFTPのようなより安全な代替手段の代わりにFTPを使用したい場合は、SSLを使用するようにFTPを構成することである程度保護できます。
このガイドでは、Ubuntu12.04VPSでSSL証明書を使用するようにvsftpdを構成します。
vsftpdをインストールします
vsftpdサーバーは、Ubuntuのデフォルトのリポジトリで利用できます。 次のように入力してインストールできます。
sudo apt-get install vsftpd
サーバーにvsftpdがありますが、それでも構成する必要があります。
基本的なvsftpd機能を構成する
デフォルトの設定ファイルは/etc/vsftpd.conf
にあります。 ルート権限で開きます。
sudo nano /etc/vsftpd.conf
anonymous_enable
パラメーターを見つけて「NO」に変更することにより、ユーザーが匿名でログインする機能を無効にします。
analog_enable = NO
次に、匿名アクセスを無効にしたため、ローカル認証ファイルを使用するユーザーログインを有効にする必要があります。 この行のコメントを解除します。
local_enable=YES
ユーザーがファイルシステムに変更を加えることができるように、write_enable
パラメーターのコメントも解除します。
write_enable=YES
さらに、chroot_local_user
オプションのコメントを解除して、ユーザーを自分のホームディレクトリに制限します。
chroot_local_user=YES
ファイルを保存して閉じます。
FTPユーザーを作成する
vsftpdがchrootjailを保護する方法のため、chrootはユーザーが所有してはならず、書き込み可能であってはなりません。 このため、FTPで使用するために特別にユーザーを実装するのが最善です。
次のようなユーザーを作成します。
sudo adduser ftpuser
パスワードを割り当て、他のプロンプトから「ENTER」を押してください。 ここで、ftpuserのホームディレクトリのroot所有権を与えます。
sudo chown root:root /home/ftpuser
このホームディレクトリ内に、ファイルをアップロードできる別のディレクトリを作成する必要があります。 次に、このディレクトリをFTPユーザーに渡す必要があります。
sudo mkdir /home/ftpuser/files sudo chown ftpuser:ftpuser /home/ftpuser/files
これで、ftpuser
として(安全に)ログインし、files
ディレクトリにファイルをアップロードできるようになります。
vsftpdでSSLを構成する
vsftpdで使用するSSL証明書をいくつか作成する必要があります。 これは、次のコマンドで実行できます。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
これにより、1年間続く証明書が作成されます。 /etc/ssl/private/
ディレクトリに配置され、構成ファイルで参照できます。
vsftpd構成にSSLの詳細を追加します
root権限でvsftpd構成ファイルを再度開きます。
sudo nano /etc/vsftpd.conf
ファイルの下部に、作成したSSL証明書と一致する行があります。
rsa_cert_file=/etc/ssl/private/vsftpd.pem
この下にSSL情報を追加します。
証明書を作成したときに、キーファイルと証明書の両方を1つのファイルに含めたので、秘密キーの行を次のように指定することもできます。
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
その後、SSLを強制するために次の行を追加します。 これにより、TLSを処理できないクライアントが制限されますが、それが必要です。
ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES
この後、実際にはSSLの後継であるTLSを使用するようにサーバーを構成します。
ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO
最後に、構成ファイルを具体化するためにいくつかのオプションを追加する必要があります。
require_ssl_reuse=NO ssl_ciphers=HIGH
ファイルを保存して閉じます。
次に、変更を有効にするためにサーバーを再起動する必要があります。
sudo service vsftpd restart
FileZillaでサーバーに接続する方法
最新のFTPクライアントのほとんどは、SSLおよびTLS暗号化を使用するように構成できます。 クロスプラットフォームをサポートしているFileZillaを使用して接続する方法をデモンストレーションします。
構成パネルの左端に「サイトマネージャー」を開くためのボタンが表示されます。 これをクリックしてください:
表示されるウィンドウインターフェイスの右下隅にある[新しいサイト]をクリックします。
新しい構成に名前を付けます。 IPアドレスを入力します。 [暗号化]ドロップダウンメニューで、[TLSを介した明示的なFTPが必要]を選択します。
「ログオンタイプ」で「パスワードを尋ねる」を選択します。 「ユーザー」フィールドに作成したftpユーザーを入力します。
インターフェイスの下部にある[接続]をクリックします。 ユーザーのパスワードの入力を求められます。
次に、TLS証明書を受け入れるように求められます。
これで、TLS/SSL暗号化を使用してサーバーに接続する必要があります。
結論
この設定によりFTPのセキュリティは向上しますが、接続を確立する際のセキュリティが低下します。 可能であれば、これらの種類の操作にはSFTPに切り替えることをお勧めします。 ただし、FTPを使用する場合は、可能な限りTLS/SSLを使用する必要があります。