ftp是早期网络协议之一,在至今的网络中仍然有着强大的作用,但是ftp的数据传输时明文的,所以说传输过程可能存在一些风险

ftp时基于CS模型的服务,其控制连接使用TCP21号端口,数据连接使用TCP20号端口。数据传输模式有.主动模式、被动模式。

常见的FTP服务器程序有很多,在linux上我们通常使用vsftpd(Very Secure FTP Daemon)

FTP的用户类型有三种

1.匿名用户: anonymous 或者 ftp 

2.本地用户:

3.虚拟用户: 使用独立的账号/密码数据文件。

常见的FTP客户端:

ftp命令  

lftp命令

gftp (linxu上图形化的ftp工具)

CuteFTP

FlashFTP(号称是最快的FTP)、 

Ftps 会有通过ssl加密的机制。

安装vsftpd 服务器

vsftpd服务默认用ftp这的身份来运行的。vsftpd受到selinux的控制,我们首先禁用selinux

yum install vsftpd 

vsfptd装在/usr/sbin目录中叫做vsftpd

配置文件保存在/etc/vsftpd目录下

默认文件保存在/var/ftp

配置vsftpd

/etc/vsftpd目录下的

ftpusers :定义禁止登陆的用户

user_list 文件: 提供FTP用户列表,而这个文件是否能生效,取决于主配置文件的设置

/etc/vsftpd.conf:主配置文件,详细的定义了所有的规则:

常用的规则:

local_enable=YES 是否允许以本地用户身份访问,本地用户默认通过ftp登陆默认在家目录

write_enable 是否允许本地用户登录后可写?(只创建文件)

anon_mkdir_write_enable=YES 允许本地用户登录后可创建文件夹

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

chown_upload=YES  对匿名用户上传的文件进行一次自动的更改属主

chown_username=root   定义更改的属主

dirmessage_enable=YES 给当前目录增加一个欢迎信息

message_file=.message  你的欢迎文件的位置。

xferlog_enable=YES 是否开启日志信息

xferlog_file=/var/log/vsftpd.log配置日志文件在哪

idle_session_timeout=600 会话的响应时间

data_connection_timeout=120 数据响应时间

ftpd_banner=Welcome to bash FTPservice.  FTP的欢迎信息。

chroot_list_enable=YES 这项的作用是是否把用户锁在它的家目录中。

chroot_list_file=/etc/vsftpd/chroot_list通过这个表,你可以定义到底限制哪些用户。

listen=YES  FTP以独立进程运行在我们的机子上的。

pam_service_name=vsftpd 基于pub认证

userlist_enable=YES  是否开启列表的控制  user_list 文件:

userlist_deny=YES    他默认是拒绝的,只要你想进去,则会立刻拒绝。如果我们改成NO,则仅能这个列表中的用户访问。

lftp-u student 172.16.100.1 则可以进行验证     

启动服务:service vsftpd start

构建基于虚拟用户的vsftpd服务器认证:

建立虚拟FTP用户的账号数据库文件

建立虚拟用户的账号名、密码列表                   

vim/etc/vsftpd/vusers.list

aaa

123

Bbb

456 

奇数行行用户,偶数行是密码                   

我们需要用db4-utils进行一次哈希的转换。

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

更改其权限为600 chmod 600 /etc/vsftpd/vusers.*

创建FTP根目录及虚拟用户映射的系统用户,虚拟出来的用户可以自定义虚拟家目录。