こんにちは!
以前、FTPを導入しましたが、かなりセキュリティがガバガバです。
そこで、暗号化を備えたFTPS(FTP over SSL/TLS)を構築し、動作を確認した内容をまとめます。
FTPの問題点とFTPSの必要性
FTPの問題点
- 通信が暗号化されない: FTPは平文通信のため、ネットワーク上でパスワードやデータが漏洩するリスクがあります。
- ファイアウォールの問題: FTPのパッシブモードでは複数のポートを開放する必要があり、管理が煩雑になります。
- MITM攻撃のリスク: 中間者攻撃(Man-in-the-Middle Attack)により、データの改ざんや盗聴が発生する可能性があります。
FTPSのメリット
FTPSは、FTPにSSL/TLSを組み合わせてセキュリティを強化したプロトコルです。
- 通信の暗号化: ユーザー認証情報やファイルが暗号化され、盗聴や改ざんを防ぎます。
- 認証の強化: SSL/TLS証明書を利用することで、サーバーの正当性を保証できます。
- FTPの利便性を維持: 既存のFTPクライアントを利用できるため、導入が比較的容易です。
実際にLinuxに試してみる
では、FTPSを実際にローカル環境で試していきたいと思います。
前提条件
- Ubuntuサーバーが動作している
-
192.168.~.~
をUbuntuサーバーのIPとする - FTPは導入されている
1. 自己証明書を発行する
下記で自己証明書を作成します。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/keita.server.key \
-out /etc/ssl/certs/keita.server.crt
下記のファイルが生成されます。
証明書ファイルと鍵ファイルです。
/etc/ssl/certs/keita.server.crt
/etc/ssl/private/keita.server.key
2. 設定ファイルの編集
FTPSの設定を適応するために、/etc/vsftpd.confを下記のように編集します。
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/keita.server.crt
rsa_private_key_file=/etc/ssl/private/keita.server.key
force_local_logins_ssl=YES
force_local_data_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
3. FTPS接続の確認
WINSCPというアプリを使用して、FTPSに接続してみます。
下記のような設定で接続を試みます。
これで接続できました!
これが一応暗号化されて転送されているのでセキュリティの対策にはなっています。
画像を送ってみます
送れました
目では見れませんが、この通信でファイルが暗号化されていたはずです。
まとめ
Ubuntu上でFTPSを構築し、安全なファイル転送環境を作成しました。自己署名証明書を使用しましたが、運用環境では正式な証明書を利用するのがおすすめです。