はじめに
このチュートリアルでは、Linux システム上で Secure FTP (FTPS) をセットアップして使用するための包括的なガイドを提供します。FTPS は、暗号化と認証を提供することで従来の FTP プロトコルを強化し、送信されるデータの機密性と整合性を確保する安全なファイル転送プロトコルです。FTPS の基本概念、従来の FTP に対する利点、FTPS サーバーの構成手順、および FTPS クライアントを使用して安全にファイルを転送する方法について説明します。
このチュートリアルでは、Linux システム上で Secure FTP (FTPS) をセットアップして使用するための包括的なガイドを提供します。FTPS は、暗号化と認証を提供することで従来の FTP プロトコルを強化し、送信されるデータの機密性と整合性を確保する安全なファイル転送プロトコルです。FTPS の基本概念、従来の FTP に対する利点、FTPS サーバーの構成手順、および FTPS クライアントを使用して安全にファイルを転送する方法について説明します。
Secure FTP (FTPS) は、FTP over SSL/TLS とも呼ばれ、暗号化と認証を提供することで従来の FTP プロトコルを強化した安全なファイル転送プロトコルです。FTPS は、インターネットを介して安全にファイルを転送するために広く使用されており、送信されるデータの機密性と整合性を確保します。
このセクションでは、FTPS の基本概念、従来の FTP に対する利点、および Linux システム上で FTPS をセットアップして使用する方法について説明します。
FTPS は、標準的な FTP プロトコルに SSL/TLS 暗号化のサポートを追加した拡張機能です。これにより、クライアントとサーバー間で送信されるすべてのデータ(ログイン資格情報、ファイル内容、メタデータなど)が暗号化され、従来の FTP と比較して高いセキュリティレベルが提供されます。
FTPS は、主に 2 つの動作モードをサポートしています。
明示的 FTPS (Explicit FTPS):このモードでは、クライアントが特定のコマンド(通常は FTPS
または AUTH TLS
)をサーバーに送信することで SSL/TLS 接続を開始します。その後、サーバーが安全な接続を確立して応答します。
暗黙的 FTPS (Implicit FTPS):このモードでは、クライアントが特定のコマンドを必要とせずに、予め決められたポート(通常は 990)で自動的に SSL/TLS 接続を開始します。
従来の FTP と比較して FTPS を使用する主な利点は以下の通りです。
暗号化:FTPS は転送されるデータのエンドツーエンドの暗号化を提供し、盗聴や不正アクセスから保護します。
認証:FTPS はクライアントとサーバーの認証をサポートしており、クライアントが正しいサーバーに接続していること、およびサーバーが承認されたクライアントからの接続を受け付けていることを保証します。
コンプライアンス:FTPS は、PCI-DSS、HIPAA、GLBA などのさまざまな業界標準や規制に準拠するためにしばしば必要とされます。これらの規制では、安全なファイル転送プロトコルの使用が義務付けられています。
セキュリティの向上:FTPS は、パスワードスニッフィング、中間者攻撃、その他のセキュリティ脆弱性のリスクを軽減するため、一般的に従来の FTP よりも安全と考えられています。
FTPS は、さまざまなシナリオで一般的に使用されています。
金融および銀行アプリケーション:口座情報、取引記録、規制報告書などの機密性の高い金融データを安全に転送します。
医療産業:HIPAA 規制に準拠して、保護された医療情報 (PHI) やその他の機密医療データを交換します。
電子商取引およびオンライン小売:ビジネスパートナーやベンダー間で、商品データ、在庫情報、顧客データを安全に転送します。
政府および公共部門:政府機関と承認された関係者間で、機密情報や敏感な情報を安全に共有します。
一般的なファイル共有およびデータ交換:ソフトウェア更新、コンテンツ配布、データバックアップなど、さまざまなファイル転送ニーズに対して、従来の FTP の安全な代替手段を提供します。
次のセクションでは、Linux システム上で FTPS サーバーを構成する方法について説明し、FTPS クライアントを使用して安全にファイルを転送するプロセスを実演します。
このセクションでは、Linux システム上で FTPS サーバーをセットアップする手順を説明します。具体的には、Ubuntu 22.04 を例としたディストリビューションを使用します。
Ubuntu 22.04 で FTPS サーバーをセットアップするには、人気のあるオープンソース FTP サーバーソフトウェアである vsftpd (Very Secure FTP Daemon) を使用します。vsftpd は、従来の FTP と FTPS プロトコルの両方をサポートしているため、FTPS サーバーの構成に適しています。
ターミナルで次のコマンドを実行して vsftpd をインストールします。
sudo apt-get update
sudo apt-get install vsftpd
FTPS では、クライアントとサーバー間の安全な接続を確立するために SSL/TLS 証明書が必要です。自己署名証明書を使用するか、信頼できる認証局 (Certificate Authority, CA) から証明書を取得することができます。
自己署名証明書を生成するには、次のコマンドを使用します。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
このコマンドにより、/etc/ssl/private/
ディレクトリに自己署名証明書とキーファイルが作成されます。
次に、vsftpd サーバーを構成して FTPS サポートを有効にする必要があります。vsftpd の設定ファイルを編集します。
sudo nano /etc/vsftpd.conf
そして、次の行を追加または変更します。
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
この設定により、FTPS が有効になり、データ転送とログインの両方に SSL/TLS 暗号化が必要になり、SSL/TLS 証明書とキーファイルの場所が指定されます。
必要な設定変更を行った後、変更を適用するために vsftpd サービスを再起動します。
sudo systemctl restart vsftpd
これで、FTPS サーバーの構成が完了し、FTPS クライアントからの安全な接続を受け付ける準備ができました。
次のセクションでは、FTPS クライアントを使用して安全にファイルを転送する方法を実演します。
これで FTPS サーバーの構成が完了したので、FTPS クライアントを使って安全にファイルを転送する方法を見ていきましょう。
コマンドラインベースとグラフィカルユーザーインターフェイス (Graphical User Interface, GUI) ベースのさまざまな FTPS クライアントアプリケーションがあります。このチュートリアルでは、Ubuntu 22.04 で利用可能なコマンドラインの FTPS クライアントである lftp
を使用します。
lftp
をインストールするには、次のコマンドを実行します。
sudo apt-get install lftp
FTPS サーバーに接続するには、次の lftp
コマンドを使用します。
lftp ftps://username:password@ftps-server-address
username
と password
を FTPS サーバーの適切な資格情報に置き換え、ftps-server-address
を FTPS サーバーの IP アドレスまたはドメイン名に置き換えてください。
接続すると、lftp
のコマンドプロンプトが表示され、さまざまな FTPS コマンドを実行できます。
lftp
クライアントで使用できる一般的な FTPS コマンドをいくつか紹介します。
ls
: リモートの FTPS サーバー上のファイルとディレクトリを一覧表示します。cd directory
: リモートの FTPS サーバー上の現在のディレクトリを変更します。put local_file.txt
: ローカルファイルをリモートの FTPS サーバーにアップロードします。get remote_file.txt
: リモートの FTPS サーバーからローカルマシンにファイルをダウンロードします。mirror local_directory remote_directory
: ディレクトリとその内容を再帰的にアップロードまたはダウンロードします。quit
: FTPS サーバーから切断し、lftp
クライアントを終了します。たとえば、document.pdf
という名前のローカルファイルを FTPS サーバーにアップロードするには、次のコマンドを使用します。
put document.pdf
また、report.xlsx
という名前のファイルを FTPS サーバーからダウンロードするには、次のコマンドを使用します。
get report.xlsx
ファイル転送コマンドを実行する前に、ローカルシステムとリモートシステムの適切なディレクトリに移動することを忘れないでください。
lftp
FTPS クライアントを使用することで、FTPS サーバーとの間で安全にファイルを転送し、データの機密性と整合性を確保することができます。
このチュートリアルでは、従来の FTP と比較した FTPS の利点(データ暗号化の向上、認証機能、業界標準への準拠など)について学びました。また、Linux システム上で FTPS サーバーを構成する方法と、FTPS クライアントを使用して安全にファイルを転送する方法も学びました。FTPS を導入することで、ファイル転送プロセスのセキュリティを強化し、データの機密性と整合性を確保することができます。