vsftpd服务

一  什么是ftp

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输

FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机

二  安装ftp

vim /etc/sysconfig/selinux
修改
SELINUX=disable

查看linux版本

[[email protected] ~]# hostnamectl
  

vsftpd服务

为linux 7.0

yum install vsftpd  -y      ##安装vsftpd

vsftpd服务

systemctl start vsftpd
systemctl stop firewalld
systemctl enable vsftpd

vsftpd服务

开启vsftpd开机自启服务,关闭火墙

如果不想关闭火墙,也可以让火墙关闭对ftp 服务的限制

firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload

vsftpd服务

开启火墙对 ftp 服务的限制

ftp://ip                ##浏览器能登陆并且显示,表示安装成功

vsftpd服务

可以看到vsftp服务安装成功

三  vsftpd服务的配置参数

1) ftp的基本信息
访问数据端口:21
数据传输端口:>1024随机端口
[[email protected] ~]# netstat -antlupe | grep vsftpd
tcp6       0      0 :::21                   :::*                    LISTEN      0          47610      3199/vsftpd
默认发布目录:/var/ftp
访问方式
lftp 172.25.254.119        ##匿名登陆    --> /var/ftp
lftp 172.25.254.119 -u student    ##用户登陆    --> /home/student
配置文件:
    /etc/vsftpd/vsftpd.conf
[[email protected] ~]# rpm  -qc  vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

vsftpd服务

2) ftp的安全部署
anonymous_enable=YES|NO    #匿名用户是否可以登陆
local_enable=YES|NO    #本地用户是否可以登陆
write_enable=YES|NO    #本地用户十分可写
每一次修改配置文件,都需要重新启用
systemctl restart vsftpd

常见错误:
530    认证失败
550    服务本身不支持
500    用户权限过大
553    用户权限过小

3) 匿名用户设定

anonymous_enable=YES|NO        ##匿名用户登陆限制
systemctl restart vsftpd    ##重启服务

vsftpd服务

将 anonymous_enable=NO  开启 ,匿名用户不能登陆,可以看到开始匿名登陆是失败的,切换到student 用户才成功访问

4) 匿名用户上传
vim /etc/vsftpd/vsftpd.conf
 anon_upload_enable=YES  (29行)
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub

vsftpd服务

3) 匿名用户家目录修改
anon_root=/direcotry

vsftpd服务

可以看到 lftp 之后,ls 进入的是指定的 目录 /cat

4) 匿名用户上传文件默认权限修改
anon_umask=xxx

vsftpd服务

可以看到匿名用户上传文件权限的更改

5) 匿名用户建立目录
anon_mkdir_write_enable=YES|NO   

vsftpd服务

可以看到目录 cat 的建立

6) 匿名用户下载
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载

vsftpd服务

7) 匿名用户删除和重命名
anon_other_write_enable=YES|NO    ##YES为可作

vsftpd服务

8) 匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student

vsftpd服务

9) 最大上传速率
anon_max_rate=102400(100k)

10) 最大链接数
max_clients=2(允许2人登陆自己的ftp)

四  本地用户设定
1)

local_enable=YES|NO        ##本地用户登陆限制

vsftpd服务

可以看到本地用户 student 被拒绝访问
write_enable=YES|NO        ##本地用户写权限限制

2) 本地用户家目录修改
local_root=/directory

vsftpd服务

3) 本地用户上传文件权限
local_umask=xxx

4) 限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*

vsftpd服务

5) 用户黑名单建立
chroot_local_user=NO (no为黑)
chroot_list_enable=YES  ##开启用户列表
chroot_list_file=/etc/vsftpd/chroot_list

6) 用户白名单建立
chroot_local_user=YES (yes为白)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

7) 限制本地用户登陆
vim /etc/vsftpd/ftpusers        ##用户黑名单
vim /etc/vsftpd/user_list        ##用户临时黑名单

8) 用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list            ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp

五  ftp虚拟用户的设定

1)创建虚拟帐号身份

2)  vim /etc/vsftpd/redhat    ##文件名称任意
ftpuser1
123
ftpuser2
123

vsftpd服务

3) db_load -T -t hash -f /etc/vsftpd/redhat redhat.db

vsftpd服务

4) vim /etc/pam.d/redhat        ##文件名称任意
account        required    pam_userdb.so    db=/etc/vsftpd/redhat
auth        required    pam_userdb.so    db=/etc/vsftpd/redhat

vsftpd服务

5) vim /etc/vsftpd/vsftpd.conf
pam_service_name=redhat      指定pam配置文件
guest_enable=YES                    启用虚拟帐号支持

6) 虚拟帐号身份指定

guest_username=ftp              映射虚拟用户身份

7) 虚拟帐号家目录独立设定

vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER    对虚拟用户默认末路进行设置
user_sub_token=$USER              安全认证

vsftpd服务

mkdir  /ftphome/user1/user1dir -p
mkdir  /ftphome/user2/user2dir -p

vsftpd服务

8) 虚拟帐号配置独立
mkdir /ftpuserhome
chgrp ftpuser /ftphome/ -R
chmod g+s(775) /ftphome/ftpuser1/user1dir

vsftpd服务

vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
systemctl restart vsftpd
mkdir -p /etc/vsftpd/userconf

vsftpd服务

vim /etc/vsftpd/userconf/ftpuser1

vsftpd服务

anon_upload_enable=YES
在此文件中设定配置文件中的所有参数,此文件的优先级高