3.ftp登录用户的3种模式

ftp登录用户的3种模式

1.ftp文件传输协议介绍

利用文件传输的形式,获取其他机器的数据、资料

FTP就诞生(file transfer protocol,文件传输协议)
FTP是在互联网中进行文件传输的一种协议,基于c/s,有一个服务端,有一个客户端
FTP默认有2个工作端口
  一个是20端口,用于数据的传输端口
  一个是21端口,是FTP服务端用于接收客户端发来的FTP指令和参数
 
FTP服务器按照FTP协议在互联网上提供文件存储,以便客户端能够快捷的访问数据
FTP客户端向服务端寻求资料

FTP工作模式主要分为2种:
    主动模式:FTP服务器主动向客户端发送连接请求
    被动模式:FTP服务器在等待,等待客户端发来请求
   
 ##安装ftp服务
FTP是一种文件传输协议,那么在linux系统下,有一款工具实现ftp协议,名为vsftpd,费城安全的ftp守护进程服务
 
对于centos系统平台,直接yun安装即可
yum install vsftpd -y #默认的yes确认安装,阿里云的yum源

学习修改vsftpd的配置文件

配置文件:/etc/vsftpd/vsftpd.conf

linux在默认安装的软件配置文件都在/etc目录
[root@localhost ~]# grep -Ev '^#|^$' /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=YES
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

 

 

image-20211017184200944

2.vsftpd匿名用户模式

1.vsftpd允许用户用三种认证的模式,登录到ftp服务器:

1.本地用户模式,基于linux的本地账号密码进行验证,配置简单,但是安全隐患存在,一旦ftp账号密码被破解,无安全可言
2.匿名用户登录模式,任何人不需要密码直接登录ftp
3.虚拟用户模式,单独为ftp工具创建用户数据库,基于口令验证账号密码的信息,这些数据库仅仅用于FTP的服务,不影响其他程序,因此是最为安全的形式

对于FTP客户端,需要安装FTP命令工具,方可使用
ftp> ? #直接在命令行终端输入ftp命令,即可进入交互式的ftp命令行中,输入问好可以查看所有的命令帮助

2.匿名用户登录模式:

匿名用户是最不安全的方式,一般用于在公开展示一些不重要的信息,允许所有人可以查看的数据,ftp匿名登录模式,一般打开在企业内网平台下,并且受防火墙规则控制,以保证ftp的基本安全性。

1.vsftpd配置文件,默认就已经开启了匿名模式,修改配置文件为如下:

[root@localhost ~]# grep '^anon' /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

重启vsftpd进程,加载ftp服务

systemctl restart vsftpd

 

2.在启动了vsftpd服务后,使用ftp客户端命令进行操作

3.指定ip地址链接

 

image-20211017191134077

4.登录ftp后,无法写入数据怎么办?

ftp>mkdir chaoge到此一游

550 Create directory operation failed.

ftp>

#登录ftp后,默认进去的文件夹路径在/var/ftp目录下
1.进入该ftp目录后,修改文件夹的权限相关
cd /var/ftp
[root@localhost ftp]# chown -Rf ftp.ftp pub
2.检查pub文件夹的权限
ll /var/ftp
3.如果想要修改ftp目录下的资料,重命名或删除等操作,还得添加一个参数
[root@localhost ~]# grep '^anon' /etc/vsftpd/vsftpd.conf
anonymous_enable=YES   #允许匿名用户登录
anon_upload_enable=YES  #允许匿名用户上传文件夹
anon_mkdir_write_enable=YES  #允许匿名用户写入,创建文件夹
anon_other_write_enable=YES

3.VSftpb本地用户模式

使用本地用户进行账号密码验证
使用linux本地账户的验证模式,比如匿名用户是安全的多

修改vsftpd.conf改为如下参数
vim /etc/vsftpd/vsftpd.conf
[root@localhost ftp]# grep -Ev '^#|^$' /etc/vsftpd/vsftpd.conf
anonymous_enable=NO   #关闭匿名用户验证模式
local_enable=YES      #开启linux本地账号验证模式
write_enable=YES    #允许用户写入
local_umask=022     用户写入数据时,默认的文件权限
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=YES
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
tcp_wrappers=YES

重启vsftpd,加载配置
systemctl restart vsftpd

【此时我们可以用ftp客户端仅从远程连接,使用linux本地账号】
1.确保服务器上有一个用户可以进行ftp连接,比如用户pyyu
[root@localhost ~]# useradd pyyu
[root@localhost ~]# passwd pyyu
2.此时用客户端连接该ftp,使用账号pyyu,ftp连接后,默认进入是是用户家目录,以保证其他目录安全
linux系统的本地用户可以登录ftp,进入家目录后,进行增删改查

 

image-20211017200837809

 

3.有些用户是无法登录ftp的,在一个用户名单里被禁止了
[root@localhost ~]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
尝试用这些用户登录ftp

4.ftp的虚拟用户认证方式

顾明思义虚拟用户认证方式,就是虚拟创建出来的用户,对于服务器而言也是最安全的方式。
1.安装DB工具,能够转化普通文件为vsftpd识别的数据库加密文件
yum install db4 db4-utils -y

2.创建用于验证vsftpd的数据文件
[root@localhost ~]# vim ftp_user.txt
[root@localhost ~]# cat ftp_user.txt
chaochao
888
chaoyu
666

3.由于这样的普通文件很不安全,vsftpd也无法识别该txt的文件数据,因此还得使用db_load命令
对于这个ftp_user.txt文件进行加密,并且修改他的文件属性,让普通用户无权查看
  3.1加密文件
  db_load -T -t hash -f /etc/vsftpd/ftp_user.txt /etc/vsftpd/ftp_user.db
  3.2 降低文件的读写权限
   chmod 600 ftp_user.db
   3.3 删除旧的数据文本,保证安全性
   rm ftp_user.txt
   
 4.创建当虚拟用户登录ftp之后进入的文件夹路径,且和linux中的一个用户做一个映射关系,防止虚拟用户登录后,创建了文件夹,但是系统没有此用户会报错的一个问题。
 4.1创建一个系统用户和虚拟用户做映射,且不需要家目录,禁止用户登录shell
useradd -d /var/ftpdir -s /sbin/nologin virtual_chao
 4.2检查该用户的家目录
[root@localhost ~]# ll -ld /var/ftpdir/
drwx------  2 virtual_chao   virtual_chao       62 3月 9 18:16 /var/ftpdir/
 4.3 更改文件夹权限
[root@localhost ~]# chmod -Rf 755 /var/ftpdir/
 4.4 修改virtual_chao用户添加到ftpsuer文件中,增大系统安全,该操作不会影响虚拟用户的操作
 echo 'virtual_chao' >> /etc/vsftpd/ftpusers
 
 5.需要修改vsftpd的配置文件,添加一个支持虚拟用户验证的PAM文件,PAM是一组安全机制的模块,认证文件路径在/etc/pam.d/vsftpd
 
修改,添加如下参数,必须注释掉之前所有的内容,仅仅添加有关自定义的vsftpd的配置
 vim /etc/pam.d/vsftpd
[root@localhost ~]# cat /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/ftp_user
account required pam_userdb.so db=/etc/vsftpd/ftp_user
 

image-20211017220009764

6.最后来修改vsftpd的配置文件,加载支持虚拟用户模式,修改为如下参数(注释写在笔记里,不要写在加载文件中)

 

 

image-20211017220351843

7.针对不同的虚拟用户设置不同的权限
chaochao 针对该用户,允许它能够上传、新建、修改、查看、删除等权限
chaoyu 只读权限

 

8.如上的操作,需要修改vsftpd文件,定义 user_config_dir参数即可
 8.1 创建一个管理虚拟用户的家目录,并且创建虚拟用户的配置文件

 

 

image-20211017221921885

分别添加参数,给2个虚拟用户的配置文件

 

image-20211017222115854

9.修改vsftpd主配置文件,加载如上的权限控制
修改/etc/vsftpd/vsftpd.conf ,添加一行如下参数,自定义的vsftpd的用户配置文件
user_config_dir=/etc/vsftpd/virtual_user_dir
10.重启服务,加载新的配置
systemctl restart vsftpd
11.此时使用客户端连接ftp,用虚拟用户进行验证

 

posted @ 2021-10-17 22:49  甜甜de微笑  阅读(3636)  评论(0编辑  收藏  举报