阿里云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中加入对应的用户名
