実践Linux
CentOS8 CentOS8 目次へ TOP(HOME)へ
FTPサーバー(vsftpd) 2020年7月
FTPサーバー(vsftpd 3.0.3-28)
●設定ファイル /etc/vsftpd/vsftpd.conf
anonymous_enable=NO 匿名ユーザはアクセス禁止にする。
以下、#をはずす。
ascii_upload_enable=YES アスキーモードでのアップロード・ダウンロード許可。
ascii_download_enable=YES
chroot_local_user=YES ローカルユーザーはchroot有効。
追記 allow_writeable_chroot=YES
あとはほぼ変更なしで使えるようになっている。詳細は後述。
TCP Wrappersについて:TCP WrappersはRHEL7の段階で既に非推奨で、RHEL8では使用できなくなった。
●vsftpdサービスの起動
# systemctl --type=service list-unit-files インストールされたユニット一覧
# systemctl --type=service list-units 実行中のユニット一覧
# systemctl start vsftpd スタート
# systemctl restart vsftpd 再スタート
# systemctl enable vsftpd 起動時有効化
●SElinux
booleanのポリシーは、 # getsebool -a | grep ftpで調べておく。
ポリシーftp_home_dirがOFFでも、なぜかホ−ムにアクセスできる。
ホ−ムにアクセスできず、ONにする場合は、
# setsebool -P ftp_home_dir 1
●firewalldの設定
trustedゾーンに対しては、必要ない。
externalゾーンに対しては、「Vsftpd Over SSL/TLS」のところで後述する。
/etc/vsftpd/vsftpd.confの主な設定項目
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES Activeモード時のデータコネクションポートを20番に固定するかどうかの設定。デフォルトのNOでは任意のポートが使用される。20番にしないと、クライアント側環境によってはデータ転送ができない可能性もある。
xferlog_std_format=YES
ascii_upload_enable=YES #をはずす=アスキーモードでのアップロード・ダウンロード許可。
ascii_download_enable=YES
chroot_local_user=YES #をはずす=ローカルユーザーは全てchrootを有効にする。
allow_writeable_chroot=YES 追記。chrootを有効にすると、ホームディレクトリに書き込み権限のあるユーザがログイン出来なくなるので、ログイン出来るようにする。
#chroot_list_enable=YES 下のリストファイルを利用する場合。
#chroot_list_file=/etc/vsftpd/chroot_list
上のchroot_local_user=YESの設定がないとchrootするユーザーリストとなるが、
上の設定があると逆転してchrootしない(全て覗ける)ユーザーリストとなる。
#ls_recurse_enable=YES ディレクトリを丸ごと削除できるようにする。
listen=NO YESだとipv4のみスタンドアローン
listen_ipv6=YES ipv4とipv6の両方がスタンドアローン
pam_service_name=vsftpd
userlist_enable=YES ←/etc/vsftpd/user_listは接続拒否ユーザーリスト/ftpusersは認証後拒否/他は許可
#userlist_enable=NO →user_listを使用しない/ftpusersは拒否ユーザーとなる
firewalledとFTPパッシブモードについて
FTPには、データ転送に使用するポートと接続方法の違いによって、アクティブFTPとパッシブFTPがある。
アクティブFTP: 昔からある方法で、サーバからクライアントに対してデータコネクション確立を行なう。 FTPの制御(コマンドとレスポンス)に21番ポートを使用し、FTPのデータ転送(lsコマンドの結果、ファイルのアップロード・ダウンロード)に20番ポートを使用する。
パッシブFTP: クライアントからサーバに対してデータコネクション確立を行なう。FTPの制御に21番ポートを使用し、FTPのデータ転送に任意のポートを使用する。
FTPでクライアントからサーバにファイルを送信するには、通常のモードではクライアントからサーバに接続した後、サーバからクライアントにデータ通信用の接続要求を行い、このコネクションを利用してファイル送信を行う。この方式だと、クライアントがファイアウォールの内側にあり、外部から直に接続要求を行うことができないような環境ではファイルの送信が行えない。こうした場合に利用するのがパッシブモードである。
firewalledに「nf_conntrack_ftp」モジュールを組み込んでおくと、データコネクションやパッシブモードの対応を自動で行ってくれる。
ftp.xml(/usr/lib/firewalled/services)をみると、すでに組み込まれていることがわかる。
TOP(HOME)へ