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根目录及虚拟用户映射的系统用户,虚拟出来的用户可以自定义虚拟家目录。