GNU/Linux >> Linux の 問題 >  >> Ubuntu

UbuntuでPure-FTPdを使用して安全なFTPサーバーをセットアップする方法

純粋なFTPd は、セキュリティを念頭に置いて設計された無料のオープンソースFTPサーバーです。このチュートリアルでは、Pure-FTPdを使用してUbuntuサーバーに安全なFTPサーバーをセットアップする方法と、TLS暗号化を適用する方法を見ていきます。

:このチュートリアルは、Ubuntu 20.04、18.04、21.04を含む現在のすべてのUbuntuリリースで機能します。

純粋なFTPd機能:

  • SSL / TLS暗号化をサポートしているため、パスワードとコマンドを保護できます。
  • Linux、BSD、Solaris、Darwin、HPUX、AIX、さらにはiPhoneなど、ほとんどのUnixライクなシステムで実行できます。
  • 21の言語で利用できます。
  • アクティブなセッションを監視できます。
  • 仮想クォータシステムをサポートします。
  • その他

機能の完全なリストについては、Pure-FTPdの公式Webサイトにアクセスしてください。

ステップ1:UbuntuサーバーにPure-FTPdをインストールする

これはソフトウェアリポジトリにあるため、次のコマンドを発行してFTPサーバーをインストールします。

sudo apt install pure-ftpd

インストールすると、次のコマンドで確認できるように、Pure-FTPdが自動的に開始されます。

systemctl status pure-ftpd

出力:

● pure-ftpd.service
   Loaded: loaded (/etc/init.d/pure-ftpd; bad; vendor preset: enabled)
   Active: active (running) since Mon 2016-12-12 21:51:46 EST; 23s ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/pure-ftpd.service
           └─3435 pure-ftpd (SERVER)

preset: enabled システムの起動時に自動起動することを示します。実行されていない場合は、次のようにスターを付けます:

sudo systemctl start pure-ftpd

そして、

でわかるように、制御ポートであるTCPポート21でリッスンしています。
sudo netstat -lnpt | grep pure-ftpd

匿名アクセスはデフォルトで無効になっています。今後は、システムアカウントを使用してログインできますが、プレーンテキストのFTPは安全ではなく、強くお勧めしません。安全なFTPサーバーを使用するには、TLSとの通信を暗号化する必要があります。

ステップ2:TLS暗号化を適用する

プレーンテキストとTLS暗号化の両方を有効にするには、次のコマンドを実行して、/etc/pure-ftpd/conf/TLSを作成します。 ファイルに1番を入れます。

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS

ただし、プレーンテキストを無効にしてTLS暗号化のみを使用することをお勧めします。そのため、代わりに番号2をファイルに追加してください。

echo 2 | sudo tee /etc/pure-ftpd/conf/TLS

TLSを適用したので、有効なTLS証明書を取得する必要があります。以下のスクリーンショットのような警告がユーザーに表示されるため、自己署名証明書はお勧めしません。

ステップ3:Let’sEncryptから信頼できるTLS証明書を取得する

次のコマンドを実行して、デフォルトのUbuntuリポジトリからLet’s Encryptクライアント(certbot)をインストールします。

sudo apt install certbot

standaloneの使用をお勧めします またはwebroot Pure-FTPdのTLS証明書を取得するためのプラグイン。

スタンドアロンプ​​ラグイン

Ubuntuサーバーで実行されているWebサーバーがない場合は、スタンドアロンプ​​ラグインを使用できます。次のコマンドを実行します。サブドメインにDNSAレコードを設定することを忘れないでください。

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d ftp.example.com

場所:

  • certonly :証明書を取得しますが、インストールしないでください。
  • --standalone :スタンドアロンプ​​ラグインを使用して証明書を取得します
  • --preferred-challenges http :http-01チャレンジを実行して、ポート80を使用するドメインを検証します。
  • --agree-tos :Let'sEncryptの利用規約に同意します。
  • --email :メールアドレスはアカウントの登録と復旧に使用されます。
  • -d :ドメイン名を指定してください。

次のスクリーンショットからわかるように、私は正常に証明書を取得しました。

webrootプラグインの使用

UbuntuサーバーにWebサーバーがある場合は、webrootプラグインを使用して証明書を取得することをお勧めします。これは、webrootプラグインがほとんどすべてのWebサーバーで機能し、Webサーバーに証明書をインストールする必要がないためです。

まず、ftp.example.comの仮想ホストを作成する必要があります 。

Apache

Apacheを使用している場合は、

sudo nano /etc/apache2/sites-available/ftp.example.com.conf

そして、次の行をファイルに貼り付けます。

<VirtualHost *:80>        
        ServerName ftp.example.com

        DocumentRoot /var/www/Pure-FTPd
</VirtualHost>

ファイルを保存して閉じます。次に、Webルートディレクトリを作成します。

sudo mkdir /var/www/Pure-FTPd

www-data(Apacheユーザー)をWebルートの所有者として設定します。

sudo chown www-data:www-data /var/www/Pure-FTPd -R

この仮想ホストを有効にします。

sudo a2ensite ftp.example.com

変更を有効にするためにApacheをリロードします。

sudo systemctl reload apache2

仮想ホストを作成して有効にしたら、次のコマンドを実行して、webrootプラグインを使用してLet’sEncrypt証明書を取得します。

sudo certbot certonly --webroot --agree-tos --email [email protected] -d ftp.example.com -w /var/www/Pure-FTPd

Nginx

Nginxを使用している場合は、

sudo nano /etc/nginx/conf.d/ftp.example.com.conf

次の行をファイルに貼り付けます。

server {
      listen 80;
      listen [::]:80;
      server_name ftp.example.com;

      root /var/www/Pure-FTPd/;

      location ~ /.well-known/acme-challenge {
         allow all;
      }
}

ファイルを保存して閉じます。次に、Webルートディレクトリを作成します。

sudo mkdir -p /var/www/Pure-FTPd

www-data(Nginxユーザー)をWebルートの所有者として設定します。

sudo chown www-data:www-data /var/www/Pure-FTPd -R

変更を有効にするためにNginxをリロードします。

sudo systemctl reload nginx

仮想ホストを作成して有効にしたら、次のコマンドを実行して、webrootプラグインを使用してLet’sEncrypt証明書を取得します。

sudo certbot certonly --webroot --agree-tos --email [email protected] -d ftp.example.com -w /var/www/Pure-FTPd

ステップ4:証明書をインストールする

Pure-FTPdでは、証明書と秘密鍵をpure-ftpd.pemという名前の1つのファイルに結合する必要があります。 /etc/ssl/private/の下に保存されます ディレクトリ。

/etc/letsencrypt/live/ftp.example.com/に変更します ディレクトリ。

cd /etc/letsencrypt/live/ftp.example.com/

catを使用できます 以下のように2つのファイルを1つに結合するコマンド。

sudo cat fullchain.pem privkey.pem | sudo tee /etc/ssl/private/pure-ftpd.pem

rootユーザーのみがファイルを読み取ることができることを確認してください。

sudo chmod 600 /etc/ssl/private/pure-ftpd.pem

次のコマンドでDiffie-Hellmanパラメーターを生成する必要があります:

sudo openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 4096

サーバーに単一のCPUコアがある場合、これには長い時間がかかります(約10分)。

それが完了したら、Pure-FTPdを再起動します。

sudo systemctl restart pure-ftpd

ステータスをチェックして、実行されているかどうかを確認します。

systemctl status pure-ftpd

これで、TLSを介してFTPサーバーに接続できます。

Nautilusファイルマネージャーを使用してプレーンテキストのftp://経由でFTPサーバーに接続する場合 プロトコル

接続は拒否されます。

ftp://の代わりに 、ftps://を使用する必要があります 。

デフォルトでは、FTPユーザーは/に移動します サーバー上のルートディレクトリ。

Filezillaは、デフォルトでは証明書(自己署名またはCA署名)を信頼しないことに注意してください。ユーザーは自分で証明書を信頼することを選択する必要があります。

FileZilla不明な証明書の警告

また、FTP明示的TLSプロトコル(ftpes://ftp.example.com)を使用する必要があります )Filezillaで。

TLS証明書の自動更新

Cronジョブを作成して、TLS証明書を自動的に更新できます。 rootユーザーのcrontabファイルを開くだけです。

sudo crontab -e

ファイルの最後に次の行を追加します。

@daily certbot renew --quiet && cd /etc/letsencrypt/live/ftp.example.com/ && cat fullchain.pem privkey.pem | tee /etc/ssl/private/pure-ftpd.pem && systemctl reload pure-ftpd

新しい証明書と秘密鍵を取得するには、pure-ftpdをリロードする必要があります。


Ubuntu
  1. RaspberryPiでFTPサーバーを設定する方法

  2. Ubuntu20.04でLetsencryptを使用してNginxを保護する方法

  3. Ubuntu 20.04 に FTP サーバーをインストールする方法

  1. vsftpdを使用してUbuntuにFTPサーバーをインストールする方法

  2. Ubuntu20.04でVSFTPDを使用してFTPサーバーをセットアップする方法

  3. Ubuntu18.04でVSFTPDを使用してFTPサーバーをセットアップする方法

  1. Ubuntu18.04でOpenVPNサーバーをセットアップする方法

  2. Ubuntu20.04でUFWを使用してファイアウォールを設定する方法

  3. Ubuntu20.04でNginxサーバーブロックを設定する方法