一、什么是ftp
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
二、ftp的启用
1.关闭selinux
vim /etc/sysconfig/selinux ##编辑selinux配置文件
SELINUX=disable ##设置关闭selinux
reboot ##重起生效
2.安装ftp服务和lftp工具
yum install vsftpd lftp -y
systemctl start vsftpd
systemctl enable vsftpd
3.配置防火墙
firewall-cmd --permanent --add-service=ftp ##添加ftp服务到火墙白名单(不关闭防火墙)
firewall-cmd --reload ##重新加载防火墙配置
4.使用ftp访问主机
lftp 172.25.254.215
三、ftp的基本信息
访问数据端口:21
数据传输端口:大于1024的随机端口
默认发布目录:/var/ftp/
netstat -antlupe | grep vsftpd ##查看vsftpd服务所用端口信息
访问方式:
lftp 172.25.254.115 ##匿名登陆 默认目录/var/ftp
lftp 172.25.254.115 -u student ##用户登录 默认目录/home/student
配置文件 /etc/vsftpd/vsftpd.conf
四、ftp的安全部署
vim /etc/vsftpd/vsftpd.conf
12行 匿名用户登陆设置
anonymous_enable=YES|NO ##匿名用户是否可以登陆
16行 本地用户登陆设置
local_enable=YES|NO ##本地用户是否可以登陆
19行 本地用户w设置
write_enable=YES|NO ##本地用户是否可写
systemctl restart vsftpd ##重启服务,使配置生效
注意:每次修改完ftp配置文件后,都需要重新启动服务
操作过程中常见报错:
530 ##报错表示认证失败
550 ##服务本身不允许这样做
500 ##权限过大
553 ##服务器上的文件系统不允许写
五、匿名用户
1.匿名用户可上传
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
vim /etc/vsftpd/vsftpd.conf
29行 anon_upload_enable=YES
systemctl restart vsftpd
2.匿名用户可下载
默认不能下载不可读的文件
添加 anon_world_readable_only=NO 匿名用户可下载
3.匿名用户建立目录
34行 anon_mkdir_write_enable=YES 匿名用户可以新建目录
4.匿名用户是否可以删除和重命名
添加 anon_other_write_enable=YES 匿名用户可以删除,重命名
5.匿名用户家目录修改
anon_root=dir
6.匿名用户更改mask值
默认上传文件权限 600 建立目录权限700
anon_umask=022
改之前如下图所示:
更改后如下图所示:
7.匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student 匿名用户使用student身份进行操作
8.最大上传速率
anon_max_rate=102400(单位为字节)
9.最大链接数
max_clients=2
六、本地用户
1.本地用户家目录修改
local_root=/dir
2.本地用户上传文件权限mask
local_umask=033
3.限制本地用户浏览/目录
本地用户访问可一切换到/目录,这样很不安全,我们可以限制本地用户浏览/目录
chroot_local_user=YES
chmod u-w /home/* ##减小目录权限,否则会出现权限过大的500报错
1)用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
2)用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list ##白名单建立后黑名单失效,且黑名单文件变为白名单文件
4.限制本地用户登陆
1)用户黑名单设定
vim /etc/vsftpd/ftpusers #用户永久黑名单
vim /etc/vsftpd/user_list #用户临时黑名单
2)用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list #参数设定,此文件变为用户白名单,只在名单中出现的用户可以登陆ftp(但是如果在名单中出现的用户也在永久黑名单中出现,那么该用户无法登录)
七、ftp虚拟用户的设定
1.虚拟用户的作用
虚拟用户不是本地用户,无需占用大量主机空间,并且不能对系统进行修改,提高了系统安全性
2.创建虚拟帐号身份
vim /etc/vsftpd/westosfile ##文件名称任意
user1
111
user2
222
user3
333
注意:帐号密码后面均不能添加空格
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db ##采用hash加密方式给westosfile加密
vim /etc/pam.d/westos
auth required pam_userdb.so db=/etc/vsftpd/westosfile
account required pam_userdb.so db=/etc/vsftpd/westosfile
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos ##采用ftp方式访问时会读取westos文件
guest_enable=YES
3.虚拟帐号身份指定
vim /etc/vsftpd/vsftpd.conf
guest_username=ftp
若指定为student用户,则登陆这三个虚拟帐号时将进入student用户家目录
4.虚拟帐号家目录独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
user_sub_token=$USER
mkdir /ftphome/user1/user1dir -p
mkdir /ftphome/user2/user2dir -p
systemctl restart vsftpd
5.虚拟帐号配置独立
可分别配置虚拟用户中各个用户的权限
chgrp ftp /ftphome -R
chmod 775 /ftphome/user1/user1dir
chmod 775 /ftphome/user2/user2dir
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/user1 ##在此文件中设定配置文件中的所有参数,此文件的优先级高
anon_mkdir_write_enable=YES