第3章-FTP文件共传输服务
一,vsftpd服务基础
(1),FTP服务概述
FTP(File Transfer Protocol,文件传输协议)是典型的C/S结构的应用层协议,需要由服务端软件、客户端软件共同实现文件传达输功能。
1,FTP连接及传输模式
#FTP服务器默认使用TCP协议的“20、21端口”与客户端进行通信
#20端口用于建立数据连接,并传输文件数据
#21端口用于建立控制连接,并传输FTP控制命令
【模式】
#主动模式:服务器主动发起数据连接,首先由客户端向服务端的21端口建立FTP
控制连接,当需要传输数据时,客户端以ROPT命令告知服务器“我打开了某
个端口,你过来连接我“,于是,服务器从20端口向客户端发送请求并建立
数据连接。
#被动模式:服务器被动等待数据连接,如果客户机所在网络的防火墙禁止主动模
式连接,通常会使用被动模式,客户端向服务器的该端口(非20)发送请求
并建立数据连接。
【端口】
随机端口 > 1024 周知端口 <= 1024
2,FTP用户类型
#匿名用户:ftp或anonymous,空密码,一般用于提供公共文件的下载。
#本地用户:本机的系统用户。
#虚拟用户:不是直接使用系统用户,而是位于独立数据文件中的FTP用户账号,通
过使用虚拟用户,将FTP账户与Linux系统账户的关联性降至最低,可以为系
统提供更好的安全。
3,FTP服务器软件的分类
#windows:iis serv-u
#Linux:proftpd pureftpd vsftpd
〖vsftpd〗
a)该软件针对安全特性方面做了大量的设计
b)Vsftpd在速度和稳定性方面的表现也相当突出
c)Vsftpd可以支持15000个用户并发连接
d)Vsftpd:“very secure FTP daemon”
4,FTP客户端工具的种类
#windows:cuteFTP FlashFxp LeapFTP Filezilla
#Linux:gftp kuftp
(2),vsftpd的配置
#主程序:/usr/sbin/vsftpd
#配置文件:/etc/vsftpd
#脚本文件:/etc/init.d/vsftpd
1,用户列表文件“ftpusers和user_list”
#ftpusers:黑名单文件,此文件中列出的用户将禁止登录到vsftpd服务
#user_list:黑白名单文件,一般用作白名单。此文件中包含的用户可能被禁止登录,
也可能被允许登录,具体取决于主配置文件vsftpd.conf中的设置
userlist_enable=yes,user_list列表文件才生效
userlist_deny=yes,为黑白名单,禁止此列表中的用户登录
userlist_deny=no,为白名单,允许此列表中的用户登录
2,主配置文件“vsftpd.conf”
格式:配置项=参数
【vsftpd.conf常见配置项及含义说明】
【匿名用户/适用于虚拟用户】
anonymous_enable=yes /是否允许匿名访问
anon_umask=022 /设置匿名用户所上传文件的默认权限掩码值,采用反码方式表示
anon_root=/var/ftp /设置匿名用户的FTP根目录(缺省为/var/ftp)
anon_upload_enable=yes /是否允许匿名用户上传文件
anon_mkdir_write_enable=yes /是否允许匿名用户有创建目录的写入权限
anon_other_write_enable=yes /是否允许匿名用户有其他写入权限“改名,删除”
anon_max_rate=0 /限制匿名用户的最大传输速率(0为无限制),单位为字节/秒
【本地用户】
local_enable=yes /是否允许本地系统用户访问
local_umask=022 /设置本地用户所上传文件的默认权限
local_root=/var/ftp /设置本地用户的FTP根目录,适用于虚拟用户
local_local_user=yes /是否将FTP本地用记禁锢在宿主目录中
local_max_rate=0 /限制本地用户的最大传输率(0为无限制)
【全局配置】
userlist_enable=yes /是否启用user_list用户列表文件,启用黑白名单
userlist_deny=yes /是否禁用user_list列表文件中的用户账号,yes为黑
max_clients=0 /是否允许多个客户端同时连接(0为无限制)
max_per_ip=0 /对来自同一个IP地址的客户端,最多允许多少个并发连接(0为元限制),控制多进程 下载,如“迅雷”
connect_from_port_20=yes /允许服务器主动模式(从20端口建立数据连接)
pasv_enable=yes /允许被动模式连接
pasv_max_port=24600 /设置用于被动模式的服务器最大端口号
pasv_min_port=24500 /设置用于被动模式的服务器最小端口号
pam_service_name=vsftpd /设置用于用户认证的PAM文件位置(/dev/pam.d/目录中对应的文件名)
listen=yes /是否以独立运行的方式监听服务
listen_address=0.0.0.0 /设置监听FTP服务的IP地址
listen_port=21 /设置监听FTP服务的端口号
write_enable=yes /启用任何形式的写入权限(如上传、删除文件等)要开启它
download_enable=yes /是否允许下载文件(no为仅限于浏览、上传)
dirmessage_enable=yes /用户切换进入目录时显示.message文件
xferlog_enable=yes /启用xferlog日志,默认记录到/var/log/xferlog
xferlog_std_format=yes /启用标准的xferlog日志格式。如禁用,将使用vsftpd自己的日志格式
二,基于系统用户的FTP服务
(1),匿名访问的FTP服务
1,准备匿名FTP访问的目录
#FTP匿名用户对应的系统用户为ftp
#宿主目录:/var/ftp
2,开放匿名用户配置,并启动vsftpd服务
#设置主配置文件:vim /etc/vsftpd/vsftpd.conf
#开启服务:service vsftpd restart
3,测试匿名FTP服务器
【登录FTP后,对客户端操作方法】
Linux |
Windows |
|
显示当前路径 |
!pwd |
!cd |
改变路径 |
lcd |
lcd |
查看目录内容 |
!ls |
!dir |
(2),用户验证的FTP服务
1,基本的本地用户验证
·ftp://用户名@192.168.1.1
·ftp://用户名:密码@192.168.1.1
2,使用user_list用户列表文件
·编辑“vim /etc/vsftpd/user_list”
添加本地用户
·编辑 vim /etc/vsftpd/vsftpd.conf
userlist_enable=yes /启用此项
userlist_deny=no /启用白名单
·重启服务:service vsftpd restart
(3),vsftpd服务的其他常用配置
1,修改vsftpd服务的监听地址、端口
查看vsftpd服务的监听情况:netstat -anpt | grep “vsftpd”
2,允许使用FTP服务器的被动模式
3,限制FTP连接的并发数、传输速度
三,基于虚拟用户的FTP服务
(1),建立虚拟用户的账号数据库
准备工作:rpm -ivh db4-utils-..rpm /安装此软件
1,创建文件格式的用户名、密码列表
vim /etc/vsftpd/vusers.list /vusers.list文件名,后缀名自定义
用户名奇数行
密码偶数行
2,创建Berkeley DB格式的数据库文件源文件目标文件
a)先进入/etc/vsftpd/目录:cd /etc/vsftpd
b)创建转换:db_load -T -t hash -f vusers.listvusers.db
c)查看转换后的文件类型:flie vusers.db
d)为提高虚拟用户账号文件的安全性,设置文件权限
chmod 600 /etc/vsftpd/vusers.*
3,添加虚拟用户的映射账号、创建FTP根目录
useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 755 /var/ftproot /ftproot这个目录会自动创建
(2),为vsftpd服务添加虚拟用户支持
1,为虚拟用户建立PAM认证文件
位于:/etc/pam.d/vsftpd
vim /etc/pam.d/vsftpd.vu /vsftpd.vu文件名可自定义
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
2,修改vsftpd配置,添加虚拟用户支持
vim /etc/vsftpd/vsftpd.conf
……//省略部分内容
local_enable=yes /需要映射本地用户、所以启用此项
write_enable=yes /启用上传写入支持
anon_umask=022 /指定上传权限掩码
guest_enable=yes /启用用户映射功能
guest_username=virtual /指定映射的系统用户名称
pam_service_name=vsftpd.vu /指定新的PAM认证文件
3,为不同的虚拟用户建立独立的配置文件
a)vim /etc/vsftpd/vsftpd.conf
……//省略部分内容
user_config_dir=/etc/vsftpd/vusers_dir /vusers_dir目录名自定义
b)创建用户配置文件夹
mkdir /etc/vsftpd/vusers_dir
c)进入此文件夹,为用户建立独立的配置文件
cd /etc/vsftpd/vusers_dir
vim 用户名
anon_upload_enable=yes /上传权限
anon_mkdir_write_enable=yes /创建、定入权限
anon_other_write_enable=yes /修改权限
d)重新加载配置
service vsftpd reload
本文转自甘兵 51CTO博客,原文链接:http://blog.51cto.com/ganbing/1198773,如需转载请自行联系原作者