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

Debian 9StretchLinuxでFTPサーバーを構成する方法

目的

目的は、匿名またはローカルユーザーアクセスの両方を許可するDebian 9StretchLinuxにFTPサーバーをインストールして構成することです。

オペレーティングシステムとソフトウェアのバージョン

  • オペレーティングシステム: –Debian9ストレッチ
  • ソフトウェア: –vsFTPdバージョン3.0.3

要件

への特権アクセス

難易度

ミディアム

規約

  • –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudoを使用して、root権限で実行する必要があります。 コマンド
  • $ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります

手順

次のチュートリアルでは、vsFTPdを使用してFTPサーバーをインストールおよび構成する方法について説明します。 デーモン。また、匿名ユーザーとローカルユーザーに書き込みまたは読み取り専用アクセスを許可するためのさまざまな構成についても説明します。

vsFTPdのインストール

vsFPTdサーバーとFTPクライアントのインストールから始めましょう:

# apt install vsftpd ftp

デフォルトでは、vsFTPdサーバーは、システムユーザーが読み取り専用アクセスでホームディレクトリにアクセスできるように構成されています。以下は、デフォルトのvsFTPd構成ファイル/etc/vsftpd.confです。 :

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=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=NO

すでに述べたように、上記の設定ファイルは、/etc/passwd内にリストされているシステムユーザーにのみ読み取り専用アクセスを許可します。 ファイル。 ftpを使用する コマンドを実行し、ローカルシステムユーザーのユーザー名とパスワードを使用して接続を試みます。

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
550 Permission denied.

ローカルユーザーによる読み取り専用アクセスのみが必要な場合は、これで完了です。

ユーザー書き込みアクセスを許可する

すべてのシステムローカルユーザーに書き込みアクセスを追加するには、ユーザーのコメントを解除するか、次のスタンザを追加しますwrite_enable=YES 。新しい構成ファイルは次のもので構成されます:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=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=NO
write_enable=YES

次に、vsFTPdを再起動します:

# systemctl restart vsftpd

ftpを使用して新しいテストを実行します 書き込みアクセスを確認するコマンド:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 1000     1000            0 Jun 07 12:45 FILE.TXT
226 Directory send OK.

特定のユーザーのみを許可する

現在、FTPサーバーは、/etc/passwd内で定義されたすべてのシステムユーザーへのアクセスを許可しています。 ファイル。特定のユーザーのみがログインできるようにするために、構成ファイルに次の行を含めることができます。

userlist_file=/etc/vsftpd.userlist
userlist_enable=YES

上記により、/etc/vsftpd.userlist内にリストされているすべてのユーザーが定義されたユーザーリストが有効になります。 (1行に1つのユーザー名)FTPへのアクセスは拒否されますが、他のすべてのシステムユーザーはログインできます。新しい/etc/vsftpd.userlistを作成しましょう 1人のユーザーで構成されるユーザーリストlinuxconfig

# echo linuxconfig > /etc/vsftpd.userlist

vsFTPdサーバーを再起動します:

# systemctl restart vsftpd

ftpを使用して新しいテストを実行します linuxconfigのFTPサーバーへのアクセス拒否を確認するコマンド ユーザー:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
530 Permission denied.
Login failed.
ftp> 

ただし、/etc/vsftpd.userlist内で定義されたユーザーでのみログインできるようにする必要がある場合 、次の構成オプションを追加しますuserlist_deny=NO vsFTPd構成ファイル/etc/vsftpd.confに 。以下は、現在の/etc/vsftpd.confです。 構成ファイル:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=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=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO

匿名を許可する

この段階で、匿名ユーザーによる読み取り専用アクセスも許可します。匿名ユーザーのルートディレクトリとして使用される新しいディレクトリの作成を始めましょう。 /var/ftp 。テストの目的で、/var/ftp内に任意のテストファイルを配置することもできます。 :

# mkdir /var/ftp/
# chmod 555 /var/ftp/
# chown ftp.ftp /var/ftp/
# touch /var/ftp/ANONYMOUS.TXT

さらに、次の行を/etc/vsftpd.confに含めます。 匿名のホームディレクトリと匿名のアクセスを定義するための構成ファイル:

anon_root=/var/ftp
anonymous_enable=YES

必要に応じて、no_anon_password=YESを追加します 匿名ユーザーがパスワードなしで自動的にログインできるようにvsFTPdに指示する行。ユーザーリストを定義したので、anonymousも追加する必要があります リストへのユーザー:

# echo anonymous >> /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist 
linuxconfig
anonymous

通常どおり、FTPサーバーを再起動し、現在の構成の有効性を実行します。

# systemctl restart vsftpd

匿名ログインのテスト:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jun 07 13:29 ANONYMOUS.TXT
226 Directory send OK.
ftp> 

以下に、現在のvsFTPd構成ファイルを示します。

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=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=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
anon_root=/var/ftp
anonymous_enable=YES
no_anon_password=YES

匿名書き込みアクセスを有効にする

次に、匿名ユーザーがファイルをアップロードしたり、新しいディレクトリなどを作成したりできるようにします。これを行うには、新しいディレクトリを作成しますupload /var/ftp内 ディレクトリ:

# mkdir /var/ftp/upload
# chown ftp.ftp /var/ftp/upload/

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

anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

サーバーを再起動します:

# systemctl restart vsftpd

再起動後、匿名ユーザーはファイルをアップロードできるようになり、ディレクトリを作成してファイルの名前を変更します。

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jun 07 13:29 ANONYMOUS.TXT
drwxr-xr-x    2 108      112          4096 Jun 07 13:57 upload
226 Directory send OK.
ftp> cd upload
250 Directory successfully changed.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 108      112             0 Jun 07 13:57 FILE.TXT
226 Directory send OK.
ftp> rename FILE.TXT NEW.TXT
350 Ready for RNTO.
250 Rename successful.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 108      112             0 Jun 07 13:57 NEW.TXT
226 Directory send OK.
ftp> 

以下に、最終的なvsFTPd構成ファイルを示します。

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=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=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
anon_root=/var/ftp
anonymous_enable=YES
no_anon_password=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

付録

エラーメッセージ:

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
ftp>

上記は、anon_root ディレクトリは書き込み可能です。解決策は、読み取り専用にすることです。例:

# chmod 555 /var/ftp

または、vsFTPd構成ファイルに次の行を追加してみてください。

allow_writeable_chroot=YES

Debian
  1. Debian 9StretchLinuxにLAMPサーバーをインストールする方法

  2. Debian 9StretchLinuxでSambaサーバー共有を設定する方法

  3. Debian 9StretchLinuxにNodeJSをインストールする方法

  1. MySQLコミュニティサーバーをDebian9StretchLinuxにインストールする方法

  2. Debian 9StretchLinuxにTeamViewerをインストールする方法

  3. Debian 9StretchLinuxでNFSを設定する方法

  1. Debian 9StretchLinuxでNTPサーバーとクライアントをセットアップする方法

  2. Debian 9StretchLinuxにWordPressをインストールする方法

  3. Debian 9StretchLinuxにJenkinsをインストールする方法