1.ftp的定义
(1)FTP(文件传输协议)
是INTERNET上常用的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法。在REDHAT ENTREPRISE
LINUXX 6中,FTP服务器包法名称为诶VSFTPD,它代表very secure file transferprotocol
damon
服务器名称也称作vsftpd。默认配置文件让ANONYMOUS用户只能下载位于chroot目录中的内容。/var/ftp/这以为着远程FTP客户端能以用户anonymous或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)
(2)ftp协议提供的软件:
在rhel7中是vsftpd
(3)vsftpd配置服务中部分命令的含义
命令 | 含义 |
---|---|
anonymous_enable=YES/NO | 匿名用户是否可以登陆 |
local_enable=YES/NO | 本地用户是否可以登陆 |
write_enable=YES/NO | ftp是否可以对登陆用户可写 |
anon_upload_enable=YES | 匿名用户可以上传文件 |
anon_root=/westos | 匿名用户家目录的修改 |
anon_umask=022 | 匿名用户上传文件时修改默认权限 |
anon_world_readable_only=NO | 匿名用户的下载,NO表示可以下载,YES表示不可以下载,下载是一个写的过程 |
anon_other_write_enable=YES | 匿名用户可以删除文件 |
anon_mkdir_write_enable=YES | 匿名用户可以创建目录 |
chown_uploads=YES,chown_username=hello,chown_upload_mode=0644 | 匿名用户使用的用户身份的修改(新上传的文件的uid时新设置的用户uid,而权限也是新设置用户的文件权限644) |
anon_max_rate=102400 | 最大上传速率为100k左右 |
max_clients=1 | 设置最大连接数 |
write_enable=YES | 本地用户可以上传文件 |
local_umask=022 | 本地用户上传文件权限 |
local_root=/westos | 设置本地用户的家目录 |
chroot_local_user=YES,chroot_list_enable=YES(设置名单可用),chroot_list_file=/etc/vsftpd/chroot_list(名单的文件为/etc/vsftpd/chroot_list) | 限制本地用户浏览“/”目录 |
chroot_local_user=YES | 用户白名单的建立 |
chroot_local_user=NO | 用户黑名单的建立 |
userlist_enable=YES(表示启用名单)uaerlist_deny=NO(若是NO表示名单是白名单,若是YES表示名单是黑名单 | 建立临时黑白名单 |
guest_enable=YES,guest_username=ftp,pam_service_name=ftpuser(pam认证的文件名) | 指定虚拟帐号的身份 |
local_root=/var/ftpuserdir/ $USER,user_sub_token= $USER | 指定虚拟帐号访问自己的家目录 |
user_config_dir=/etc/vsftpd/user_config,userlist_enable=YES | 让指定的虚拟用户上传文件 |
2.部署ftp服务
yum install vsftpd -y systemctl start vsftpd systemctl enable vsftpd
firewall-cmd --permanent --add-service=ftp firewall-cmd --reload
[root@ftp-server ftp]# lftp 172.25.254.100 lftp 172.25.254.100:~> ls
drwxr-xr-x 2 0 0 6 Mar 07 2014 pub ftp服务的基本信息 软件安装包:vsftpd
默认发布目录:/var/ftp 协议接口:21/tcp 服务配置文件:/etc/vsftpd/vsftpd.conf vsftpd是
服务端,lftp是客户端
报错id的解析: 500 ##文件系统权限过大 530 ##用户认证失败 550 ##服务本身功能未开放 553 ##本地文件系统权限过小
具体分析:
<1>将selinux的状态设置为disavbled并利用getenforce查看selinux是否生效,会发现没有立即生效,重启后再次查看,成功生效
[root@sshd_server ~]# vim /etc/sysconfig/selinux
[root@sshd_server ~]# getenforce
[root@sshd_server ~]# reboot
[kiosk@foundation66 Desktop]$ ssh [email protected] -X
[root@sshd_server ~]# getenforce
配置的界面为:
<2>进入防火墙配置界面并将ftp设置成防火墙无法阻拦
-1-查看防火墙状态使其防火墙开启
[root@sshd_server ~]# systemctl status firewalld
-2-进入防火墙配置界面
[root@sshd_server ~]# firewall-config
首先点击Permanent,之后点击public中选择ftp,最后点击options中的reload firewalld更新防火墙的设置
-3-查看防火墙中ftp服务是否开启了
[root@sshd_server yum.repos.d]# firewall-cmd --list-all
<3>配置本地yum源
[root@sshd_server ~]# cd /etc/yum.repos.d
[root@sshd_server yum.repos.d]# ls
[root@sshd_server yum.repos.d]# vim rhel_dvd.repo
[root@sshd_server yum.repos.d]# yum clean all ##清除原来的yum缓存信息
[root@sshd_server yum.repos.d]# yum repolist ##列出新的yum源
在文件中更改的内容为:
<4>安装vsftpd和lftp软件并开启vsftpd服务
[root@sshd_server yum.repos.d]# yum install vsftpd lftp -y
[root@sshd_server yum.repos.d]# systemctl start vsftpd
<5>使用真机进行远程连接此虚拟机,发现可以成功读取到虚拟机内的文件
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
……
lftp 172.25.254.123:/> quit
<6>进入虚拟机中切换到/var/ftp目录下,并在此目录下再次建立一个文件名称为westos的文件
[root@sshd_server yum.repos.d]# cd /var/ftp
[root@sshd_server ftp]# ls
[root@sshd_server ftp]# touch westos
[root@sshd_server ftp]# ls
<7>此时用真机进行查看再次远程连接虚拟机,发生成功读取到改变的虚拟机的文件
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
……
lftp 172.25.254.123:/> quit
3.设置匿名用户和本地用户的登陆
注意:每个实验进行完后,都要将其恢复成初始化,否则有可能会影响实验结果
<1>使其匿名用户不能登陆
-1-编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
将配置中的文件中anonymous_enable=YES更改成anonymous_enable=NO
-2-真机用匿名用户登陆并查看,发现可以登陆但无法查看
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
……
lftp 172.25.254.123:~> quit
-3-真机中用本地用户登陆并查看,发现可以登陆并可以查看
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> quit
<2>使其本地用户不能登陆
-1-编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
将配置中的文件中local_enable=YES更改成local_enable=NO
-2-真机用本地用户登陆并查看,发现可以登陆但无法查看
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
……
lftp [email protected]:~> quit
4.对匿名用户的相关设置
vim /etc/vsftpd/vsftpd.conf 匿名用户 anonymous_enable=YES/NO ##匿名用户是否可以登陆
本地用户 local_enable=YES/NO ##本地用户是否可以登陆
write_enable=YES/NO ##ftp是否可以对登陆用户可写
(1)匿名用户上传文件
-1-真机中用匿名用户登陆,在/pub目录下试图上传文件,但发现出现550报错
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> cd /pub
lftp 172.25.254.123:/pub> put /etc/group
lftp 172.25.254.123:/pub> quit
-2-编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
将配置文件中第29行的注释取消掉,使anon_upload_enable=YES生效
-3-再次在真机用匿名登陆并试图上传,550报错没有了,但又出现系统报错553,说明其权限不够
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> cd /pub
lftp 172.25.254.123:/pub> put /etc/group
lftp 172.25.254.123:/pub> quit
-4-更改其/var/ftp/pub目录下的用户组和权限
[root@sshd_server ~]# ll -d /var/ftp/pub
[root@sshd_server ~]# chgrp ftp /var/ftp/pub
[root@sshd_server ~]# chmod 775 /var/ftp/pub
[root@sshd_server ~]# ll -d /var/ftp/pub
-5-在真机用匿名用户登陆并试图上传,发现成功登陆并上传
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> cd /pub
lftp 172.25.254.123:/pub> put /etc/group
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit
(2)匿名用户家目录的修改
-1-编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中增加以下内容:anon_root=/westos
-2-建立目录并在目录中创建几个文件
[root@sshd_server ~]# mkdir /westos
[root@sshd_server ~]# touch /westos/westosfile{1..3}
[root@sshd_server ~]# ls /westos
-3-真机中用匿名用户登陆,发现匿名用户查看到的文件均为新建的文件
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> quit
-4-将vsftpd服务的配置文件修改并使其生效,将加目录变回/var/ftp/
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
将配置文件中anon_root=/westos删除或加注释
-5-真机中用匿名用户登陆,发现查看到的文件又回到原来目录的文件
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> quit
(3)匿名用户上传文件时修改默认权限
-1-在真机中用匿名用户登陆,查看/pub目录下的文件,发现创建的文件默认的权限都是600
[root@sshd_server ~]# lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> cd /pub
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit
-2-编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中增加内容anon_umask=022,使其匿名用户上传文件的权限修改成644
-3-再次在真机中用匿名用户登陆,上传一个新的文件发现新的文件的权限发生了改变
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> put /etc/passwd
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit
(4)匿名用户的下载
-1-在真机中用匿名用户登陆,出现550报错,默认情况下匿名用户不可以下载
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> get adjtime
lftp 172.25.254.123:/pub> quit
-2-编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
增加配置文件中的内容为anon_world_readable_only=NO,NO表示可以下载,YES表示不可以下载,下载是一个写的过程
-3-再次在真机中用匿名用户登陆,发现可以成功下载
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> get passwd
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit
(5)匿名用户的删除
-1-在真机中用匿名用户试图删除文件,会出现550报错
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls /pub
lftp 172.25.254.123:/> rm -rf /pub/passwd ##不显示报错
lftp 172.25.254.123:/> rm /pub/passwd
lftp 172.25.254.123:/> quit
-2-编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中增加以下内容:anon_other_write_enable=YES使其匿名用户可以删除
-3-在真机中用匿名用户试图删除文件,发现设置过后可以成功删除文件
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls /pub
lftp 172.25.254.123:/> rm /pub/passwd
lftp 172.25.254.123:/> ls /pub
lftp 172.25.254.123:/> quit
-4-删除家目录下的文件,发现由于服务不支持无法删除
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> rm westos
lftp 172.25.254.123:/> quit
(6)匿名用户创建目录
-1-在真实主机中用匿名用户登陆,发现无法创建目录,出现550报错
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> mkdir test
lftp 172.25.254.123:/pub> quit
-2-编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中将anon_mkdir_write_enable=YES前的注释删除,使匿名用户可以创建目录
-3-在真实主机中用匿名用户登陆,发现更改配置文件后便可以成功创建目录
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> mkdir test
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit
(7)匿名用户使用的用户身份的修改
-1-编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中增加以下内容:
chown_uploads=YES
chown_username=hello
chown_upload_mode=0644
-2-新建一个用户并查看其id
[root@sshd_server ~]# useradd hello
[root@sshd_server ~]# id hello
-3-在真机用匿名用户登陆并上传,发现新上传的文件的uid时新设置的用户uid,而权限也是新设置用户的文件权限644
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> put /etc/passwd
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> quit
-4-再次编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中将以下内容删除或注释掉:
#chown_uploads=YES
#chown_username=hello
#chown_upload_mode=0644
-5-在真机中用匿名用户上传文件,发现上传的文件的uid为ftp的uid
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> put /etc/adjtime
lftp 172.25.254.123:/pub> ls
查看ftp的uid:
[root@sshd_server ~]# id ftp
uid=14(ftp) gid=50(ftp) groups=50(ftp)
(8)最大上传速率
-1-在真机划分一个文件
[kiosk@foundation66 Desktop]$ dd if=/dev/zero of=bigfile bs=1M count=1000
[kiosk@foundation66 Desktop]$ pwd
-2-在真机中用匿名匿名登陆并在/pub目录下上传刚刚在真机中划分的文件,可以看到上传速度约为61M/S
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> put /home/kiosk/Desktop/bigfile
……
lftp 172.25.254.123:/pub> quit
-3-上传完文件后删除该文件
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> rm /pub/bigfile
lftp 172.25.254.123:/pub> quit
-4-再次编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中加以下内容:anon_max_rate=102400,使其最大上传速率为100k左右
-5-在真机中用匿名匿名登陆并在/pub目录下上传刚刚在真机中划分的文件,可以扩散到上传速度约为61M/S,因为成功上传需要很久,所以ctrl+c中断上传过程
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> cd /pub
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> put /home/kiosk/Desktop/bigfile
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> ls
lftp 172.25.254.123:/pub> rm bigfile
lftp 172.25.254.123:/pub> quit
注意:因为上传占用资源,所以命令ls可能不能及时查看
(9)设置最大连接数
-1-编辑vsftpd服务的配置文件并使其生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中增加以下内容:max_clients=1,使其最多可以有一个主机可以远程连接
-2-在真机中用虚拟用户登陆,发现可以成功登陆并查看
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> quit
-3-重新开启一个虚拟机并用虚拟用户登陆,发现可以成功登陆但无法查看
[root@client_sshd ~]# lftp 172.25.254.122
lftp 172.25.254.122:~> ls
lftp 172.25.254.122:~> quit
5.对本地用户的相关设定
(1)本地用户上传文件
-1-真实主机中用本地用户student登陆,发现本地用户登陆可以成功上传文件,原因是因为在配置文件中允许本地用户上传文件
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> put /etc/passwd
lftp [email protected]:~> ls
lftp [email protected]:~> quit
-2-查看新上传的文件所在的位置并将其删除
[root@sshd_server ~]# cd /home/student
[root@sshd_server student]# ls
[root@sshd_server student]# rm -rf passwd
[root@sshd_server student]# ls
-3-编辑vsftpd服务的配置文件并生效,使其本地用户无法上传文件
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中将write_enable=YES更改成write_enable=NO,使其本地用户无法上传文件
-4-真实主机中用本地用户student登陆,发现本地用户登陆但无法上传文件,会出现550报错
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> put /etc/passwd
lftp [email protected]:~> quit
(2)设置本地用户上传文件权限
-1-真实主机中用本地用户登陆并上传文件查看其权限,可知新上传的文件的权限为644
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> put /etc/passwd
lftp [email protected]:~> ls
lftp [email protected]:~> quit
-2-编辑vsftpd服务的配置文件并生效,更改其本地用户的上传文件权限
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
将配置文件中local_umask=022更改成local_umask=077
-3-再次在真实主机中用本地用户登陆并上传文件查看其权限,可知新上传的文件的权限为600
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> put /etc/group
lftp [email protected]:~> ls
lftp [email protected]:~> quit
(3)设置本地用户的家目录
-1-编辑vsftpd服务的配置文件并生效,将其本地用户的家目录更改成/westos
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中添加的内容如下:local_root=/westos
-2-真实主机中登陆并查看家目录下的内容,发现是/westos目录下的内容
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> quit
-3-再次编辑vsftpd服务的配置文件并生效,将其本地用户的家目录更改成原来的
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
将配置文件中的local_root=/westos删除或注释掉
-4-再次在真实主机中登陆并查看家目录下的内容,发现是原来目录下的内容
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> quit
(4)限制本地用户浏览“/”目录
-1-在主机中登陆并试图浏览”/“目录,发现默认可以访问“/”目录
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> cd /
lftp [email protected]:/> ls
lftp [email protected]:/> quit
-2-编辑vsftpd服务的配置文件并生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中添加以下内容的注释符号删除:
chroot_local_user=YES
chroot_list_enable=YES ##设置名单可用
chroot_list_file=/etc/vsftpd/chroot_list ##名单的文件为/etc/vsftpd/chroot_list
-3-编辑名单(名单本身是没有的,可以使用vim直接创建)
[root@sshd_server ~]# vim /etc/vsftpd/chroot_list
[root@sshd_server ~]# cat /etc/vsftpd/chroot_list
-4-查看用户是否存在
[root@sshd_server ~]# id westos
[root@sshd_server ~]# id student
-5-用户白名单的建立,当chroot_list_enable=YES时,说明名单里的用户可以访问
用户student在白名单内,发现可以查看“/”目录:
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> cd /
lftp [email protected]:/> ls
lftp [email protected]:/> quit
用户westos不在白名单内,发现无法查看“/”目录:
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> cd
lftp [email protected]:~> ls
lftp [email protected]:~> quit
-6-将用户westos加入到白名单中
[root@sshd_server ~]# vim /etc/vsftpd/chroot_list
[root@sshd_server ~]# cat /etc/vsftpd/chroot_list
-7-用户westos在白名单内,发现可以成功查看“/”目录
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> cd /
lftp [email protected]:/> ls
lftp [email protected]:/> quit
-8-用户黑名单的建立,首先编辑vsftpd服务的配置文件并生效
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中将chroot_local_user=YES更改成chroot_local_user=NO,更改后说明名单里的用户都不可以访问
-9-查看是否有用户bai
[root@sshd_server ~]# id bai
-10-查看黑名单
[root@sshd_server ~]# cat /etc/vsftpd/chroot_list
-11-对不在黑名单的用户和在黑名单的用户查看“/”目录
用户bai不在黑名单内,发现可以查看“/”目录:
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u bai
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> cd /
lftp [email protected]:/> ls
lftp [email protected]:/> quit
用户student在黑名单内,发现无法查看“/”目录:
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> cd /
lftp [email protected]:~> ls
lftp [email protected]:~> quit
用户westos在黑名单内,发现无法查看“/”目录:
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> cd /
lftp [email protected]:~> ls
(5)限制本地用户登陆
-1-进入/etc/vsftpd目录,并编辑永久黑名单(ftpusers),并将student用户写入
[root@sshd_server ~]# cd /etc/vsftpd
[root@sshd_server vsftpd]# ls
[root@sshd_server vsftpd]# vim ftpusers
黑名单如下:
-2-在真机中用student用户进行登陆,发现可以登陆但无法查看,出现530报错
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> quit
-3-在真机中用westos用户进行登陆,发现可以登陆而且可以查看
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> quit
(6)建立临时黑白名单
<1>建立临时白名单
-1-编辑vsftpd服务的配置文件并生效,设定临时白名单
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
配置文件中添加以下内容:
userlist_enable=YES ##表示启用名单
uaerlist_deny=NO ##若是NO表示名单是白名单,若是YES表示名单是黑名单
-2-查看用户是否存在
[root@sshd_server ~]# id student
[root@sshd_server ~]# id bai
[root@sshd_server ~]# id westos
-3-进入白名单并将用户westos加入白名单
[root@sshd_server ~]# cd /etc/vsftpd
[root@sshd_server vsftpd]# ls
[root@sshd_server vsftpd]# vim user_list
白名单如下:
-4-在主机中查看用户是否可以成功查看,若白名单开启,只有在白名单中才可以登陆并查看
用户westos在白名单中,故可以成功登陆并成功查看
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> quit
用户bai不在白名单中,故可以成功登陆但并不可以查看,出现530报错
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u bai
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> quit
注意:在永久黑名单中设置的用户即使写入白名单中,也会出现530报错
<2>建立临时黑名单
-1-编辑vsftpd服务的配置文件并生效,设定临时白名单
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
配置文件中添加以下内容:
userlist_enable=YES ##表示启用名单
uaerlist_deny=YES ##若是NO表示名单是白名单,若是YES表示名单是黑名单
-2–在主机中查看用户是否可以成功查看,在名单中的用户无法查看,在名单外(临时和永久黑名单外)的用户可以查看
在黑名单内的用户无法查看
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> quit
在黑名单外的用户可以查看
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u bai
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> quit
6.对虚拟用户的相关设置
(1)建立虚拟用户
-1-查看vsftpd服务是否开启以及防火墙是否允许开启ftp
[root@sshd_server ~]# systemctl status vsftpd
[root@sshd_server ~]# firewall-cmd --list-all
-2-创建虚拟帐号以及密码,其中虚拟帐号为westos1,westos2,westos3
[root@sshd_server ~]# vim /etc/vsftpd/userfile
[root@sshd_server ~]# cat /etc/vsftpd/userfile
注意:帐号和密码间必须换行,且帐号和密码前不能有空格
-3-给文件进行加密并查看文件是否成功加密,成功加密后查看其文件的内容会发现已经乱码
[root@sshd_server ~]# db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db ##加密前的文件,加密后的文件的类型
[root@sshd_server ~]# cd /etc/vsftpd
[root@sshd_server vsftpd]# ls
[root@sshd_server vsftpd]# cat userfile.db ##查看加密后文件的内容
��4G4���<��'эh^111westos2[root@sshd_server vsftpd]#
注意:-T表示转换类型,-t hash 表示哈希加密,-f表示文件转换类型
-4-创建pam认证文件
[root@sshd_server ~]# vim /etc/pam.d/ftpuser
[root@sshd_server ~]# cat /etc/pam.d/ftpuser
注意:
1.文件中不要写.db后缀,因为保存后会自动生成
2.文件默认不对文件加密,pam是一种认证软件,认证的策略是vsftpd。account通过required才可以进行下一步。
3.插件检测帐号存在的软件,
4.auth通过required改变后原来系统中的用户便无法登陆
-5-编辑vsftpd服务的配置文件并生效,开启虚拟帐号
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中增加以下内容:
指定虚拟帐号的身份:
guest_enable=YES
guest_username=ftp
pam_service_name=ftpuser(pam认证的文件名)
-6-在真机中登陆三个虚拟用户,发现都可以成功登陆(虚拟用户的家目录是本地用户的家目录)
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos1
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> quit
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos2
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> quit
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos3
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> quit
(2)指定虚拟帐号访问自己的家目录
-1-建立递归目录,以及虚拟用户的家目录
[root@sshd_server ~]# mkdir /var/ftpuserdir/westos{1..3} -p
[root@sshd_server ~]# mkdir /var/ftpuserdir/westos{1..3}/pub
[root@sshd_server ~]# mkdir /var/ftpuserdir/westos1/westosfile1
[root@sshd_server ~]# mkdir /var/ftpuserdir/westos2/westosfile2
[root@sshd_server ~]# mkdir /var/ftpuserdir/westos3/westosfile3
-2-编辑vsftpd服务的配置文件并生效,使其在配置文件中指定任意用户登陆后访问的自己的家目录
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中增加的内容如下(尽量关闭其他的匿名用户的相关配置):
local_root=/var/ftpuserdir/$USER
user_sub_token=$USER
-3-在真机中试图查看三个虚拟帐号,会发现访问的都是自己的家目录
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos1
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> quit
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos2
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> quit
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos3
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> quit
(3)独立用户的配置目录
让指定的虚拟用户上传文件
-1-编辑vsftpd服务的配置文件并生效,设定用户独立配置目录的路径并启用名单
[root@sshd_server ~]# vim /etc/vsftpd/vsftpd.conf
[root@sshd_server ~]# systemctl restart vsftpd
在配置文件中写入以下内容(尽量关闭其他的匿名用户的相关配置):
user_config_dir=/etc/vsftpd/user_config
userlist_enable=YES
-2-建立目录
[root@sshd_server ~]# cd /etc/vsftpd
[root@sshd_server vsftpd]# mkdir user_config
[root@sshd_server vsftpd]# ls![在这里插入图片描述](https://img-blog.csdnimg.cn/20190212034612538.png)
[root@sshd_server vsftpd]# cd user_config
[root@sshd_server user_config]# ls
-3-在目录中写入westos1的配置文件,使得虚拟帐号westos1可以上传并使其生效
[root@sshd_server user_config]# vim westos1
[root@sshd_server user_config]# cat westos1
[root@sshd_server user_config]# systemctl restart vsftpd
-4-修改虚拟帐号中/pub的权限(不然不具备权限上传)
[root@sshd_server user_config]# chmod 775 /var/ftpuserdir/westos*/pub
[root@sshd_server user_config]# chgrp ftp /var/ftpuserdir/westos*/pub
[root@sshd_server user_config]# ls -l /var/ftpuserdir/westos*
-5-真机登陆westos1并上传,发现可以上传,而其他帐号无法上传
westos1用户可以上传:
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos1
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> cd /pub
lftp [email protected]:/pub> put /etc/group
lftp [email protected]:/pub> ls
lftp [email protected]:/pub> quit
westos2用户无法上传:
[kiosk@foundation66 Desktop]$ lftp 172.25.254.123 -u westos2
Password:
lftp [email protected]:~> cd /pub
lftp [email protected]:/pub> put /etc/group
lftp [email protected]:/pub> quit
(海上月是天上月,眼前人是心上人)