Linux で FTP 接続を安全にする方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチュートリアルでは、Linux システム上で Secure FTP (FTPS) をセットアップして使用するための包括的なガイドを提供します。FTPS は、暗号化と認証を提供することで従来の FTP プロトコルを強化し、送信されるデータの機密性と整合性を確保する安全なファイル転送プロトコルです。FTPS の基本概念、従来の FTP に対する利点、FTPS サーバーの構成手順、および FTPS クライアントを使用して安全にファイルを転送する方法について説明します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("Secure Connecting") linux/RemoteAccessandNetworkingGroup -.-> linux/scp("Secure Copying") linux/RemoteAccessandNetworkingGroup -.-> linux/sftp("Secure File Transferring") linux/PackagesandSoftwaresGroup -.-> linux/openssl("OpenSSL") subgraph Lab Skills linux/service -.-> lab-409909{{"Linux で FTP 接続を安全にする方法"}} linux/ssh -.-> lab-409909{{"Linux で FTP 接続を安全にする方法"}} linux/scp -.-> lab-409909{{"Linux で FTP 接続を安全にする方法"}} linux/sftp -.-> lab-409909{{"Linux で FTP 接続を安全にする方法"}} linux/openssl -.-> lab-409909{{"Linux で FTP 接続を安全にする方法"}} end

Secure FTP (FTPS) の紹介

Secure FTP (FTPS) は、FTP over SSL/TLS とも呼ばれ、暗号化と認証を提供することで従来の FTP プロトコルを強化した安全なファイル転送プロトコルです。FTPS は、インターネットを介して安全にファイルを転送するために広く使用されており、送信されるデータの機密性と整合性を確保します。

このセクションでは、FTPS の基本概念、従来の FTP に対する利点、および Linux システム上で FTPS をセットアップして使用する方法について説明します。

FTPS とは?

FTPS は、標準的な FTP プロトコルに SSL/TLS 暗号化のサポートを追加した拡張機能です。これにより、クライアントとサーバー間で送信されるすべてのデータ(ログイン資格情報、ファイル内容、メタデータなど)が暗号化され、従来の FTP と比較して高いセキュリティレベルが提供されます。

FTPS は、主に 2 つの動作モードをサポートしています。

  1. 明示的 FTPS (Explicit FTPS):このモードでは、クライアントが特定のコマンド(通常は FTPS または AUTH TLS)をサーバーに送信することで SSL/TLS 接続を開始します。その後、サーバーが安全な接続を確立して応答します。

  2. 暗黙的 FTPS (Implicit FTPS):このモードでは、クライアントが特定のコマンドを必要とせずに、予め決められたポート(通常は 990)で自動的に SSL/TLS 接続を開始します。

FTPS の利点

従来の FTP と比較して FTPS を使用する主な利点は以下の通りです。

  1. 暗号化:FTPS は転送されるデータのエンドツーエンドの暗号化を提供し、盗聴や不正アクセスから保護します。

  2. 認証:FTPS はクライアントとサーバーの認証をサポートしており、クライアントが正しいサーバーに接続していること、およびサーバーが承認されたクライアントからの接続を受け付けていることを保証します。

  3. コンプライアンス:FTPS は、PCI-DSS、HIPAA、GLBA などのさまざまな業界標準や規制に準拠するためにしばしば必要とされます。これらの規制では、安全なファイル転送プロトコルの使用が義務付けられています。

  4. セキュリティの向上:FTPS は、パスワードスニッフィング、中間者攻撃、その他のセキュリティ脆弱性のリスクを軽減するため、一般的に従来の FTP よりも安全と考えられています。

FTPS の使用例

FTPS は、さまざまなシナリオで一般的に使用されています。

  • 金融および銀行アプリケーション:口座情報、取引記録、規制報告書などの機密性の高い金融データを安全に転送します。

  • 医療産業:HIPAA 規制に準拠して、保護された医療情報 (PHI) やその他の機密医療データを交換します。

  • 電子商取引およびオンライン小売:ビジネスパートナーやベンダー間で、商品データ、在庫情報、顧客データを安全に転送します。

  • 政府および公共部門:政府機関と承認された関係者間で、機密情報や敏感な情報を安全に共有します。

  • 一般的なファイル共有およびデータ交換:ソフトウェア更新、コンテンツ配布、データバックアップなど、さまざまなファイル転送ニーズに対して、従来の FTP の安全な代替手段を提供します。

次のセクションでは、Linux システム上で FTPS サーバーを構成する方法について説明し、FTPS クライアントを使用して安全にファイルを転送するプロセスを実演します。

Linux での FTPS サーバーの構成

このセクションでは、Linux システム上で FTPS サーバーをセットアップする手順を説明します。具体的には、Ubuntu 22.04 を例としたディストリビューションを使用します。

FTPS サーバーソフトウェアのインストール

Ubuntu 22.04 で FTPS サーバーをセットアップするには、人気のあるオープンソース FTP サーバーソフトウェアである vsftpd (Very Secure FTP Daemon) を使用します。vsftpd は、従来の FTP と FTPS プロトコルの両方をサポートしているため、FTPS サーバーの構成に適しています。

ターミナルで次のコマンドを実行して vsftpd をインストールします。

sudo apt-get update
sudo apt-get install vsftpd

SSL/TLS 証明書の生成

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/ ディレクトリに自己署名証明書とキーファイルが作成されます。

FTPS サーバーの構成

次に、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 証明書とキーファイルの場所が指定されます。

FTPS サーバーの再起動

必要な設定変更を行った後、変更を適用するために vsftpd サービスを再起動します。

sudo systemctl restart vsftpd

これで、FTPS サーバーの構成が完了し、FTPS クライアントからの安全な接続を受け付ける準備ができました。

次のセクションでは、FTPS クライアントを使用して安全にファイルを転送する方法を実演します。

FTPS クライアントを使った安全なファイル転送

これで FTPS サーバーの構成が完了したので、FTPS クライアントを使って安全にファイルを転送する方法を見ていきましょう。

FTPS クライアントの選択肢

コマンドラインベースとグラフィカルユーザーインターフェイス (Graphical User Interface, GUI) ベースのさまざまな FTPS クライアントアプリケーションがあります。このチュートリアルでは、Ubuntu 22.04 で利用可能なコマンドラインの FTPS クライアントである lftp を使用します。

lftp をインストールするには、次のコマンドを実行します。

sudo apt-get install lftp

FTPS サーバーへの接続

FTPS サーバーに接続するには、次の lftp コマンドを使用します。

lftp ftps://username:password@ftps-server-address

usernamepassword を FTPS サーバーの適切な資格情報に置き換え、ftps-server-address を FTPS サーバーの IP アドレスまたはドメイン名に置き換えてください。

接続すると、lftp のコマンドプロンプトが表示され、さまざまな FTPS コマンドを実行できます。

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 を導入することで、ファイル転送プロセスのセキュリティを強化し、データの機密性と整合性を確保することができます。