アンドロイド

Debian 9でvsftpdを使用してFTPサーバーをセットアップする方法

AE T L3 Ubuntu Installation & Basic Linux Commands

AE T L3 Ubuntu Installation & Basic Linux Commands

目次:

Anonim

FTP(ファイル転送プロトコル)は、リモートネットワークとの間でファイルを転送するために使用される標準のネットワークプロトコルです。 より安全で高速なデータ転送を行うには、SCPまたはSFTPを使用します。

Linuxには多くのオープンソースFTPサーバーがあります。 最も一般的で広く使用されているのは、PureFTPd、ProFTPD、およびvsftpdです。

このチュートリアルでは、vsftpd(Very Secure Ftp Daemon)をDebian 9にインストールして設定する方法について説明します。vsftpdは、安定した安全で高速なFTPサーバーです。 また、ユーザーをホームディレクトリに制限し、SSL / TLSで送信全体を暗号化するようにvsftpdを構成する方法も示します。

前提条件

ログインしているユーザーには、パッケージをインストールするためのsudo権限が必要です。

Debian 9でのvsftpdのインストール

vsftpdパッケージはDebianリポジトリで利用可能です。 インストールは非常に簡単です。

sudo apt update sudo apt install vsftpd

vsftpdサービスは、インストールプロセスが完了すると自動的に開始されます。 サービスステータスを印刷して確認します。

sudo systemctl status vsftpd

出力は以下のようになり、vsftpdサービスがアクティブで実行中であることが示されます。

● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-12-10 11:42:51 UTC; 53s ago Main PID: 1394 (vsftpd) CGroup: /system.slice/vsftpd.service └─1394 /usr/sbin/vsftpd /etc/vsftpd.conf

vsftpdの構成

vsftpdサーバーは、 /etc ディレクトリにある vsftpd.conf ファイルを変更することで構成できます。

ほとんどの設定は、構成ファイル内に十分に文書化されています。 利用可能なすべてのオプションについては、公式のvsftpdページをご覧ください。

次のセクションでは、安全なvsftpdインストールを構成するために必要ないくつかの重要な設定について説明します。

vsftpd構成ファイルを開いて開始します。

sudo nano /etc/vsftpd.conf

1. FTPアクセス

anonymous_enable および local_enable ディレクティブを見つけて、設定が以下の行と一致することを確認します。

/etc/vsftpd.conf

anonymous_enable=NO local_enable=YES

これにより、ローカルユーザーのみがFTPサーバーにアクセスできるようになります。

2.アップロードを有効にする

write_enable 設定のコメントを解除して、ファイルのアップロードや削除などのファイルシステムへの変更を許可します。

/etc/vsftpd.conf

write_enable=YES

3.クルート刑務所

FTPユーザーがホームディレクトリ外のファイルにアクセスできないようにするには、 chroot 設定のコメントを解除します。

/etc/vsftpd.conf

chroot_local_user=YES

デフォルトでは、セキュリティの脆弱性を防ぐために、chrootが有効になっている場合、vsftpdはユーザーがロックされているディレクトリが書き込み可能な場合、ファイルのアップロードを拒否します。

以下のいずれかの方法を使用して、chrootが有効になっているときにアップロードを許可します。

  • 方法 1-アップロードを許可する推奨方法は、chrootを有効にしてFTPディレクトリを構成することです。 このチュートリアルでは、chrootとして機能する ftp ディレクトリと、ファイルをアップロードするための書き込み可能な uploads ディレクトリをユーザーホーム内に作成します。

    /etc/vsftpd.conf

    user_sub_token=$USER local_root=/home/$USER/ftp

    方法 2-別のオプションは、vsftpd構成ファイルに次のディレクティブを追加することです。 ユーザーにホームディレクトリへの書き込み可能なアクセスを許可する必要がある場合は、このオプションを使用します。

    /etc/vsftpd.conf

    allow_writeable_chroot=YES

4.パッシブFTP接続

vsftpdは、パッシブFTP接続に任意のポートを使用できます。 ポートの最小および最大範囲を指定し、後でファイアウォールでその範囲を開きます。

構成ファイルに次の行を追加します。

/etc/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5.ユーザーログインの制限

特定のユーザーのみがFTPサーバーにログインできるようにするには、ファイルの最後に次の行を追加します。

/etc/vsftpd.conf

userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

このオプションを有効にした場合、ユーザー名を /etc/vsftpd.user_list ファイルに追加して、ログインできるユーザーを明示的に指定する必要があります(1行に1ユーザー)。

6. SSL / TLSを使用した送信の保護

SSL / TLSを使用してFTP伝送を暗号化するには、SSL証明書を取得し、それを使用するようにFTPサーバーを構成する必要があります。

信頼できる認証局によって署名された既存のSSL証明書を使用するか、自己署名証明書を作成できます。

このチュートリアルでは、 openssl コマンドを使用して自己署名SSL証明書を生成します。

次のコマンドは、2048ビットの秘密キーと10年間有効な自己署名証明書を作成します。 秘密鍵と証明書の両方が同じファイルに保存されます:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

SSL証明書が作成されたら、vsftpd構成ファイルを開きます。

sudo nano /etc/vsftpd.conf

rsa_cert_file および rsa_private_key_file ディレクティブを見つけ、それらの値を rsa_private_key_file ファイルパスに変更し、 ssl_enable ディレクティブを YES 設定します。

/etc/vsftpd.conf

rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

特に指定されていない場合、FTPサーバーはTLSのみを使用して安全な接続を確立します。

vsftpdサービスを再起動します

編集が完了すると、vsftpd構成ファイル(コメントを除く)は次のようになります。

/etc/vsftpd.conf

listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

ファイルを保存し、vsftpdサービスを再起動して、変更を有効にします。

sudo systemctl restart vsftpd

ファイアウォールを開く

ポート 21 (FTPコマンドポート)、ポート 20 (FTPデータポート)、および 30000-31000 (パッシブポート範囲)を 30000-31000 には、次のコマンドを実行します。

sudo ufw allow 20:21/tcp sudo ufw allow 30000:31000/tcp

ロックアウトされないように、ポート 22 も開きます。

sudo ufw allow OpenSSH

UFWを無効にしてから再度有効にして、UFWルールをリロードします。

sudo ufw disable sudo ufw enable

変更を確認するには、次を実行します。

sudo ufw status

Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

FTPユーザーの作成

FTPサーバーをテストするために、新しいユーザーを作成します。

  • FTPアクセスを許可するユーザーが既にいる場合は、最初の手順をスキップします。設定ファイルで allow_writeable_chroot=YES を設定している場合は、3番目の手順をスキップします。
  1. newftpuser という名前の新しいユーザーを作成します。

    sudo adduser newftpuser

    許可されたFTPユーザーリストにユーザーを追加します。

    echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list

    FTPディレクトリツリーを作成し、適切な権限を設定します。

    sudo mkdir -p /home/newftpuser/ftp/upload sudo chmod 550 /home/newftpuser/ftp sudo chmod 750 /home/newftpuser/ftp/upload sudo chown -R newftpuser: /home/newftpuser/ftp

    前のセクションで説明したように、ユーザーはファイルを ftp/upload ディレクトリに ftp/upload ます。

この時点で、FTPサーバーは完全に機能しているため、FileZillaなどのTLS暗号化を使用するように構成できる任意のFTPクライアントを使用してサーバーに接続できるはずです。

シェルアクセスを無効にする

デフォルトでは、ユーザーの作成時に、明示的に指定されていない場合、ユーザーはサーバーへのSSHアクセス権を持ちます。

シェルアクセスを無効にするには、アカウントがFTPアクセスのみに制限されていることをユーザーに伝えるメッセージを単に出力する新しいシェルを作成します。

/bin/ftponly シェルを作成して実行可能にします。

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

/etc/shells ファイル内の有効なシェルのリストに新しいシェルを追加します。

echo "/bin/ftponly" | sudo tee -a /etc/shells

ユーザーシェルを /bin/ftponly 変更します。

sudo usermod newftpuser -s /bin/ftponly

FTPアクセスのみを許可するすべてのユーザーのシェルを変更するには、同じコマンドを使用します。

結論

このチュートリアルでは、Debian 9システムに安全で高速なFTPサーバーをインストールして設定する方法を学びました。

ftp debian