開発者ドキュメント

UbuntuVPSでSSL/TLSを使用するようにvsftpdを構成する方法

ステータス:非推奨

この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

理由: Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このガイドはもう維持されていません。

代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。

序章


警告:FTPは本質的に安全ではありません! how-to-use-sftp-to-securely-transfer-files-with-a-remote-serverを検討してください ”>FTPの代わりにSFTPを使用します

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を使用する必要があります。

ジャスティン・エリングウッド
モバイルバージョンを終了