树莓派搭建 VSFTP 服务器

一:首先购买树莓派,安装好硬件,系统,软件,更新镜像源,时区设置,静态IP,插好网线(详情见第一条博客)

二: 下载安装ftp服务器

       


1: sudo apt-get update     //首先更新
   

2: sudo apt-get install vsftpd    //其次安装

三: 修改VSFTP的配置文件   /etc/vsftpd.conf



1: sudo nano /etc/vsftpd.conf      //进入VSFTP的配置文件


2://将配置文件修改为如下所示
        listen = NO  //以服务方式运行
        anonymous_enable=YES     //是否允许匿名帐号
        local_enable=YES  是否允许本地帐号
        write_enable=YES  是否允许使用任何可以修改文件系统的FTP的指令
        local_umask=022 本用户的文件掩码
        anon_upload_enable=YES是否允许匿名用户上传文件
        anon_mkdir_write_enable=YES是否允许匿名用户创建新目录

        dirmessage_enable=YES 是否显示欢迎信息
        xferlog_enable=YES 开启日记功能
        connect_from_port_20=YES 设定ftp服务数据端口
        chown_uploads=YES是否允许修改上传文件的属主
        chown_username=whoever如果允许,输入该属主的用户名
        xferlog_file=/var/log/xferlog日志文件位置
        xferlog_std_format=YES 使用标准的日志格式
        idle_session_timeout=600空闲连接超时
        data_connection_timeout=120数据传输超时
        nopriv_user=ftpsecure当服务器运行于最底层时使用的用户名
        async_abor_enable=YES是否允许使用\"async ABOR\"命令,一般不用,容易出问题
        ascii_upload_enable=YES是否可用ASCII 模式上传。默认值为NO
        ascii_download_enable=YES是否可用ASCII 模式下载。默认值为NO
        ftpd_banner=Welcome to blah FTP service   login时显示欢迎信息
        deny_email_enable=YES如果匿名用户需要密码,那么使用banned_email_file里面的电子邮件地址的用户不能登录
        banned_email_file=/etc/vsftpd/banned_emails禁止使用匿名用户登陆时作为密码的电子邮件地址

        userlist_enable=YES 若启用此选项,userlist_deny选项才被启动

        //关于将用户是否限制在主目录,见下表格
        chroot_local_user=YES               
        chroot_list_enable=YES
        chroot_list_file=/etc/vsftpd/chroot_list

        //即为外接硬盘挂载位置,也为数据存储位置
        local_root=/mnt/data/pub   表示本地用户登录后的根目录
        anon_root=/var/www/html  即匿名用户访问的主目录


        //ftp默认主目录权限设置不对,报这个错误是因为/mnt/data设置权限为777,/mnt/data/pub设置        权限也为777。正确的权限设置是将/mnt/data权限设置为755,chmod 755 /mnt/data/后重启ftp服务就ok了

      

     

 修改完后ctrl +o 保存,ctrl + x 退出

四:重新启动VSftp服务

      

sudo service vsftpd restart   //重启命令

sudo systemctl restart vsftpd


sudo service vsftpd start     //启动命令

sudo service vsftpd stop      //停止命令

五: 挂载三星固态硬盘作为ftp大数据存储盘

     

1 查看挂载情况 
sudo  df -h  


2 设置开机自动挂载固态硬盘到 data下

sudo nano /etc/fstab

/dev/sda1 /mnt/data   ext4    rw,defaults 0   0



3 修改所属组合权限,注意:NTFS的格式的硬盘不能修改owner权限

sudo chown -R  ftpUserName:ftpUserName /mnt/data/

#注意这里一定不能添加w权限,否则client登录的时候会被拒绝,这里坑了很久
sudo chmod 555 /mnt/data/

六: 安装UFW防火墙

   


1 安装UFW防火墙

sudo apt-get install ufw


2 开启防火墙

$ sudo ufw enable
   Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
    Firewall is active and enabled on system startup
   //记得输入Y,否则SSH会断开


sudo ufw default deny  //开启了防火墙并随系统启动同时关闭所有外部对本机的访问(本机访问外部正常)



3 关闭防火墙

sudo ufw disable


4 查看防火墙状态

sudo ufw status


5 开启、关闭端口,添加规则

sudo ufw allow 22/tcp
//记得优先添加SSH允许的端口访问,否则下一次连接不上


sudo ufw allow 80/tcp   开放tcp协议80端口
sudo ufw allow 80      允许外部访问80端口
sudo ufw delete allow 80 禁止外部访问80 端口
sudo ufw allow 10000:11000/tcp  开放10000-11000端口,需指定协议(tcp/udp)
sudo ufw allow from 192.168.1.110  允许192.168.1.110的访问,不限端口、协议

ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 要拒绝所有的流量从TCP的10.0.0.0/8 到端口22的地址192.168.0.1

sudo ufw allow from 10.0.0.0/8  可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级)
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16

七: 开启UFW防火墙后,除了将22端口开放后,20,21 端口也要记得开放

      被动模式下(PASV)如果客户端依旧访问不到服务器,修改/etc/vsfptd.conf配置文件:
sudo nano  etc/vsfptd.conf
                1    connect_from_port_20=YES
                        新加:
                                pasv_enable=YES
                                pasv_min_port=10000
                                pasv_max_port=20000

               2 修改ufw防火墙:
                                ufw allow proto tcp from any to any port 10000:20000


                3 重启防火墙  ufw reload

                   重启vsftpd服务 sudo systemctl restart vsftpd.service

      内网实测下载速度如下:8M/S

 

八:新建专门的FTP登录用户

       例如:新建名为 ftpName 的目录为/mnt/data下的用户

1,新建用户


sudo useradd -d /mnt/data -s /sbin/nologin ftpName

2 修改用户密码


sudo passwd ftpName

3. 确认FTP黑名单里无此用户名


sudo nano /etc/ftpuser

4.确认白名单里及时增添此用户名


sudo nano /etc/vsftpd.user_list

5. 禁锢FTP用户到自己主目录之下

   即为设置步骤三中的chroot_local_user,chroot_list_enable, chroot_list_file的值和属性即可。

6. 设置权限和所属组,所属用户


sudo chown ftpName:ftpName /mnt/data

sudo chmod 555 /mnt/data

   7. 如果使用此FTP用户名依旧无法登陆则考虑修改 /etx/shells  里面的值

    系统某些服务在运行过程中,回去检查用户使用的shells,而这些shell查询就是借助/etc/shells这个文件

     sudo nano /etc/shells

    在最后一行添加  /sbin/nologin   如下图:存档,退出

   

 

  最后重启vsftpd 服务器

  这一步参考的博客如下:

新建的FTP用户无法登陆icon-default.png?t=M276https://blog.csdn.net/weixin_44901564/article/details/108059263

九:开放外网访问 

注册购买NAT,花生壳等内网穿透软件进行内网穿透,端口映射

Ok ,赶紧新创建一个FTP用户名,指定家目录和权限,并登陆享用吧!!!

以上是结合一些博主和自己实战经验所写,如有不足之处,望各位大佬和网友帮忙指正修改,谢谢大家。

参考博客文章如下:vsftpd 配置:chroot_local_user与chroot_list_enable详解https://blog.csdn.net/bluishglc/article/details/42398811      修改vsftpd的默认根目录https://blog.csdn.net/yifanSJ/article/details/72855484
安装vsftpd服务,ftp连接后无法展示目录,连接失败的问题https://blog.csdn.net/chemiu0350/article/details/100969868vsftp 开启ufw 后 FTP访问不到https://blog.51cto.com/wujianwei/2069037

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值