vsftpd服务
一 什么是ftp
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输
FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机
二 安装ftp
vim /etc/sysconfig/selinux
修改
SELINUX=disable
查看linux版本
[[email protected] ~]# hostnamectl
为linux 7.0
yum install vsftpd -y ##安装vsftpd
systemctl start vsftpd
systemctl stop firewalld
systemctl enable vsftpd
开启vsftpd开机自启服务,关闭火墙
如果不想关闭火墙,也可以让火墙关闭对ftp 服务的限制
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
开启火墙对 ftp 服务的限制
ftp://ip ##浏览器能登陆并且显示,表示安装成功
可以看到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
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 ##重启服务
将 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
3) 匿名用户家目录修改
anon_root=/direcotry
可以看到 lftp 之后,ls 进入的是指定的 目录 /cat
4) 匿名用户上传文件默认权限修改
anon_umask=xxx
可以看到匿名用户上传文件权限的更改
5) 匿名用户建立目录
anon_mkdir_write_enable=YES|NO
可以看到目录 cat 的建立
6) 匿名用户下载
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
7) 匿名用户删除和重命名
anon_other_write_enable=YES|NO ##YES为可作
8) 匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
9) 最大上传速率
anon_max_rate=102400(100k)
10) 最大链接数
max_clients=2(允许2人登陆自己的ftp)
四 本地用户设定
1)
local_enable=YES|NO ##本地用户登陆限制
可以看到本地用户 student 被拒绝访问
write_enable=YES|NO ##本地用户写权限限制
2) 本地用户家目录修改
local_root=/directory
3) 本地用户上传文件权限
local_umask=xxx
4) 限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
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
3) db_load -T -t hash -f /etc/vsftpd/redhat redhat.db
4) vim /etc/pam.d/redhat ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/redhat
auth required pam_userdb.so db=/etc/vsftpd/redhat
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 安全认证
mkdir /ftphome/user1/user1dir -p
mkdir /ftphome/user2/user2dir -p
8) 虚拟帐号配置独立
mkdir /ftpuserhome
chgrp ftpuser /ftphome/ -R
chmod g+s(775) /ftphome/ftpuser1/user1dir
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
systemctl restart vsftpd
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/ftpuser1
anon_upload_enable=YES
在此文件中设定配置文件中的所有参数,此文件的优先级高