Linux 第38天 vsftp

Linux 第38天 vsftp

时间:20180828 


目录

文件共享服务

FTP

vsftpd (Very Secure FTP)

基于虚拟用户的vsftpd

总结



文件共享服务

常见的文件共享共享服务有: ftp, nfs, samba。其中ftp是一种应用层的服务,nfs是基

于内核来实现的网络文件共享服务,samba是在linux上实现CIFS(SMB)协议来解决跨平

台的文件共享服务。

DAS(Direct-Attached Storage) 直连式存储,即直接和主机的主板相连接的存储设备

NAS(Network Attached Storage) 网络附属存储,存储设备和服务器之间是分离的,不

在同一个服务机器上,所以称为网络式存储,基于网络传输数据。

SAN(Storage Area Network) 存储区域网络,基于光纤交换机的数据存储中心,速度要

要更快一些,专为存储建立独立于TCP/IP网络之外的存储专用网络。


FTP 一个非常古老的文件共享协议(File Transfer Protocol),使用是明文传输方式,会存在

网络安全问题。服务是C/S架构,有两种工作模式。

主动方式 指数据传输连接是由服务器端主动创建连接,主动去连接客户端的某个随机端口

被动方式 指数据传输连接由客户端的某个随机端口去连接服务端的某个随机端口

FTP标准命令TCP端口号为21,主动方式的话数据端口为20,双方协定使用何种方式传输数

据是在双方通过21号指令传输端口来指明的。被动方式是用来穿越防火墙使用的,有的防

火墙有限制止外来主机主动发起TCP SYN连接来连接内部主机,所以被动方式就可以跨过

此限制。


实现FTP服务端常用的软件有: wu-ftpd, proftpd, pureftp, vsftpd(very secure),

ServU, FileZilla等。 客户端工具有: ftp, lftp, lftpget, wget, curl, filezilla

gftp, flashfxp, cuteftp等等非常多。


FTP其它特性

用户身份验证

记录日志

限制用户的活动目录

虚拟用户(不使用系统账号登录ftp更安全)

这里介绍vsftpd安装和使用,其它的软件暂不做介绍


vsftpd (Very Secure FTP)安装

vsftpd所对应的rpm包也叫做vsftpd,可以直接通过yum安装


产生的文件和目录

用户认证配置文件: /etc/pam.d/vsftpd

配置文件目录: /etc/vsftpd

主配置文件: vsftpd.conf

匿名用户(映射为ftp用户)共享资源位置: /var/ftp

系统用户通过ftp访问的资源的位置: 用户自己的家目录

虚拟用户通过ftp访问资源的位置: 给虚拟用户指定的映射为系统的用户家目录

安装完成之后就可以通过service vsftpd start来启动此服务

centos 7 命令为 systemctl start vsftpd


vsftpd.conf配置文件里可以增加如下配置来使服务功能更丰富合理

匿名用户的配置

anonymous_enable=YES; 启用匿名用户

anon_upload_enable=YES; 匿名用户具有上传权限

anon_mkdir_write_enable=YES; 匿名用户可以创建目录

anon_other_write_enable=YES; 匿名用户除了具有写权限外可以删除

或更改服务器上的其它文件


系统用户配置

local_enable=YES; 允许本地用户登录

write_enable=YES; 本地用户可写

local_umask=022; 本地用户的掩码


禁锢文件中指定的ftp本地用户于其家目录中

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

allow_writeable_chroot=YES(不推荐使用)如果使用则用户登录后的根目录

下的文件可以被删除,如果不设置则用户可以看到文件但不能删除修改等

只能再进入一层目录后才可以上传下载文件

chroot_local_user=YES 用户登录后根目录被限制在自己的家目录里,不然

可以查看该服务器上其它目录如/etc等等


日志

xferlog_enable=YES

xferlog_std_format=YES

xferlog_file=/var/log/xferlog 将登录及文件上传下载等信息记录到系统

日志当中

dual_log_enable=YES,vsftpd_log_file=/varlog/vsftpd.log

使用vsftpd自己的日志文件


改变上传文件的属性

chown_uploads=YES

chown_username=whoever


vsftpd使用pam完成用户认证,其用到的pam配置文件

pam_services_name=vsftpd


是否启用控制用户登录的列表文件

userlist_enable=YES

userlist_deny=YES|NO

默认文件为/etc/vsftpd/user_list


连接限制

max_clients 最大并发连接数

max_per_ip 每个IP可同时发起的并发请求数


传输速率

anon_max_rate 匿名用户的最大传输速率

local_max_rate 本地用户


其它相关参数

connect_from_port_20=YES 主动模式的端口号

listen_port=21

listen=yes 表示vsftpd以standalone单机模式启动

pasv_enable=YES 设置传输模式为被动

connect_timeout=60 主动模式,60秒内得不到客户端响应时强行断开

accept_timeout=60 被动模式下60秒内得不到客户端连接时强行断开

data_connection_timeout=300 300秒后无数据传输时断开

tcp_wrappers=YES 是否支持wrappers


vsftpd还支持基于ssl的安全连接可以通过此命令查看当前vsftpd是否支持

ldd $(which vsftpd)|grep ssl

如有显示信息则表示是支持,接下来修改vsftpd的配置文件来添加对ssl的支持

ssl_enable=YES 启动ssl支持

allow_anon_ssl=NO 但是不允许匿名者使用ssl

force_local_data_ssl=YES 强制本地用户数据传输加密

force_local_logins_ssl=YES 登录账号密码时加密

ssl_tlsv1=YES 支持TLS即可,下方不用启动

ssl_sslv2=NO

ssl_sslv3=NO

rsa_cert_file=/etc/vsftpd/vsftpd.pem 指定rsa加密的证书信息


我们可以根据自己的需求来修改或添加对应的参数信息,需要注意的是,在修改配置文件

之后是需要重启vsftpd服务才能生效的。



基于虚拟用户的vsftpd

虚拟用户指系统当中不存在的实体用户,他只能访问服务器为其提供的ftp服务,但

不能访问其它的额外资源信息。提高系统的安全性. 在vsftpd中,虚拟用户的认证方

式是单独的口令库文件(pam_userdb),有可插入式认证模块来完成认证,使用这种

方式配置更加灵活也更加安全。


创建虚拟用户的账号密码数据库文件

创建一个文本文件来记录虚拟用户的账号密码信息,格式为奇数行为账号对应的偶数

行为对应的账号密码(注意密码是明文存储的,所以登录时直接输入此密码即可)

vim /etc/vsftpd/vusers.list

user1

user1pass

user2

user2pass

admin

admin2014

将该文件转换成二进制的数据库文件,这里需要借助db4工具来实现

yum install db4-utils -y

db_load -T -t hash -f vuser.list vusers.db

更改账号密码文件的权限为600 主要是为了保证密码文件的安全性

chmod 600 /etc/vsftpd/vusers.*


创建FTP根目录及虚拟用户映射的系统用户

mkdir /var/ftproot 该目录为FTP的根目录

useradd -d /var/ftproot -s /sbin/nologin virtual

这里是准备将虚拟用户映射为virtual用户 


修改/var/ftproot目录的权限

chmod 755 /var/ftproot


创建支持虚拟用户的PAM认证

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.back

其配置文件信息然后添加如下两行

vim /etc/pam.d/vsftpd

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

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

注意这里后面的文件是不带后缀的,模块建议使用绝对路径 


在vsftpd的配置文件vsftpd.conf当中添加支持模块参数

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_umask=022

guest_enable=YES

guest_username=virtual #这里virtual就是虚拟用户映射的系统用户

pam_service_name=vsftpd #虚拟用户的pam文件名,而非pam文件路径


为个别的虚拟用户创建独立的配置文件

首先要创建虚拟用户的配置文件目录

mkdir /etc/vsftpd/users_dir

在vsftpd的配置文件当中开启虚拟用户及配置相关参数

vim /etc/vsftpd/vsftpd.conf

virtual_use_local_privs=YES  #开启虚拟用户现主机用户权限对应(不推荐)

user_config_dir=/etc/vsftpd/vusers_dir #虚拟用户的配置目录

在虚拟用户的配置目录当中为个别用户创建独立的配置文件及配置相关参数

touch user1 user2 admin

vim user2

anon_upload_enable=YES

anon_mkdir_enable=YES

此时user2登录将有读写权限


重新加载vsftpd的配置

services vsftpd restart

systemctl restart vsftpd


总结

1. pam 里引用模块时建议使用绝对路径

2. 配置虚拟vsftp用户时所定义的配置文件放在其指定的目录里

3. 如果要自行配置vsftpd.conf文件时建议把原文件里启用的选项导至新文件里

4. 默认需要设置allow_writeable_chroot=YES或把家目录改为没有写权限

5. 创建虚拟用户时主配置文件权限尽量小,然后如果某用户需要某权限可以给其

配置专门的配置文件声明权限


猜你喜欢

转载自blog.51cto.com/winthcloud/2166358