環境
uname -a Linux www 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u2 (2017-06-26) x86_64 GNU/Linux
いつものように、chrootしてバーチャルユーザーでのログイン。
症状1.
vsftpでつなごうとするとConnection Refusedされる。
ローカルからFTPコマンドでたたいても同じ。
$ ftp ftp> open localhost ftp: connect to address ::1: Connection refused Trying 127.0.0.1... ftp: connect: Connection refused
チェック項目
こんな感じで調べて何とかなった。
modprobeでモジュールチェック
# lsmod|grep ftp nf_nat_ftp 16384 0 nf_nat 28672 1 nf_nat_ftp nf_conntrack_ftp 20480 1 nf_nat_ftp nf_conntrack 114688 5 nf_conntrack_ftp,nf_conntrack_ipv4,nf_nat_ftp,xt_conntrack,nf_nat
これがなかったら以下を入れておく。
# modprobe nf_conntrack_ftp # modprobe nf_nat_ftp
バーチャルユーザーのshell
とりあえずバーチャルユーザーの割り当てにはftp_userというユーザーを作ってたんだけど、これのshellが/usr/sbin/nologinだと動作しない。
vsftpd.conf
この2つは両立させられないらしいので、ipv6は使わないようにする。
listen=YES listen_ipv6=NO
ホームディレクトリを555パーミッションに設定
こんな感じでバーチャルユーザーを設定していると、
# more /etc/vsftpd.d/vsftpd_user_conf/vftpuser guest_username=vftpuser local_root=/home/example
/home/exampleのパーミッションを555にしなければならない。
が、最近のVSFTPDだと
allow_writeable_chroot=YES
で行ける。
パッシブモードで引っかかる
このあたりでお勉強
FTPのアクティブモードとパッシブモード + vsftpdでの設定方法|A Day In The Boy's Life
centos - How to configure vsftpd to work with passive mode - Server Fault
どうもポートを開放しないとダメっぽい。あれー、今まで動いてたのになぁ・・・。
ということで、vsftpd.confに以下を記述。
pasv_enable=YES pasv_min_port=61050 pasv_max_port=61100
で、iptablesをこんな感じで。192.168.xxx.xxxは自ホスト。
iptables -A INPUT -p tcp -s 0.0.0.0/0 -d 192.168.xxx.xxx --dport 61050:61100 -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.xxx.xxx --sport 61050:61100 -d 0.0.0.0/0 -j ACCEPT
毎回何かしら引っかかるね。。。