1.准备工作
先vim/etc/sysconfig/selinux
改成disabled
SELINUX=disabled
getenforce 查看状态
reboot重启
2.报错id分析
550 | 服务不允许 |
---|---|
530 | 认证失败 |
500 | 服务过大 |
553 | 服务权限拒绝操作 |
3.ftp的定义
ftp:// ##文件传输协议
ftp服务的基本信息
软件安装包: vsftpd
默认发布目录: /var/ftp
协议接口: 21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
4.ftp协议提供的软件
在rhel7中:
vsftpd
5.部署ftp服务
*yum install vsftpd -y 下载vsftpd
*systemctl start vsftpd 开启服务
*systemctl enable vsftpd 开机自启服务
*firewall-config 防火墙开启伪装功能
*firewall-cmd --list-all 查看防火强开启的服务
6.vim /etc/vsftpd/vsftpd.conf
匿名用户
anonymous_enable =YES|NO ##匿名用户是否可以登陆
本地用户
local_enable=YES|NO ##本地用户是否可以登陆
write_enable=YES|NO ##ftp是否对登陆用户可写
(1)匿名用户上传
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 755 /var/ftp/pub
(2)匿名用户家目录修改
anon_root=/direction
在虚拟机中建立westos文件夹,在里面touch westos1…3
然后anon_root=/westos
在真机lftp 172.25.254.215
新建一个目录/westos,在里面建立3个文件
修改匿名用户家目录
就能看到被修改后家目录里的东西了
(3)匿名用户上传文件默认权限修改
anon_umask=xxx
默认建立文件的权限为600
修改配置文件
重启服务之后
发现上传文件权限已被修改
(4)匿名用户建立目录
anon_mkdir_write_enable=YES|NO
正常情况下不允许匿名用户建立目录,修改权限之后就可以
vim /etc/vsftpd/vsftpd.conf
(5)匿名用户下载
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
(6)匿名用户删除
anon_other_write_enable=YES|NO
(7)匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
chown_upload_mode=0644
新建用户baba
查看用户的uid
修改配置文件
重启服务
上传文件之后发现文件的所有人是baba(uid为1001)
(8)最大上传速率
anon_max_rate=102400
截取一段文件
dd if=/dev/zero of=bigfile bs=1M count=1000
lftp 172.25.254.215
put bigfile
发现平均上传速率为28M/s左右
删除bigfile
修改配置文件,设置最大上传速率
重启服务
看到上传速率只有100k/s左右
ctrl+c结束进程并删除bigfile
(9)最大链接数
max_clients=2
修改配置文件
重启服务
同时用多个ip去lftp登陆115主机
当第三个主机去连接时就会报错
ftp的家目录不能有写权限
看到500报错去掉w权限即可
黑白名单的确认取决于默认功能是拒绝还是允许
(10)本地用户家目录修改
local_root=/dircetory
新建目录/westos
修改配置文件
重启服务
就能看见/westos目录下面的文件了
(11)本地用户上传文件权限
local_umask=xxx
更改配置文件
重启服务
看到文件权限已经被修改
(12)限制本地用户浏览目录
所有用户被锁定在自己的家目录中
chroot_local_user=YES|NO
NO表示可以访问
YES表示不能访问
chmod ugo-w /home/*
<1>chroot_local_user=NO
<2>chroot_local_user=YES
就能看到student用户已经被锁在自己的家目录
<3>用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
分别用student用户和baba用户登陆
黑名单里的用户无法去到其他目录
<4>用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
编辑白名单
分别用student用户和baba用户登陆,发现白名单中的用户可以去到其他目录
不在白名单中的用户无法去到其他目录
(13)限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
编辑用户黑名单
可以看到黑名单中的用户无法使用lftp服务
(14)用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
注:黑名单高于白名单
(15)ftp虚拟用户的设定
<1>创建虚拟帐号身份
vim /etc/vsftpd/westosfile ##文件名任意
westos1
222
westos2
222
westos3
222
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db 以hash加密westosfile文件
vim /etc/pam.d/westos ##文件名任意
account(帐号) | required(通过) | pam_userdb.so(认证方式) | db=/etc/vsftpd/westosfile(帐号所在文件) |
---|---|---|---|
auth(密码) | required(通过) | pam_userdb.so(认证方式) | db=/etc/vsftpd/westosfile(密码所在文件,因为会默认加.db,所以文件后不写) |
vim/etc/vsftpd/vsftpd.conf
pam_service_name=westos
guest_enable=YES
<2>虚拟帐号身份认定
guest_username=ftp
此时在真机中lftp 172.25.254.215 -u westos1
就能看到westos以ftp用户的身份访问虚拟机,也可以看到/pub目录
然而系统中并不存在westos1用户
<3>虚拟用户在自己家目录
mkdir /var/ftpuser/westos{1…3} -p
vim /etc/vsftpd/vsftpd.conf
local_root=/var/ftpuser/$ USER 指定虚拟用户登陆时进入自己的家目录
user_sub_token=$USER
systemctl restart vsftpd
重启服务
mkdir /var/ftpuser/westos{1…3}/pub
mkdir /var/ftpuser/westos1/westos1file
mkdir /var/ftpuser/westos2/westos2file
mkdir /var/ftpuser/westos3/westos3file
<4>虚拟帐号配置独立
让指定的虚拟用户可以上传文件
修改文件权限和所有组
chmod 775 /var/ftpuser/westos*/pub
chgrp ftp /var/ftpuser/westos*/pub
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/iserconf/
vim /etc/vsftpd/userconf/westos1
用虚拟用户登陆
可以看到指定的虚拟用户westos1可以上传,而未指定的其他虚拟用户不能上传。