それでは前回に引き続き、SHA-2自己署名証明書を使ってFTPSサーバー環境を構築してみます。
環境
CentOS release 6.5 (Final)
OpenSSL 1.0.1e-fips 11 Feb 2013
vsftpd 2.2.2
vsftpd のインストールと設定
yum install vsftpd
このまま起動しても、FTPS接続することはできませんので、必要な設定を追加します。
vim /etc/vsftpd/vsftpd.conf
#セキュアな設定では匿名ユーザーのログインを許可しません #これをYESにするのなら平文FTPでよいでしょう anonymous_enable=NO # SSLを有効化します ssl_enable=YES ssl_tlsv1=YES # 自己証明書ファイルの場所を指定します rsa_cert_file=/etc/pki/tls/certs/mycert_crt.pem # 自己証明書ファイル作成時の秘密鍵ファイルの場所を指定します rsa_private_key_file=/etc/pki/tls/certs/mycert_key.pem # SSLを強制し、平文FTPは使用禁止にします force_local_logins_ssl=YES force_local_data_ssl=YES # パッシブモードの利用設定 pasv_enable=YES pasv_min_port=50021 pasv_max_port=50040 # タイムゾーンをローカルタイムに設定します # この設定をしないと、ファイルのタイムスタンプはGMTで表示されます use_localtime=YES
この設定は、Explicitモードです。
Implicitモードにするには、さらに以下の設定を追加して、990番ポートの開放が必要です。
implicit_ssl=YES listen_port=990
Explicitモードとは、サーバに接続した後にクライアントがAUTHコマンドを実行して、使用するプロトコル(TLS)のネゴシエーションをおこない、そのプロトコルでのハンドシェイク完了後に暗号化された通信がおこなわれる。
Implicitモードとは、サーバに接続した直後にTLSによるハンドシェイクがおこなわれる。
主なレンタルサーバーではExplicitモードを使用していました。
Explicitモードでセキュリティの問題は無いですし、Implicitモードでは通常FTPで使用する21番ポートではなく990ポートを開ける必要があるなど、Implicitモードのメリットが無いことから、Explicitモードを使用しているのではないかと思います。
ExplicitモードではFTP用21番ポートを開放します。
vim /etc/sysconfig/iptables
-A INPUT -p tcp --dport 21 -j ACCEPT -A INPUT -p tcp --dport 50021:50040 -j ACCEPT
Implicitモードでは990番ポートを開放します。
-A INPUT -p tcp --dport 990 -j ACCEPT -A INPUT -p tcp --dport 50021:50040 -j ACCEPT
ファイアフォールを再起動します。
service iptables restart
ここではExplicitモードとし、FTPサーバを起動します。
service vsftpd restart
FileShelf Plus でFTPS接続
FileShelf Plus でFTPの新しい接続を開いて設定をします。
サーバタイプでは FTPS(Explicit FTP over TLS)を選択し、パッシブモードにチェックを入れます。
接続すると、証明書の確認ダイアログが表示されます。
証明書の詳細には”openssl x509 –text”コマンドで出力される内容が表示されます。
“Signature Algorithm: sha256WithRSAEncryption”となっていてSHA-2署名アルゴリズムが使用されていることが確認できます。
“今後、この証明書の確認画面を表示しない”をチェックすると、証明書の詳細内容をハッシュ化して保存します。次回以降の接続時には保存されたハッシュ値との比較により証明書の正当性を確認しますので、この確認画面は表示されなくなります。
サーバー側の設定変更や証明書の更新が行われると、再度この確認画面が表示されるようになります。
コメント
[…] FTPS (FTP over SSL) (3) FTPSサーバー環境 […]