FTP文件服务器

FTP文件服务器

         File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文件传输协议”。用于Internet上的控制文件的双向传输。

         同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。

         "下载"文件就是从远程主机拷贝文件至自己的计算机上;

         "上传"文件就是将文件从自己的计算机中拷贝至远程主机上。

         支持FTP协议的服务器就是FTP服务器。

FTP连接及传输模式:

         控制连接:TCP 21,用于发送FTP命令信息

         数据连接:TCP 20,用于上传、下载数据

数据连接的建立类型:

         主动模式:服务端从20端口主动向客户端发起连接

         被动模式:服务端在指定范围内某个端口被动等待客户端连接

 

FTP用户的类型:

         匿名用户:anonymous或ftp

         本地用户:

                 帐号名称、密码等信息保存在passwd、shadow文件中

常见的FTP服务器程序:

         IIS、Serv-U

         wu-ftpd、Proftpd

         vsftpd(Very Secure FTPDaemon)

常见的FTP客户端程序:

         CuteFTP、FlashFXP、LeapFTP、Filezilla

         gftp、kuftp

         FTP命令

vsftpd软件包

         官方站点:        http://vsftpd.beasts.org/

         主程序:         /usr/sbin/vsftpd

         服务名:         vsftpd

         用户控制列表文件

                    /etc/vsftpd/ftpusers

                    /etc/vsftpd/user_list

         主配置文件

                    /etc/vsftpd/vsftpd.conf

匿名权限控制:

         anonymous_enable=YES:               启用匿名访问

         anon_umask=022:                           匿名用户所上传文件的权限掩码

         anon_root=/var/ftp:                        匿名用户的FTP根目录

         anon_upload_enable=YES:            允许上传文件

         anon_mkdir_write_enable=YES:  允许创建目录

         anon_other_write_enable=YES:  开放其他写入权

         anon_max_rate=0:                          限制最大传输速率(字节/秒)

本地用户权限控制:

         local_enable=YES:                            是否启用本地系统用户

         local_umask=022:                            本地用户所上传文件的权限掩码

         local_root=/var/ftp:                         设置本地用户的FTP根目录

         chroot_local_user=YES:                  是否将用户禁锢在主目录

         local_max_rate=0:                           限制最大传输速率(字节/秒)

常用的全局配置项:

         listen_address=192.168.4.1:        设置监听的IP地址

         listen_port=21:                                 设置监听FTP服务的端口号

         write_enable=YES:                           是否启用写入权限

         download_enable=YES:                是否允许下载文件

         max_clients=0:                                 限制并发客户端连接数

         max_per_ip=0:                                  限制同一IP地址的并发连接数

         Pasv_min_port=50000                    将客户端的数据连接端口改在

         Pasv_max_port=60000              50000—60000之间)

访问限制:

         userlist_enable=YES:                       是否启用user_list列表文件

         userlist_deny=YES:                          是否禁用user_list中的用户

         userlist_deny=NO;

其它安全选项:

         connect_timeout=60

         accept_timeout=60

         data_connection_timeout=300

         idle_session_timeout=300

         ftpd_banner=xxx和banner_file=/path/file

         tcp_wrappers=YES

匿名和本地验证

         准备匿名FTP访问的目录/var/ftp/pub

         使匿名用户FTP对该目录有写入权限

         开放匿名用户配置,并启动vsftpd服务

         [root@localhost]# vi/etc/vsftpd/vsftpd.conf

                   anonymous_enable=YES

                   local_enable=NO

                   write_enable=YES

                   anon_umask=022

                   anon_upload_enable=YES

                   anon_mkdir_write_enable=YES

         [root@localhost vsftpd]# service vsftpdstart

                   为 vsftpd 启动 vsftpd:                                    [确定]

                   [root@localhost vsftpd]#netstat -anpt | grep "vsftpd"

         tcp     0      0 0.0.0.0:21        0.0.0.0:*          LISTEN      8989/vsftpd

客户端访问

         使用ftp客户端程序访问测试:

[root@localhost~]# ftp 192.168.4.11

         Connected to 192.168.4.11.

         220 (vsFTPd 2.0.5)

         530 Please login with USER and PASS.

         KERBEROS_V4 rejected as anauthentication type

         Name (192.168.4.11:root): ftp

         331 Please specify the password.

         Password:

         230 Login successful.

         Remote system type is UNIX.

         Using binary mode to transfer files.

         ftp>

访问限制

1、修改vsftpd.conf配置文件

         启用本地用户访问

         结合user_list文件灵活控制用户访问

2、重新加载vsftpd配置

[root@localhost~]# vi /etc/vsftpd/user_list

         laya

         vanko

         hunter

[root@localhost]#vi /etc/vsftpd/vsftpd.conf

         ……

         userlist_enable=YES                                   

         userlist_deny=NO

[root@localhost]#service vsftpd reload

 

1、修改vsftpd服务的监听地址、端口

[root@localhost~]# vi /etc/vsftpd/vsftpd.conf

         ……

         listen=YES

         listen_address=192.168.4.11

         listen_port=2121

2、允许使用FTP服务器的被动模式

[root@localhost]#vi /etc/vsftpd/vsftpd.conf

         ……

         pasv_enable=YES

         pasv_min_port=24500

         pasv_max_port=24600

虚拟用户:

         创建账号数据:

         1.      建立虚拟FTP用户的帐号数据库文件

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

         3.      建立支持虚拟用户的PAM认证文件

                  添加虚拟用户支持

         4.      在vsftpd.conf文件中添加支持配置

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

                  启动服务并测试

         6.      重新加载vsftpd配置

         7.      使用虚拟FTP账户访问测试

[root@localhost]#vi /etc/vsftpd/vusers.list

         zhangsan

         123

         lisi

         456

[root@localhost]#cd /etc/vsftpd/

[root@localhostvsftpd]# db_load -T -t hash -f vusers.list vusers.db

[root@localhostvsftpd]# file vusers.db

         vusers.db: Berkeley DB (Hash, version8, native byte-order)

[root@localhostvsftpd]# chmod 600 /etc/vsftpd/vusers.*

[root@localhostvsftpd]# ls -lh /etc/vsftpd/vusers.*

         -rw------- 1 root root 12K 02-26 08:51/etc/vsftpd/vusers.db

         -rw------- 1 root root  18 02-26 08:48 /etc/vsftpd/vusers.list

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

         [root@localhost]# useradd -d/var/ftproot -s /sbin/nologin virtual

         [root@localhost]# chmod 755/var/ftproot/

3.建立支持虚拟用户的PAM认证文件

         [root@localhost]# vi/etc/pam.d/vsftpd.vu

         #%PAM-1.0

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

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

4.在vsftpd.conf文件中添加支持配置

         [root@localhost ~]# 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

5.为不同的虚拟用户建立独立的配置文件

         在vsftpd.conf文件中添加用户配置目录支持

                 user_config_dir=/etc/vsftpd/vusers_dir

         为用户mike、john建立独立的配置目录及文件

                 配置文件名与用户名相同

         [root@localhost ~]# mkdir/etc/vsftpd/vusers_dir/

         [root@localhost ~]# cd/etc/vsftpd/vusers_dir/

         [root@localhost vusers_dir]# vizhangsan

                   anon_upload_enable=YES

                   anon_mkdir_write_enable=YES

         [root@localhost vusers_dir]# touch lisi

6.重新加载vsftpd配置

         service vsftpd reload

7.使用虚拟FTP账户访问测试

         zhangsan用户可以登录,并可以浏览、下载,但无法上传

         lisi用户可以登录,并可以浏览、下载,也可以上传

         匿名用户或其他系统用户将不能登录

                   tcpdump port 21 –nA

                   ldd `which vsftpd`|grep ssl

                   openssl req -new -x509 -nodes-out vsftpd.pem -keyout vsftpd.pem

                   chmod 400 vsftpd.pem

                   cp vsftpd.pem /etc/ssl/certs/

                   ssl_enable=YES 

                   allow_anon_ssl=YES 

                   force_local_data_ssl=YES  

                   force_local_logins_ssl=YES

                   force_anon_logins_ssl=YES

                   force_anon_data_ssl=YES

                   ssl_tlsv1=YES     

                   ssl_sslv2=NO

                   ssl_sslv3=NO

                   rsa_cert_file=/etc/ssl/certs/vsftpd.pem   vsftpd服务器证书文件路径

###############################################################################

一、常见的文件服务

         FTP 应用层 文件共享的服务

         NFS 网络文件系统 基于RPC实现

                   RPC 远程过程调用

         SAMBA 跨平台的文件共享服务

 

二、FTP特点

         1、连接类型

                   命令连接

                            传输命令、控制连接

                            持续保持连接(未设置超时时间)

                            客户端发起,服务器响应

                   数据连接 

                            传输数据

                            按需打开,按需关闭,必定与某个命令连接相关联

                            可以同时存在多个数据连接

 

         2、工作模式

                   被动模式:由客户端发起数据传输

                   主动模式:由服务器发起数据传输

                  命令连接端口:TCP 21

                   主动模式:

                            服务器端:TCP 20

                            客户端:随机端口

                   被动模式:

                            服务器端:随机端口

                            客户端:随机端口

         3、服务架构:

                   C/S

                   客户端:

                            windows :flashfxpfilezilla

                            linux:ftp lftp mftp

                   服务器端:

                            windows: serv-U  filezilla

                            linux:wu-ftp proftppureftp vsftpd

                   vsftpd:

                            体积小

                            配置相对简单

                            安全性较好

                            对数据库支持较弱,扩展性较差

 

         4、认证类型:

                   匿名用户:不需要用户名密码验证的方式   ftp  anonymous

                   本地用户:即系统用户

                   虚拟用户:

                   LDAP 轻量级目录访问协议 

                   数据通过驱动访问数据容器的接口。

                   中间层:

                   1、名称解析:

                            ns switch  network service switch 

                            通用框架  实现与各种类型存储交互以及名称解析服务。

                   2、认证服务:

                            PAM 插入式认证模块

                            提供认证功能,并且提供认证库,支持各种类型存储。

         5、数据传输模式:

                   ASCII:文本传输模式,使用ASCII字符  如:配置文件 html

                   BINARY:二进制模式 二进制的文件,如gz,jpeg,avi

 

 

二、服务器配置:

         1、服务名:vsftpd

         2、配置文件:/etc/vsftpd/vsftpd.conf

         3、配置目录:/etc/vsftpd

         4、用户控制列表文件:

                   /etc/vsftpd/ftpusers

                   /etc/vsftpd/user_list

 

三、实验:

         1、匿名用户:

                   用户名:ftp

                   文件目录:/var/ftp    /var/ftp/pub

                   下载目录:当前目录     (get  文件名 )

                   默认权限:下载

                  

                   添加上传:anon_upload_enable=YES            (put 文件名)

                   创建目录:anon_mkdir_write_enable=YES  (服务器上没有直接touch创建文件的命令)

                  

                   文件掩码:666

                   目录掩码:777

 

         2、本地用户:

                   用户名:系统用户

                   文件目录:用户家目录

                   下载目录:当前目录

                   默认权限:最大权限

 

                   必备选项:chroot_local_user=YES禁锢宿主目录

                   可选项:chroot_list_enable=YES禁锢部分用户宿主目录

                            chroot_list_file=目录  禁锢用户的列表文件

                  

                   用户限制列表文件:

                   /etc/vsftpd/user_list

                   /etc/vsftpd/ftpusers

 

                   限制实验1:

                   userlist_enable=YES

                   userlist_deny=YES

 

                   /etc/vsftpd/user_list

                   zhangsan

                   lisi

                  

                   拒绝user_list文件中出现的用户名登录FTP服务器

 

                   限制实验2:

                   userlist_enable=YES

                   userlist_deny=NO

 

                   /etc/vsftpd/user_list

                   zhangsan

                   lisi

 

                   只允许user_list文件中出现的用户名登录FTP服务器

 

                   限制实验3:

                   /etc/vsftpd/ftpusers

                   zhangsan

 

                   禁止ftpusers文件中出现的用户名登录FTP服务器,无论user_list如何设置

 

                   被动模式:

                   pasv_enable=YES

                   pasv_min_port=3000 被动模式数据传输最小端口

                   pasv_max_port=3010 被动模式数据传输最大端口

 

         3、虚拟用户

                  

                   PAM格式:

                   类型  控制选项     模块名称 模块参数

 

 

四、加密认证

         FTP+SSL=FTPS

 

         支持加密的客户端程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值