ftp文件传输
用途:将我们电脑上的数据与服务器数据进行交换。
要求: 熟悉ftp服务的工作原理
学会构建匿名ftp服务器
学会构建用户验证的ftp服务器
结构:
ftp服务概述 | ||
---|---|---|
vsftpd服务基础 | ||
vsftpd的配置文件 | ||
匿名访问的ftp服务 | ||
ftp文件传输服务 | 基于系统用户的ftp服务 | 用户验证的ftp服务 |
vsftpd服务的其他常用配置 | ||
建立虚拟用户的帐号数据库 | ||
基于虚拟用户的ftp服务 | ||
为vsftpd添加虚拟用户支持 |
ftp服务概述
ftp连接及传输模式
控制连接:tcp 21,用于发送ftp命令信息 ……也叫服务端连接
数据连接:tcp 20,用于上传,下载数据 ……也叫客户端连接
数据连接的建立类型:
主动模式:服务端主动向客户端发起连接
被动模式:服务端指定某个端口被动等待客户端连接
注:主动模式下客户端未关闭firewall则接收不到服务器20端口的发送请求。此模式应用于未运行firewall的客户端。另客户端关闭firewall如果网络环境的firewall未关闭也将屏蔽20端口的连接请求。
ftp传输模式:
文本模式:ascii模式,以文本序列传输数据
二进制模式:binaty模式,以二进制序列传输数据
ftp用户的类型:
匿名用户:anonymous或ftp
本地用户:账号密码保存在passwd和shadow文件中
虚拟用户:使用独立的帐号和密码数据文件
常见的ftp服务器程序
iis (windows) serv-u (third windows ) wu-ftpd proftpd
vsftpd (very secure ftp daemon)
常见的ftp 客户端程序
ftp命令行
cuteftp flashfxp leapftp filezilla
gftp kuftp
vsftpd服务基础
vsftpd软件包
官方站点:http://vsftpd.beasts.org/
主程序:/usr/sbin/vsftpd
服务名:vsftpd
用户控制列表文件
/etc/vsftpd/ftpusers ……黑名单
/etc/vsftpd/user_list ……可黑可白,取决于主配置文件
主配置文件:
/etc/vsftpd/vsftpd.conf
主配置文件vsftpd.conf
常用的全局配置项:
listen=yes:是否以独立运行的方式监听服务
listen_address=192.168.1.20:设置监听的ip地址
注:多网卡服务器ftp针对不同ip地址
listen_pror=21:设置监听ftp服务的端口号
注:面向外网,不要改;面向内网,且不对外,最好还是改换。
write_enable=yes:是否启用写入权限(上传)
download_enable=yes:是否允许下载文件
userlist_enable=yes:是否启用user_list列表文件
userlist_deny=yes:是否禁用user_list列表中的用户
注:userlist_deny=no,不禁用,但仅允许这些
max_clients=0:限制并发客户端连接数
注:0为不限制,个体服务器能承载的并发连接数有上限,无论面向内外网,最好设置承载个数,以防ddos攻击。
max_pre_ip=0:限制同一ip地址的并发连接数
常用匿名ftp配置项
anonymous_enable=yes:启用匿名访问
anon_umask=022:匿名用户所上传文件的权限掩码
注:各项用7去减,得755,即上传文件权限
anon_root=/var/ftp:匿名用户的根目录
anon_upload_enable=yes:允许上传文件
anon_mkdir_write_enable=yes:允许创建目录
注:只能创建,不能删除和重命名
anon_other_write_enable=yes:开放其它写入权限
注:可以删除和重命名
anon_max_rate=0:限制最大传输速率(字节/秒)
注:计算机中的位:二进制中,每个0或1就是一个位(bit),它是数据存储的最小单位,其中每8个位等于一个字节(byte)
故1byte=8bit即1mb=1024kb=10241024b=10241024*8b
常用的本地用户ftp配置项
local_enable=yes:是否启用本地系统用户
local_umask=022:本地用户所上传文件的权限掩码
local_root=/var/ftp:设置本地用户的ftp根目录
chroot_local_user=yes:是否将用户禁锢在主目录
注:启用local一定要禁锢,否则如果用户权限够大,系统将面临风险。
local_max_rate=0:限制最大传输速率(字节/秒)
构建匿名用户访问的ftp服务
思路:先准备匿名ftp访问的目录,并开放权限,然后编辑匿名用户配置,再启动服务
⑴挂载光盘,安装服务端软件
mount /dev/cdrom /media
rpm -ivh /media/packages/vsftpd-\t
⑵准备匿名ftp访问目录,并开放权限
chown ftp /var/ftp/pub
ls -ld /var/ftp/pub
⑶编辑ftp配置文件
anonymous_enable=yes
local_enable=no
write_enable=yes
anon_umask=022
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes开放其他写入权
dirmessage_enable=yes
⑷启动服务
service vsftpd start
⑸命令行进行验证
rpm -ivh /media/packages/ftp-\t
ftp:// 192.168.1.86
构建本地访问
思路:启动vsftpd.conf配置文件中本地用户,并进行相关配置,然后重新加载配置;编辑user_list,添加用户,再重新加载。
⑴安装ftp服务端软件,编辑配置文件
local_enable=yes
write_enable=yes
local_umask=077
chroot_local_user=yes
⑵重新加载服务配置文件
service vsftpd reload
⑶启用user_list列表并向user_list添加用户
vi /etc/vsftpd/vsftpd.conf
userlist_enable=yes
userlist_deny=no
cat an >>/etc/vsftpd/user_list
⑷重新加载服务配置文件
service vsftpd reload
⑸windows客户端访问
构建基于虚拟用户的ftp服务
创建帐号数据
1 建立虚拟ftp用户的帐号数据 库文件
2 创建ftp根目录及虚拟用户映射的系统用户
3 建立支持虚拟用户的pam认证文件
添加虚拟用户支持
1在vsftpd.conf文件中添加支持配置
2为个别虚拟用户建立独立的配置文件
启动服务并测试
1重新加载vsftpd配置
2使用虚拟ftp帐户访问测试
⑴建立虚拟ftp用户的帐号数据库文件
vi /etc/vsftpd/vuser.list
mike
123
tom
456
jim
789
cd /etc/vsftpd/
db_load -t -t hash -f vuser.list vuser.db
注:db_load -t 允许应用程序能够将文本文件转译入数据库,由于我们之后是将虚拟用户的信息以文本方式存储在文件中,为了让vsftpd这个应用程序能够通过文本来载入用户数据,必须使用此选项。
如果指定了t就必须追加-t,用来指定转译时的加密算法,有btree,hash,queue,recon
-f指向包含用户名和密码的文本文件,奇名偶密,后跟要转换成的文件名。
file vuser.db
注:file命令用来查看文件的格式
chmod 600 /etc/vsftpd/vuser.*
注:可能是600,否则认证会出错
ls /etc/vsftpd/vuser.*
⑵创建帐号数据
创建ftp根目录及虚拟用户映射的系统用户
useradd -d /var/ftproot -s /sbin/nologin virtual
chmod 755 /var/ftproot
⑶建立支持虚拟用户的pam认证文件
vi /etc/pam.d/vsftpd.vu
#%pam-1.0
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
注:pam为linux的认证模块
⑷在vsftpd.conf文件中添加支持配置
vi /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认证文件
⑸为不同的虚拟用户建立独立的配置文件
在vsftpd.conf文件中添加用户配置目录支持
user_config_dir=/etc/vsftpd/vuser_dir
为用户mike,john建立独立的配置目录及文件
注:配置文件名与用户名相同
mkdir /etc/vsftpd/vuser_dir/
cd /etc/vsftpd/vuser_dir/
vi john
anon_upload_enable=yes
anon_mkdir_enable=yes
touch mike
注:配置文件名与用户名相同
⑹重新加载vsftpd配置
service vsftpd reload
⑺使用虚拟ftp帐户访问测试
mike用户可以登录浏览下载但无法上传
john用户可以登录浏览下载也可以上传
匿名用户或其他系统用户将不能登录