実践Linux
CentOS5/6.5 CentOS5/6.5 目次へ TOP(HOME)へ
FTPサーバー(CentOS 6.5) 2014年9月
●FTPサーバー(vsftpd)
・設定ファイル /etc/vsftpd/vsftpd.conf
以下、#をはずす。
ascii_upload_enable=YES アスキーモードでのアップロード・ダウンロード許可。
ascii_download_enable=YES
chroot_local_user=YES ローカルユーザーはchroot有効。
あとはほぼ変更なしで使えるようになっている。
ただし、 tcp_wrappers = YES となっているので、/etc/hosts.allow に許可を出しておく必要がある。
また、 listen = YES なのでスタンドアローン=サービスの起動が必要。(xinetd経由だとNOにしておく。この場合は、常時アクティブではなく接続ごとの起動となる。当然サービスは停止しておく。)
・/etc/hosts.allow vsftpd: 192.168.7. 等。
(ここではALL: 192.168.7. があるのでなにもしない。)
・vsftpdサービスの起動。
・SElinux
booleanのポリシーは、 # getsebool -a | grep ftpで調べておく。
ポリシーftp_home_dirをONにして、ホ−ムにアクセスできるようにする。
# setsebool -P ftp_home_dir 1
しかし、これだけでは /var/www にはアクセスできないことが判明(CentOS5では大丈夫だったが)。
# setsebool -P allow_ftpd_full_access 1 (多少危険な感じもするが)
・iptables ftp関連モジュールの設定
必要に応じて、サーバ側に向かってくるtcp/21の通信を許可しておく。
ftp関連モジュールの設定
/etc/sysconfig/iptables-config
IPTABLES_MODULES="nf_conntrack_ftp nf_nat_ftp" IPTABLES_MODULES=に追加
iptalbesを再起動し、ロードされているモジュールを確認。
# lsmod | grep ftp
iptablesとFTPパッシブモード
iptablesに「ip_conntrack_ftp」モジュールを組み込んでおくと、データコネクションやパッシブモードの対応を自動で行ってくれる。
FTPでクライアントからサーバにファイルを送信するには、通常のモードではクライアントからサーバに接続した後、サーバからクライアントにデータ通信用の接続要求を行い、このコネクションを利用してファイル送信を行う。この方式だと、クライアントがファイアウォールの内側にあり、外部から直に接続要求を行うことができないような環境ではファイルの送信が行えない。こうした場合に利用するのがパッシブモードである。
サーバ側に向かってくるtcp/21の通信を許可しておく。データ通信は「ip_conntrack_ftp」モジュールが解決してくれる。データコネクションのtcp/20番ポートもip_conntrack_ftpのステートフルパケットインスペクションにより、iptablesが開けてくれる。パッシブモード用のポートもvsftpd.cofn側で固定する必要もなく、iptablesで明示する必要もない。
/etc/vsftpd/vsftpd.confの主な設定項目
local_enable=YES
write_enable=YES
local_umask=022
ascii_upload_enable=YES アスキーモードでのアップロード・ダウンロード許可。
ascii_download_enable=YES
chroot_local_user=YES ローカルユーザーは全てchrootを有効にする。
#local_root=public_html さらにchrootするディレクトリを指定する場合。
#chroot_list_enable=YES 下のリストファイルを利用する場合。
#chroot_list_file=/etc/vsftpd/chroot_list
上のchroot_local_user=YESの設定がないとchrootするユーザーリストとなるが、上の設定があると逆転してchrootしない(全て覗ける)ユーザーリストとなる。
#ls_recurse_enable=YES ディレクトリを丸ごと削除できるようにする。
userlist_enable=YES ←/etc/vsftpd/user_listは接続拒否ユーザーリスト/ftpusersは認証後拒否/他は許可
userlist_enable=YESのとき、userlist_deny=YES(デフォルト)なら、user_listは拒否/ftpusersは認証後拒否/他は許可。userlist_deny=NOなら、user_listのみ許可/ftpusersは認証エラー/他は拒否)
userlist_enable=NO →user_listを使用しない/ftpusersは拒否ユーザーとなる
tcp_wrappers=YES
●公開する場合(暗号化通信なしでは危険!)
/etc/hosts.allow vsftpd: All 絞り込める場合は、絞り込む。
/etc/sysconfig/iptables -A INPUT -d 333.333.333.210 -p tcp -m tcp --dport
20:21 -j ACCEPT
-s で絞り込める場合は、絞り込む。
InternetExplorerでアクセスする場合 ftp://ユーザー:パスワード@333.333.333.210
●SSL/TLSを利用した暗号化通信については、SSL/TLSのページを参照してください。
TOP(HOME)へ