Linux 9 FTPサーバー(vsftpd)インストール

Linux Server

ここではvsftpd (Very Secure FTP Daemon) サーバーをLinuxにインストールする手順を説明します。

vsftpdプログラムのインストール

Linux 9環境にFTPサービスをインストールするために以下のコマンドを実行します。

[root@svr ~]# yum install vsftpd

パッケージがインストールされたかとうかは以下のコマンドで確認できます。

[root@svr ~]# yum search vsftpd

vsftpdサービスの登録

以下のコマンドでインストールしたvsftpdのサービスを活性化します。

[root@svr ~]# systemctl start vsftpd.service
[root@svr ~]# systemctl enable vsftpd.service

vsftpd設定変更

以下のようにvsftpd.confファイルを修正します。

[root@svr ~]# vi /etc/vsftpd/vsftpd.conf
…
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
…
# ASCII mangling is a horrible feature of the protocol.
ascii_upload_enable=YES
ascii_download_enable=YES
…
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
…
# with the listen_ipv6 directive.
listen=NO
…
# Make sure, that one of the listen options is commented !!
listen_ipv6=YES

なお、vsftpd.confの最後尾に以下のオプションを追加します。

pam_service_name=vsftpd
local_root=public_html
use_localtime=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
allow_writeable_chroot=YES

chroot環境

/etc/vsftpd/chroot_list は、vsftpd (Very Secure FTP Daemon) サーバーの設定ファイルの一つで、FTPユーザーのchroot設定を管理します。chrootは、特定のユーザーがログインした際にそのユーザーのルートディレクトリを変更する機能で、ユーザーが指定されたディレクトリ外にアクセスすることを防ぎ、セキュリティを向上させます。

以下のchroot_listファイルにユーザー名を追加します。

[root@svr ~]# vi /etc/vsftpd/chroot_list
user01
user02
user03

chroot環境とvsftpd.conf設定との関係

このリスト(/etc/vsftpd/chroot_list)の動作「chrootする/chrootしない」はvsftpd.conf設定ファイルの設定によって異なります。

  • chroot_local_user=YES
    • 全てのローカルユーザーをchroot環境に配置します。ただし、chroot_list にリストされているユーザーはchrootしないとして扱われます。
  • chroot_list_enable=YES
    • chroot_list ファイルを有効にします。
  • chroot_list_file=/etc/vsftpd/chroot_list
    • chroot_listファイルのパスを指定します。通常、このファイルは /etc/vsftpd/chroot_list です。

リストにあるユーザーはchrootしない

# すべてのローカルユーザーをchrootするが、リストにあるユーザーはchrootしない
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

リストにあるユーザーはchrootする

# すべてのローカルユーザーをchrootしないが、リストにあるユーザーはchrootする
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

FTPアクセス禁止

/etc/vsftpd/ftpusers は、vsftpd (Very Secure FTP Daemon) サーバーの設定ファイルの一つであり、FTPアクセスを禁止するユーザーリストを管理します。このファイルに記載されたユーザーは、FTPサーバーにログインすることができません。

以下のftpusersファイルに接続しようとするユーザーは削除、または#コメントアウトします。

[root@svr ~]# vi /etc/vsftpd/ftpusers
#root
bin
daemon
#admin
adm
nobody

編集後は、vsftpd サービスを再起動することで変更を反映させることができます

[root@svr ~]# systemctl restart vsftpd

SELINUX=permissive に設定する理由

トラブルシューティング

  • SELinuxが enforcing モードの場合、vsftpd が正しく動作しないことがあります。これは、SELinuxポリシーがvsftpd のファイルアクセスやネットワーク通信をブロックすることが原因です。
  • permissive モードにすると、ポリシー違反がログに記録されるだけで操作は拒否されません。これにより、何が問題になっているのかを調査しやすくなります。

設定確認

  • permissive モードでvsftpd を実行することで、SELinuxポリシーの影響を受けずに設定を確認できます。このモードで問題が発生しない場合、SELinuxポリシーが原因であることが明確になります。

ポリシーの調整

  • permissive モードでのログを元に、必要なSELinuxポリシーの調整を行うことができます。適切なポリシーが設定された後に enforcing モードに戻すことができます。

以下のconfigファイルにSELINUXオプションを修正します。

[root@svr ~]# vi /etc/selinux/config
SELINUX=permissive

変更を適用するには、システムを再起動する必要あります:

[root@svr ~]# reboot

または、システムを再起動せずに現在のセッションで一時的に permissive モードに変更するには、以下のコマンドを使用します

[root@svr ~]# setenforce 0

ファイヤーウォール設定

上の設定は終わってもファイヤーウォールにより、接続が制限されます。次のコマンドでftpサービスを許可します。

[root@svr ~]# firewall-cmd --permanent --zone=public --add-service=ftp
[root@svr ~]# firewall-cmd --reload 

–permanentを入れるとサービスを再起動しても変更事項が保存されます。入れないと再起動時、修正前の設定に戻ります。

タイトルとURLをコピーしました