vstfp详解及虚拟用户配置配合详细过程

简介

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。

互联网上提供文件存储和访问服务的计算机,他们依照的是FTP协议提供服务!支持FTP协议的服务器就是FTP服务器!FTP协议提供存储和传输服务的一套协议!

下载"(Download)和"上传"(Upload)。”下载”文件就是从远程主机拷贝文件至自己的计算机上;”上传”文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

ftp工作原理

ftp采用客户端/服务端的工作模式(C/S结构),通过TCP协议建立客户端和服务器之间的连接,但与其他大多数应用协议不同,FTP协议在客户端和服务端之间建立了两条通信链路,分别是控制链路和数据链路,其中,控制链路负责FTP会话过程中FTP命令的发送和接收,数据链路则负责数据的传输

FTP会话包含了两个通道,控制通道和数据通道,FTP的工作有两种方式,一种是主动模式,一种是被动模式,以FTPServer为参照物,主动模式,服务器主动连接客户端传输,被动模式,等待客户端的的连接(无论是主动模式还是被动模式,首先的控制通道都是先建立起来的,只是在数据传输模式上的区别)

主动模式

工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:
vstfp详解及虚拟用户配置配合详细过程

被动模式

PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输,原理如下图:

vstfp详解及虚拟用户配置配合详细过程

工作端口和模式

20号端口:数据传输端口 ftp-data21号端口:指令传输端口

数据传输原理: FTP的传输有两种方式:ASCII、二进制。

ASCII传输方式

假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝。

二进制传输模式

在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。如在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会损坏数据。(ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果传输二进制文件,所有的位都是重要的。)

常见的FTP服务

Windows下:Serv-U FTP ServerLinux下有代表性的FTP服务器软件是Wu-FTP、ProFTP及vsftpd。Wu-FTP(Washington University FTP)是由美国华盛顿大学开发的、以效率和稳定性为参考量的FTP软件。它的功能强大,配置较复杂,由于开发时间较早,应用十分广泛,也因此成为×××们主要的×××目标。Wu-FTP的早期各级版本不断出现安全漏洞,系统管理员不得不因安全因素而经常对其进行升级。ProFTP针对Wu-FTP的弱项而开发,除了在安全性方面进行了改进外,还具备设置简单的特点,并提供了一些Wu-FTP没有的功能,大大简化了架设和管理FTP服务器的工作。vsftpd则凭借在安全性方面的出色表现,被很多大型网站广为采用。

匿名用户配置

anonymous_enable=YES # 是否允许匿名ftp,如否则选择NO
anon_upload_enable=YES # 匿名用户是否能上传
anon_mkdir_write_enable=YES # 匿名用户是否能创建目录
anon_other_write_enable=YES # 修改文件名和删除文件

本地用户配置

local_enable=YES # 是否允许本地用户登录
local_umask=022 # umask 默认755
write_enable=YES
chroot_local_user=YES # 本地用户禁锢在宿主目录中

chroot_list_enable=YES # 是否将系统用户限止在自己的home目录下
chroot_list_file=/etc/vsftpd.chroot_list # 列出的是不chroot的用户的列表

chown_upload=YES # 是否改变上传文件的属主
chown_username=username # 如果是需要输入一个系统用户名

userlist_enable=YES
userlist_deny=NO

deny_email_enable=YES # 是否允许禁止匿名用户使用某些邮件地址
banned_email_file=/etc/vsftpd.banned_emails # 禁止邮件地址的文件路径

ftpd_banner=Welcome to chenlf FTP service. # 定制欢迎信息
dirmessage_enable=YES # 是否显示目录说明文件, 需要收工创建.message文件
message_file= # 设置访问一个目录时获得的目录信息文件的文件名,默认是.message

xferlog_enable=YES # 是否记录ftp传输过程
xferlog_file=/var/log/vsftpd.log # ftp传输日志的路径和名字
xferlog_std_format=YES # 是否使用标准的ftp xferlog模式

ascii_upload_enable=YES # 是否使用ascii码方式上传文件
ascii_download_enable=YES # 是否使用ascii码方式下载文件

connect_from_port_20=YES # 是否确信端口传输来自20(ftp-data)

nopriv_user=ftpsecure # 运行vsftpd需要的非特权系统用户默认是nobody

async_abor_enable=YES # 是否允许运行特殊的ftp命令async ABOR.

FTP服务器的资源限制

idle_session_timeout=600 # 设置session超时时间
data_connection_timeout=120 # 设置数据传输超时时间

max_clients=50 # 用户最大连接数 默认是0不限止
max_per_ip=5 # 每个IP地址最大连接数

anon_max_rate=102400 # 匿名的下载速度 KB
local_max_rate=102400 # 普通用户的下载速度 KB

vsftpd 虚拟用户配置

环境准备

[root@linfan ~]#systemctl stop firewalld
[root@linfan ~]#systemctl disable firewalld
[root@linfan ~]# sed -i"s/^SELINUX\=enforcing/SELINUX\=disabled/g" /etc/selinux/config
[root@linfan ~]#setenforce 0

1.安装依赖程序

[root@linfan ~]# cd /etc/yum.repos.d/
[root@linfan yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@linfan yum.repos.d]# sed -i 's/\$releasever/7/g' /etc/yum.repos.d/163.repo
[root@linfan yum.repos.d]# yum clean all
[root@linfan yum.repos.d]# yum -y install epel-release
[root@linfan yum.repos.d]# yum -y install vsftpd

2.创建文本格式的用户、密码列表

[root@linfan yum.repos.d]# cd
[root@linfan ~]# cat >> /etc/vsftpd/vu.list <<EOF
> lin
> 123
> fan
> 456
> EOF
[root@linfan ~]# cat /etc/vsftpd/vu.list
lin
123
fan
456

3.安装db4工具

[root@linfan ~]# yum -y install db4*

4.将刚创建的用户、密码文件使用db4工具转化成数据库文件

[root@linfan ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db

// -T 表示转换 -t表示加密方式hash的算法加密

5.为提高虚拟账户的文件用户的安全性,设置权限600 ,防止数据外泄

[root@linfan ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
[root@linfan ~]# chmod 600 /etc/vsftpd/vu.*
[root@linfan ~]# ll /etc/vsftpd/vu.*
-rw-------. 1 root root 12288 Aug  7 18:56 /etc/vsftpd/vu.db
-rw-------. 1 root root    16 Aug  7 18:54 /etc/vsftpd/vu.list

6.添加虚拟用户的映射账户、创建ftp根目录。例如要将使用的ftp根目录设置为/var/ftproot,映射账户名称为vftp

[root@linfan ~]# useradd -d /var/ftproot -s /sbin/nologin vftp
[root@linfan ~]# chmod 755 /var/ftproot/
[root@linfan ~]# ll -d /var/ftproot/
drwxr-xr-x. 3 vftp vftp 78 Aug  7 18:57 /var/ftproot/

7.为虚拟用户建议PAM认证

[root@linfan ~]#  cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
[root@linfan ~]# vim /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vu
account required pam_userdb.so db=/etc/vsftpd/vu

8.修改配置vftpd文件,添加虚拟用户支持

[root@linfan ~]# cat >> /etc/vsftpd/vsftpd.conf <<EOF
> guest_enable=YES
> guest_username=vftp
> user_config_dir=/etc/vsftpd/vusers_dir
> allow_writeable_chroot=YES
> EOF

9.创建目录/etc/vsftpd/vusers_dir与前面建立对应关系

[root@linfan ~]# mkdir /etc/vsftpd/vusers_dir
[root@linfan ~]#  ll /etc/vsftpd/
total 32
-rw-------. 1 root root   125 Aug  3  2017 ftpusers
-rw-------. 1 root root   361 Aug  3  2017 user_list
-rw-------. 1 root root  5133 Aug  7 18:59 vsftpd.conf
-rwxr--r--. 1 root root   338 Aug  3  2017 vsftpd_conf_migrate.sh
-rw-------. 1 root root 12288 Aug  7 18:56 vu.db
-rw-------. 1 root root    16 Aug  7 18:54 vu.list
drwxr-xr-x. 2 root root     6 Aug  7 18:59 vusers_dir

10.设置用户lin可上传和创建目录,设置fan用户只有默认下载权限,只需创建一个名为fan的空文件即可

[root@linfan ~]# cat >> /etc/vsftpd/vusers_dir/lin <<EOF
> anon_upload_enable=YES
> anon_mkdir_write_enable=YES
> EOF
[root@linfan ~]# touch /etc/vsftpd/vusers_dir/fan

11.启动ftp服务,检查端口是否开启

[root@linfan ~]# ss -antl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128          *:22                       *:*                  
LISTEN     0      100    127.0.0.1:25                       *:*                  
LISTEN     0      32          :::21                      :::*                  
LISTEN     0      128         :::22                      :::*                  
LISTEN     0      100        ::1:25                      :::*       

12.在ftp客户端登录lin用户创建文件 在服务端验证

vstfp详解及虚拟用户配置配合详细过程

服务端验证:
[root@linfan ftproot]# ls
4  helleo  hello
经实验得知:

lin用户有下载和创建文件的权限;
fan 用户只可以下载文件,没有创建文件的权限

转载于:https://blog.51cto.com/13858192/2155897

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值