目的
目的は、匿名またはローカルユーザーアクセスの両方を許可する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