阿里云ubuntu配置FTP服务器
FTP原理
- 主动FTP:
- 命令连接:客户端 >1023端口 -> 服务器 21端口
- 数据连接:客户端 >1023端口 <- 服务器 20端口
- 被动FTP:
- 命令连接:客户端 >1023端口 -> 服务器 21端口
- 数据连接:客户端 >1023端口 -> 服务器 >1023端口
教程
配置步骤
- apt-get install vsftpd
- ufw status //查看防火墙设置,用如下命令设置
- sudo ufw allow 20/tcp //ftp端口
- sudo ufw allow 21/tcp //ftp端口
- sudo ufw allow 990/tcp //TLS端口
- sudo ufw allow 40000:50000/tcp //设置配置文件
- sudo ufw status
- adduser dangyuan //pswd:dangyuan
- 设置fpt用户的主目录
- sudo mkdir /home/dangyuan/ftp
- sudo chown nobody:nogroup /home/dangyuan/ftp
- sudo chmod a-w /home/dangyuan/ftp
- 设置可以上传文件的文件夹:
- sudo mkdir /home/dangyuan/ftp/files
- sudo chown dangyuan:dangyuan /home/dangyuan/ftp/files
- 测试文件
-
echo “vsftpd test file” sudo tee /home/dangyuan/ftp/files/test.txt
-
- vi /etc/vsftpd.conf
- write_enable=YES
- chroot_local_user=YES
- user_sub_token=$USER
- local_root=/home/$USER/ftp
- pasv_min_port=40000
- pasv_max_port=50000
- userlist_enable=YES
- userlist_file=/etc/vsftpd.userlist
- userlist_deny=NO
- pam_service_name=ftp/svftpd //使用ftp服务或者sftp服务
- chroot_local_user=YES
- anon_root=/var/www/html/
-
echo “dangyuan” sudo tee -a /etc/vsftpd.userlist - systemctl restart vsftpd
- 测试ftp -p 101.132.100.213
- 设置防火墙
- iptables -A INPUT -p tcp –dport 21 -j ACCEPT
- iptables -A INPUT -p tcp –dport 20 -j ACCEPT
- iptables -A INPUT -p tcp –dport 40000:50000 -j ACCEPT
- 遇到问题,测试抓包
- tcpdump -n -i eth0 host 101.132.100.213 and 218.193.183.86
- tcpdump host 101.132.100.213 and 218.193.183.86
- ss -naltd
- 结论:ftp客户端需要设置为FTP被动模式
- 设置虚拟用户
- apt-get install db_util
- db_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db
- chmod 600 /etc/vsftpd_login.db
- vi /etc/pam.d/vsftpd
- 加入文件开头两行
- auth sufficient pam_userdb.so db=/etc/vsftpd_login
- account sufficient pam_userdb.so db=/etc/vsftpd_login
- 值得注意的是,每次新增账号,需要在/etc/vsftpd.userlist中加入对应的用户名