首页 > 其他 > 详细

vsftpd服务安装及配置(三种登陆方式)

时间:2019-09-16 15:21:50      阅读:81      评论:0      收藏:0      [点我收藏+]

FTP服务部署

 

ftp传输的机制:

FTP通过21端口与Client端进行指令传输,通过20端口进行数据传输,根据工作模式的不同VSFTP分为主动模式和被动模式2种,大多是情况VSFTP是工作在被动模式下

 

主动模式:

1.Client端以一个大于1024的随机端口向FTP服务器的21号端口发出建立连接请求

2.Server端收到请求后,会以20端口主动去链接Client端的随机端口+1号端口,如果该端口被占用,则回去找随机端口+2号端口以此类推,直到找Client端空闲的端口

3.Client端与Server端通过20端口进行数据传输

 技术分享图片

被动模式:

1.Client端以一个大于1024的随机端口向FTP服务器的21号端口发出建立连接请求

2.Server端会通过21号端口给Client端发送一个类似(xyz,ab)的数值来告诉Client端打开的随机端口,同时打开xyz*256+ab端口

3.Client端再通过一个随机端口连接Server端的xyz*256+ab端口进行数据传输

 技术分享图片

而现实环境中无论是Client端还是Server端都是在防火墙后面,在主动模式下VSFTP会链接Client端的随机+1号端口,Client端显然不会将防火墙上所有随机端口开放;而在被动下问题同样的问题仍然会摆在Server端的防火墙面前,这就需要Server端的防火墙开启连接追踪功能,即放行与21号端口有关联的端口访问请求,这也就是为什么大部分情况下VSFTP是以被动模式工作。

 

vsftp部署:

环境描述:

服务端系统:CentOS7.5;内存2G;硬盘30G

客户端系统:Windows10 ; 软件:xftp客户端

 

注意:1)每一步的操作路径,不要混乱

2)  配置的详细介绍在本文章的最后部分展示

3)本次安装vsftpd以yum的形式进行部署

 

Vsftp的登陆类型:

VSFTP提供了系统用户、匿名用户、和虚拟用户三种不同的登陆方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为此系统用户的家目录;匿名用户也是虚拟用户,映射的系统用户为ftp,详细信息可以通过man vsftpd.conf查看

 

1.安装vsftp

[root@linuxMA ~]# yum -y install vsftpd*

 

2.使用rpm –qc 查看vsftpd的配置文件

[root@linuxMA ~]# rpm -qc vsftpd

/etc/logrotate.d/vsftpd

/etc/pam.d/vsftpd

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

/etc/vsftpd/vsftpd.conf

 

#配置文件详解

/etc/logrotate.d/vsftpd            滚动日志配置文件

/etc/pam.d/vsftpd                   认证文件,pam全称为Plugable Authentication

/etc/vsftpd/ftpusers                控制登陆系统用户的机制,出现在该文件中的用户不允许使用ftp服务器,这是在/etc/pam.d/vsftpd中定义的

/etc/vsftpd/user_list               配合/etc/vsftpd/vsftpd.conf中的userlist_enable=YES和userlist_deny=YES|NO实现黑白名单此处需要注意的是:黑白名单的前提是/etc/vsftpd/vsftpd.conf配置文件中userlist_enable=YES,userlist_deny选项默认为YES(黑名单),即该文件中出现的用户不允许登陆VSFTP,就算手动添加userlist_deny=NO(白名单)即只允许该文件中出现的用户允许登陆VSFTP,在VSFTP启动时依然会去检查/etc/vsftpd/ftpusers文件并且禁止该文件中的用户登录

/etc/vsftpd/vsftpd.conf             VSFTP主配置文件,所有的配置选项必须顶格写,配置文件中#后带空格的是说明,不带空格的是注释掉的配置选项

 

3.将cp命令将配置文件备份

[root@linuxMA ~]# cd /etc/vsftpd/

[root@linuxMA vsftpd]# ls

ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

[root@linuxMA vsftpd]# cp vsftpd.conf vsftpd.conf.bak

[root@linuxMA vsftpd]# ls

ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

 

1)配置匿名用户

[root@linuxMA vsftpd]# vim vsftpd.conf

write_enable=YES

anon_umask=022

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES (是否允许匿名用户有其他写入权(改名,删除,覆盖)

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

 #开启vsftp服务,并查看是否启动成功

[root@linuxMA vsftpd]# systemctl start vsftpd

[root@linuxMA vsftpd]# netstat -lnpt |grep vsftpd

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      34531/vsftpd

 

#登陆验证:

技术分享图片

#测试登陆成功:

 技术分享图片

 

 

 

#修改权限:

[root@linuxMA ~]# cd /var/ftp/

[root@linuxMA ftp]# ll

总用量 0

drwxr-xr-x 2 root root 6 8月   3 2017 pub

[root@linuxMA ftp]# chown ftp:ftp pub/

[root@linuxMA ftp]# ll

总用量 0

drwxr-xr-x 2 ftp ftp 21 9月  16 10:16 pub

 

重点:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root

 

注意:(1)修改完配置之后需要重启完服务才能生效

           (2)还需要从新从客户端登陆,否则修改后的配置看不到效果。

2)配置系统用户

1.创建测试用户zhangsan、lisi 密码都为“123456”

[root@linuxMA ~]# useradd zhangsan

[root@linuxMA ~]# useradd lisi

[root@linuxMA ~]# echo "123456" |passwd --stdin zhangsan

更改用户 zhangsan 的密码 。

passwd:所有的身份验证令牌已经成功更新。

[root@linuxMA ~]# echo "123456" |passwd --stdin lisi

更改用户 lisi 的密码 。

passwd:所有的身份验证令牌已经成功更新。

 

2.修改配置文件

[root@linuxMA ~]# vim /etc/vsftpd/vsftpd.conf

local_enable=YES

local_umask=077

chroot_local_user=YES

allow_writeable_chroot=YES

write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

userlist_deny=NO

tcp_wrappers=YES

 

[root@linuxMA ~]# vim /etc/vsftpd/user_list             //添加用户到白名单

zhangsan

lisi

[root@linuxMA ~]# systemctl restart vsftpd              //重启服务

 

#登陆测试:

技术分享图片

#登陆成功:

技术分享图片

 

 #添加并进行测试

[root@linuxMA ~]# cd /home/zhangsan/

[root@linuxMA zhangsan]# touch zhangsan.txt

 技术分享图片

 

3)配置虚拟用户

1.建立虚拟FTP用户的帐号

[root@linuxMA ~]# useradd -s /sbin/nologin vu

 

2.创建虚拟用户文件

[root@linuxMA ~]# cd /etc/vsftpd/

[root@linuxMA vsftpd]# vim user

wangwu

12345

maliu

12345

基数行代表用户名,偶数行代表密码

 

3. 通过db_load工具创建出Berkeley DB格式的数据库文件

[root@linuxMA vsftpd]# db_load -T -t hash -f user user.db

[root@linuxMA vsftpd]# ls

ftpusers  user  user.db  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

 

db_load -T -t hash -f user user.db

 

-f 指定数据原文件

-T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件

-t hash   读取文件的基本方法

 

4. 建立支持虚拟用户的PAM认证文件

[root@linuxMA vsftpd]# vim /etc/pam.d/vsftpd.vu

加入以下两行

auth       required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

account    required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

对应刚才生成user.db的文件

 

5.修改配置文件

[root@linuxMA vsftpd]# vim vsftpd.conf

write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

userlist_enable=YES

tcp_wrappers=YES

allow_writeable_chroot=YES

guest_enable=YES

guest_username=vu

pam_service_name=vsftpd.vu

local_enable=YES

local_umask=077

chroot_local_user=YES

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/user_dir

 

6. 为用户建立独立的配置目录及文件

[root@linuxMA vsftpd]# mkdir /etc/vsftpd/user_dir

[root@linuxMA vsftpd]# ls

ftpusers  user  user.db  user_dir  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh

[root@linuxMA vsftpd]# cd /etc/vsftpd/user_dir

[root@linuxMA user_dir]# vim wangwu

local_root=/etc/vsftpd/data                       //虚拟用户数据的存放路径

 #创建虚拟用户数据存放目录

[root@linuxMA user_dir]# cd ..

[root@linuxMA vsftpd]# mkdir data

[root@linuxMA vsftpd]# chmod 777 data/

 #重启服务

[root@linuxMA ]# systemctl restart vsftpd

 

登陆测试:

 技术分享图片

#登陆成功。添加文件进行测试

[root@linuxMA vsftpd]# cd data/

[root@linuxMA data]# touch wangwu.txt

 技术分享图片

 

 

重点:本地用户和虚拟用户不能同时登录、因为认证方式只有一种

本地是pam_service_name =vsftpd

虚拟是pam_service_name =vsftpd.vu

 

 

配置文件详解

 

#常用的匿名FTP配置项

anonymous_enable=YES                         是否允许匿名用户访问

anon_umask=022                                     匿名用户所上传文件的权限掩码

anon_root=/var/ftp                                    设置匿名用户的FTP根目录

anon_upload_enable=YES                      是否允许匿名用户上传文件

anon_mkdir_write_enable=YES               是否允许匿名用户允许创建目录

anon_other_write_enable=YES               是否允许匿名用户有其他写入权(改名,删除,覆盖)

anon_max_rate=0                                     限制最大传输速率(字节/秒)0为无限制

 

#常用的本地用户FTP配置项

local_enable=YES                                      是否允许本地系统用户访问

local_umask=022                                       本地用户所上传文件的权限掩码

local_root=/var/ftp                                      设置本地用户的FTP根目录

chroot_list_enable=YES                            表示是否开启chroot的环境,默认没有开启

chroot_list_file=/etc/vsftpd/chroot_list        表示写在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的。默认是可以的。

Chroot_local_user=YES                             表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。

local_max_rate=0                                       限制最大传输速率(字节/秒)0为无限制

 

#常用的全局配置项

listen=YES                                                  是否以独立运行的方式监听服务

listen_address=192.168.4.1                       设置监听FTP服务的IP地址

listen_port=21                                             设置监听FTP服务的端口号

write_enable=YES                                      是否启用写入权限(上传,删除文件)

download_enable=YES                             是否允许下载文件

dirmessage_enable=YES                           用户切换进入目录时显示.message文件

xferlog_enable=YES                                   启用日志文件,记录到/var/log/xferlog

xferlog_std_format=YES                             启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式

connect_from_port_20=YES                       允许服务器主动模式(从20端口建立数据连接)

pasv_enable=YES                                       允许服务器被动模式

pasv_max_port=24600                                设置被动模式服务器的最大端口号

pasv_min_port=24500                                 设置被动模式服务器的最小端口号

pam_service_name=vsftpd                          用户认证的PAM文件位置

(/etc/pam.d/vsftpd.vu)

userlist_enable=YES                                     是否启用user_list列表文件

userlist_deny=YES                                        是否禁用user_list中的用户

max_clients=0                                                限制并发客户端连接数

max_per_ip=0                                                 限制同一IP地址的并发连接数

tcp_wrappers=YES                                         是否启用tcp_wrappers主机访问控制

chown_username=root                                   表示匿名用户上传的文件的拥有人是root,默认关闭

ascii_upload_enable=YES                              表示是否允许用户可以上传一个二进制文件,默认是不允许的

ascii_download_enable=YES                         这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的

nopriv_user=vsftpd                                          设置支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户

async_abor_enable=YES                                设定支持异步传输功能

ftpd_banner=Welcome to Awei FTP servers   设定Vsftpd的登陆标语

guest_enable=YES             设置启用虚拟用户功能

guest_username=ftpuser         指定虚拟用户的宿主用户

virtual_use_local_privs=YES        设定虚拟用户的权限符合他们的宿主用户

user_config_dir=/etc/vsftpd/vconf      设定虚拟用户个人Vsftp的配置文件存放路径

 

vsftpd服务安装及配置(三种登陆方式)

原文:https://www.cnblogs.com/linuxMA/p/11526928.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!