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

Debianでvsftpdをセットアップする方法

Vsftpdは、Very Secure FTP Daemonの頭文字です。これは、Linuxおよびその他のUnixライクなオペレーティングシステムで最も使用されているftpサーバーの1つです。これはオープンソースであり、GPLライセンスの下でリリースされており、データ暗号化用の仮想ユーザーとSSLをサポートしています。
このチュートリアルでは、Linuxにインストールして構成する方法を説明します。

このチュートリアルでは、学習します

  • Debian10にvsftpdをインストールする方法
  • vsftpdを構成する方法
  • 匿名使用を設定する方法
  • ローカルユーザーとのログインを設定する方法
  • 仮想ユーザーを設定する方法
  • 着信トラフィックを許可するようにufwを設定する方法

Debianでvsftpdをセットアップする方法

使用されるソフトウェア要件と規則

システム ソフトウェア その他 規約
ソフトウェア要件とLinuxコマンドラインの規則
カテゴリ 使用する要件、規則、またはソフトウェアバージョン
Debian 10(バスター)
vsftpd、openssl、libpam-pwdfile
vsftpdをインストールおよび構成するためのルート権限
#–指定されたlinux-commandを、rootユーザーとして直接、またはsudoを使用してroot権限で実行する必要があります。 command
$ –指定されたlinux-commandsを通常の非特権ユーザーとして実行する必要があります

インストール

Vsftpdは公式のDebianリポジトリで利用できるため、インストールするには、お気に入りのパッケージマネージャーを使用できます。リポジトリを同期してパッケージをインストールするだけです。両方のことは、
次のコマンドを実行することで実行できます。

$ sudo apt-get update && sudo apt-get install vsftpd

数秒で、パッケージがDebianシステムにインストールされます。パッケージに含まれているインストールスクリプトは、 vsftpdの起動にも注意を払います。 サービスは自動的に行われますが、構成ファイルを変更するたびにサービスを再起動またはリロードすることを忘れないでください。 仮想ユーザーを使用できるようにするため vsftpdによって提供される機能は、別のパッケージもインストールする必要があります:

$ sudo apt-get install libpam-pwdfile

このチュートリアルの専用セクションでその使用法を確認します。

必要なパッケージがインストールされたら、さらに進んでvsftpdを構成できます。このチュートリアルの次のセクションでその方法を説明します。

Vsftpdのセットアップ

vsftpd構成ファイルは/etc/vsftpd.confです。 。それを開くと、すでにそこに含まれているさまざまなディレクティブを見ることができます。最も一般的なケースに最も関連するものを見てみましょう。

匿名ログインを有効にする

匿名ユーザーとしてのサーバーへの認証されていないアクセスは、デフォルトで無効になっています。有効にするには、anonymous_enableを使用する必要があります ディレクティブ。構成ファイルの25行に配置されます。 。 YESに設定するだけです :
命令を次のように変更する必要があります:

anonymous_enable=YES

変更したいもう1つのディレクティブは、vsftpdが匿名アクセス後にナビゲートしようとするディレクトリを設定できるようにするディレクティブです。この設定を制御できるようにするディレクティブはanon_rootです。 。匿名ユーザーに/srv/ftpへのアクセスを許可するとします。 デフォルトでは、ディレクトリは次のように記述されます。

anon_root=/srv/ftp

すべての匿名ログインは、設計されたユーザーに内部的にマップされます。デフォルトでは、ftpです。 。このマッピングを変更するには、ftp_usernameを使用する必要があります オプションを選択し、匿名ユーザーをマップするユーザーの名前に設定します。

デフォルトでは、明らかなセキュリティ上の理由から、匿名ユーザーはサーバーに何も書き込むことができません。この動作を変更したい場合(非推奨)、変更する必要のあるオプションがいくつかあります。まず、一般的なwrite_enable ディレクティブはYESに設定する必要があります 。このディレクティブは31行にコメントされています 構成ファイルのので、あなたがしなければならないのはコメントを削除することだけです。

# Uncomment this to enable any form of FTP write command.
write_enable=YES

このディレクティブを有効にしたら、次の2つのオプションで作業するだけです。anon_upload_enable およびanon_mkdir_write_enable 。前者がYESに設定されている場合 匿名ユーザーはアップロードできるようになります ファイル。ただし、マップ先のユーザー(前述のように、デフォルトではftp)が宛先ディレクトリへの書き込み権限を持っている場合に限ります。このオプションを有効にするには、40の行からコメントを削除するだけです。 構成ファイルの:

# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES

anon_mkdir_write_enable 代わりに、YESに設定されている場合はディレクティブ 上記と同じ条件で、匿名ユーザーがサーバー上に新しいディレクトリを作成できるようにします(サーバー上の基になるユーザーは、親ディレクトリに対する書き込み権限を持っている必要があります)。ディレクティブは44行にあります 構成ファイルの:

# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES

繰り返しになりますが、変数はすでにYESに設定されているためです 、関連性を持たせるために必要なのは、コメントを削除することだけです。

匿名ユーザーが他の種類の書き込み操作も実行できるようにするため。たとえば、名前の変更 または削除 ディレクトリの場合、構成ファイルに存在しない別のディレクティブanon_other_write_enableを使用する必要があります YESに設定します 上記の動作が目的の動作である場合:

anon_other_write_enable=YES

認証されたログイン

ローカルシステムユーザーがシステムパスワードでftpサーバーにアクセスできるようにするには、local_enable ディレクティブはYESに設定する必要があります :これはDebianシステムのデフォルトです。ディレクティブは28行にあります。 デーモンの
構成ファイル:

# Uncomment this to allow local users to log in.
local_enable=YES

デフォルトでは、ローカルユーザーが正常に認証されると、rootとして独自のホームディレクトリが作成されます。ただし、local_rootを使用して、別の開始点を指定することは可能です。 指令。このディレクティブは構成ファイルに存在しないため、使用する場合は追加する必要があります。 /srv/ftpを設定するには たとえば、ローカルルートとしてのディレクトリは次のように記述します。

local_root=/srv/ftp

Chrootローカルユーザー

セキュリティ対策として、 chrootすることが可能です。 独自のホームディレクトリ内の各認証済みユーザー。このタスクを実行するには、chroot_local_userを使用する必要があります ディレクティブ:

chroot_local_user=YES

この機能を有効にすると、次のディレクティブを使用して、除外のリスト(chrootしてはならないユーザーのリスト)を指定できます。

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

最初のディレクティブは機能をアクティブ化するために必要であり、もう1つは除外リストを含むファイルの場所を指定するために必要です。 。ファイルがまだ存在しない場合は作成する必要があります。作成しないと、ログインに失敗します。

セキュリティ対策として、ユーザーがchrootされた場合、chrootの最上位ディレクトリに書き込めないようにする必要があります。その場合、vsftpdの最新バージョンでは、ユーザーはログインできず、サーバーは次のメッセージで応答します。

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

この問題は、基本的に2つの方法で解決できます。この最初のものは明らかに権限の修正で構成されています 、chrootのトップレベルディレクトリへの書き込みアクセスをユーザーに拒否し、サブディレクトリにのみ書き込みを許可します。
セキュリティへの影響を気にしない場合、問題を解決する2番目の方法は次のとおりです。 この制限をバイパスする 、次のディレクティブを使用します:

allow_writeable_chroot=YES

権限について言えば、ローカルユーザーのデフォルトのumaskが077に設定されていることに注意することが重要です。 。この設定が制限的すぎると考えられる場合は、local_umaskを使用して設定を変更できます。 指令。このディレクティブは、35行でコメント化されています。 構成ファイルの:

# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
#local_umask=022
を期待している場合は、これを022に変更することをお勧めします。

仮想ユーザーでログイン

vsftpdが提供する優れた機能の1つは、仮想ユーザーを使用してログインできることです。 。仮想ユーザーとは、システム上には実際には存在しないが、sftpdアプリケーションのコンテキスト内にのみ存在するユーザーです。この機能を有効にするには、次のディレクティブを使用する必要があります。

guest_enable=YES

この機能がアクティブな場合、すべての非匿名ログイン(実際の/ローカルユーザーも含む)は、guest_usernameで指定されたユーザーにマップされます。 ディレクティブ。デフォルトでは、すでに見たように ftp

次のステップは、仮想ユーザーのユーザー名とパスワードを含むファイルを作成することです。ハッシュ化されたパスワードを生成するには、opensslを使用できます 次のコマンドを発行します:

$ openssl passwd -1
Password:
Verifying - Password:
$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

passwd opensslのコマンド ハッシュ化されたパスワード(md5)を生成するために使用されます。上記の例では、ハッシュするパスワードとその確認を求められました。最後に、ハッシュされたパスワードが生成され、画面に表示されます。

ユーザー名とパスワードをファイルに入れる必要があります。たとえば、/etc/virtual_users.pwd 、次の形式で:

username:hashed_password

したがって、仮想ユーザーが「linuxconfig」と呼ばれるとすると、次のように記述します。

linuxconfig:$1$pfwh3Jou$DQBiNjw8bBtDqys7ezTpr.

構成する仮想ユーザーごとに操作を繰り返す必要があります。

次に、 pamを作成する必要があります 仮想ユーザーを認証するためにvsftpdによって使用されるサービス。ファイルにvsftpd_virtualという名前を付けます /etc/pam.dに配置します ディレクトリ。その内容は次のとおりです。

#%PAM-1.0
auth    required pam_pwdfile.so pwdfile /etc/vsftpd/virtual_users.pwd
account required pam_permit.so

ご覧のとおり、最初の行に仮想ユーザーのユーザー名とパスワードを含むファイルのパスを指定しました。今、私たちがする必要があるのは、このpam「サービス」を使用するようにvsftpdに指示することです。 pam_service_nameでそれを行うことができます ディレクティブ:

pam_service_name=vsftpd_virtual

この時点で、構成ファイルを保存し、デーモンを再起動して、作成した仮想ユーザーでログインできることを確認できます。

データ暗号化のSSLサポートを有効にする

デフォルトでは、vsftpdではSSLサポートが無効になっているため、転送されるデータは暗号化されません。 SSLサポートを有効にするには、149行にある次のディレクティブを使用する必要があります。 151へ 構成ファイルの:

# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=YES

最初のディレクティブ、rsa_cert_file SSL暗号化接続に使用するRSA証明書のパスを示すために使用されます。 2つ目は、rsa_private_key 代わりに、RSA秘密鍵の場所を指定するために使用されます。最後に、ssl_enable ディレクティブは、SSL暗号化の使用を有効にするために使用されます。

この例では、/etc/ssl/certs/ssl-cert-snakeoil.pemを使用しています。 および/etc/ssl/private/ssl-cert-snakeoil.key ファイルですが、ほぼ確実に専用のファイルを使用する必要があります。

パッシブモードのポート範囲の指定

FTPパッシブモードはvsftpdの新規インストールのデフォルトですが、明示的に有効にする場合は、次のディレクティブを使用できます。

# Set to NO if you want to disallow the PASV method of obtaining a data connection
# (passive mode). Default: YES
pasv_enable=YES

サーバーがパッシブモードで動作している場合 、接続のためにリッスンする必要があるIPアドレスとポートをクライアントに送信します。このポートはデフォルトでランダムに選択されますが、サーバーでファイアウォールを使用する必要があるため、トラフィックを完全に許可するポートを知っている必要があります。使用するポートの範囲は、pasv_min_portで指定できます。 およびpasv_max_port ディレクティブ、例:

# The minimum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling.
pasv_min_port=10090

# The maximum port to allocate for PASV style data connections. Can be used to
# specify a narrow port range to assist firewalling. Default: 0 (use any port)
pasv_max_port=10100

次の構成では、サーバーは10090からのポートの範囲を使用します 10100へ 。

ファイアウォールの設定

vsftpdサーバーが正しく機能するには、必要なポートを通過するトラフィックを許可する必要があります。ファイアウォールに適切なルールを設定する必要がある場合もあります。このチュートリアルでは、 ufwの使用を想定しています。 ファイアウォールマネージャー(複雑でないファイアウォール)。

トラフィックを許可する最初のポートは、ポート21です。 、FTPプロトコルで使用される標準ポートです:

$ sudo ufw allow in 21/tcp

次に、前のセクションで設定した指定のポート範囲を介した着信トラフィックを許可する必要があります。実行できるポートの範囲を指定するには:

$ sudo ufw allow in 10090:10100/tcp

結論

この記事では、Debian10Busterにvsftpdをインストールして設定する方法を見ました。匿名の使用法とローカルユーザーの使用法を設定する方法と、仮想ユーザーを活用する方法を見てきました。 サービスによって提供される機能。 FTPはデータ暗号化を提供しないため、SSLサポートを有効にする方法、そして最後に、必要なポートを通過する着信トラフィックを許可するようにファイアウォールを設定する方法を確認しました。 vsftpd構成ファイルで使用できる可能なディレクティブの完全なリストについては、 vsftpd.confを参照してください。 マンページ(VSFTPD.CONF(5))。 FTPサーバーをプログラムで操作する方法を知りたいですか? Pythonを使用してFTPサーバーに接続する方法に関する記事をご覧ください。


Debian
  1. Debian9にRをインストールする方法

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

  3. CentOS 7.xでVSFTPDを設定するにはどうすればよいですか?

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

  2. Debian10にRをインストールする方法

  3. Debian 11でRsyslogサーバーをセットアップする方法(Bullseye)

  1. Debian11でTeampassPasswordManagerをセットアップする方法

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

  3. Debian11にvsftpdFTPサーバーをインストールする方法