GNU/Linux >> Linux の 問題 >  >> Debian

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

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

純粋なFTPd機能:

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

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

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

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

sudo apt install pure-ftpd

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

systemctl status pure-ftpd

出力:

 pure-ftpd.service
   Loaded: loaded (/etc/init.d/pure-ftpd; generated)
   Active: active (running) since Wed 2021-06-16 13:15:52 UTC; 23s ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 1 (limit: 558)
   Memory: 972.0K
   CGroup: /system.slice/pure-ftpd.service
           └─9223 pure-ftpd (SERVER)
>

実行されていない場合は、次のようにスターを付けます:

sudo systemctl start pure-ftpd

そして、制御ポートであるTCPポート21でリッスンしています。 、

で見ることができるように
sudo ss -lnpt | grep pure-ftpd

もう1つのポートはデータポートです (TCPポート20)。ユーザーがFTP経由でファイルを転送するときに使用されます。

匿名アクセスはデフォルトで無効になっています。今後は、システムアカウントを使用してログインできますが、プレーンテキストの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証明書を取得する

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

sudo apt install certbot

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

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

Debian 10サーバーで実行されている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プラグインの使用

Debian 10サーバーに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/に変更します ディレクトリ。

sudo su -

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

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

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サーバーに接続できます。

ステップ5:ファイアウォールでFTPポートを開く

UFWファイアウォールを使用している場合は、次のコマンドを実行してTCPポート20および21を開きます。

sudo ufw allow 20,21/tcp

ステップ6:FTPサーバーに接続する

ノーチラスを使用する場合 プレーンテキスト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をリロードする必要があります 新しい証明書と秘密鍵を取得するようにします。


Debian
  1. vsftpd FTPサーバーをインストールし、Debian11でTLSを使用して保護する方法

  2. Debian11サーバーでSFTPサーバーをセットアップする方法

  3. Debian9でPostfixAdminを使用してメールサーバーを設定する

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

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

  3. Debian10でOpenVPNサーバーをセットアップする方法

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

  2. Debian9でOpenVPNサーバーをセットアップする方法

  3. Debian10でMinecraftサーバーをセットアップする方法