分享到
  • 一键分享
  • QQ空间
  • 新浪微博
  • 百度云收藏
  • 人人网
  • 腾讯微博
  • 百度相册
  • 开心网
  • 腾讯朋友
  • 百度贴吧
  • 豆瓣网
  • 搜狐微博
  • 百度新首页
  • QQ好友
  • 和讯微博
  • 更多...

百度分享

  • 相册
  • 广场
  • 游戏
  • 登录
  • 注册
关注此空间

我的空间

搜索+互联网+EC+系统架构

2009-07-18 16:29

FtpServer配置详解

可以去CSDN上下载完整PDF版本:http://download.csdn.net/source/1500341

1与Spring整合 - 1 -
2 server元素 - 1 -
3 listener元素 - 2 -
4 User Manager - 4 -
4.1 个性化User Manager - 5 -
4.2 数据库用户管理方式 - 5 -
4.2.1配置参数 - 6 -
4.2.2 数据源配置 - 6 -
4.2.3FTP_USER表结构 - 6 -
4.2.4 基于文件的用户管理 - 7 -

FtpServer配置是基于XML的,它匹配了XML Schema,在XML编辑器里可以方便的修改进行配置。XML文档结构如下:
<server xmlns="http://mina.apache.org/ftpserver/spring/v1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd"
id="myServer">
</server>
其中id是必需的,设置服务器的标识。
在server元素里面,可以添加新的元素配置server实例中的组件,如listeners(监听器) 和user managers用户管理器。
1与Spring整合
Apache FtpServer使用了Spring框架实现配置,因此从Spring框架中可以得到很多配置的好处。例如,可以将server元素置于Spring配置文件的任何位置,当FtpServer在classpath下时,Spring可以为你启动FtpServer。
2 server元素
一些配置是针对整个server的,影响到所有的listener和登陆限制,强加的listener登陆人数。采用XML配置,可有的配置项如下:
<server xmlns="http://mina.apache.org/ftpserver/spring/v1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://mina.apache.org/ftpserver/spring/v1 http://mina.apache.org/ftpserver/ftpserver-1.0.xsd"
    id="server"
    max-logins="500"
anon-enabled="false"
max-anon-logins="123"
max-login-failures="124"
login-failure-delay="125"
>
...
</server>

Server元素详解
元素 描述 是否必需 默认值
id XML配置文件中的唯一标识符 Yes
max-logins 最大并发用户数 No 10
max-anon-logins 最大匿名用户数 No 10
anon-enabled 是否允许匿名用户登陆 No true
max-login-failures 连接关闭前登陆失败后尝试次数 No 3
login-failure-delay 登陆失败后的时间延迟(ms),用于限制配置暴力破解密码 No 500

3 listener元素
Listener是FtpServer中负责监听网络socket接口,当客户端连接后创建用户session、执行命令等。一个FtpServer可以同时拥有多个listerner,以下是一些例子:
1)一个在21端口的默认监听;
2)一个在21端口的超速通道监听,一个隐式的在22端口上的SSL监听
3)一个在内部IP超速通道监听,一个外部IP的SSL监听
Listener以name标识,默认Listener的名称是“default”。
主要的网络配置表现在listener上,例如监听端口、SSL配置。
在XML配置格式内,所有的监听器以“listeners”元素进行配置。因此一个XML配置看起来像:
<listeners>
      <nio-listener name="default" port="2222" implicit-ssl="true" idle-timeout="60" local-address="1.2.3.4">
        <ssl>
         <keystore file="mykeystore.jks" password="secret" key-password="otherSecret" />
             <truststore file="mytruststore.jks" password="secret"/>
       </ssl>
       <data-connection idle-timeout="60">
         <active enabled="true" local-address="1.2.3.4" local-port="2323" ip-check="true"/>
         <passive ports="123-125" address="1.2.3.4" external-address="1.2.3.4" />
        </data-connection>
        <blacklist>1.2.3.0/16, 1.2.4.0/16, 1.2.3.4</blacklist>
    </nio-listener>
</listeners>

nio元素
装配FtpServer的监听器叫做nio-listener,因为它是基于Java NIO的以提升性能和规模。
元素 描述 是否必需 默认值
name 监听名称,如果是“default”,它会覆盖默认的监听器 Yes
port 监听器接受连接的端口 No 21
local-address 监听器绑定的服务器地址 No All available
implicit-ssl 如果使用隐式的SSL,其值为true No false
idle-timeout 非活跃客户端断开时间。如果值设为0,则闲置时间不可用(一个客户端可以永远闲置,如果没有从服务器断开)如果一个较低的最大闲置时间配置给用户(比如使用PropertiesUserManager闲置时间配置),它会覆盖listener值.这样listener值强加以更高的阈值 ,但是低层值可以提供给每个用户。 No 300

ssl元素
对于需要FTPS 支持的Listener必须。
元素 描述 是否必需 默认值
protocol 使用SSL协议,支持的值有“SSL”和“TLS” No TLS
client-authentication 是否客户端认证?支持的值有:“NEED”, “WANT”和“NONE” No NONE
enabled-ciphersuites 对于本连接的一个可用的逗号分隔的密码组件列表。可用的加密组件依赖于所采用的Java版本, 这里 是Sun's JSSE 提供. No 所有的加密组件均可用

keystore元素
如果提供了ssl元素,它将是必须的。它为密钥存储提供配置,用于查找私钥和服务器证书。
元素 描述 是否必需 默认值
file 密钥存储路径 Yes
password 密钥存储密码 Yes
key-password 密钥存储中的密钥密码 No 密钥存储密码
key-alias 密钥存储中Key的别名 No Uses first key found
type 密钥存储类型 No JKS
algorithm 密钥存储算法 No SunX509

truststore
该元素用于配置信任存储,以定位信任的证书。
元素 描述 是否必需 默认值
file 密钥存储路径 Yes
password 密钥存储密码 No 无密码可读取证书
type 密钥存储类型 No JRE密码钥存储, 一般情况为 JKS
algorithm 密钥存储算法 No SunX509

data-connection元素
为数据连接提供配置
元素 描述 是否必需 默认值
idle-timeout 闲置数据连接关闭时间 No 300

active元素
为积极数据连接提供配置
元素 描述 是否必需 默认值
enabled 如果积极数据连接不被允许,值为false No true
local-address 服务器创建数据连接时使用的本地地址 No Any available
local-port 服务器创建数据连接时使用的本地端口 No Any available
ip-check 服务器是否检查数据连接IP否与控制socket的IP相同? No false

passive元素
为消极数据连接提供配置
元素 描述 是否必需 默认值
ports 服务器创建消极数据连接时使用的本地端口 No Any available port
address 服务器监听消极数据连接的地址 No 与控制socket地址相同
external-address 服务器声明在PASV答复中监听的地址。当服务器在NAT防火墙后,客户端看到的IP不同于服务回使用的IP时很有用。 No

blacklist元素

4 User Manager
FtpServer同时支持文件方式和数据库方式的用户管理。
4.1 个性化User Manager
可以编写自己的UserManager整合应用,自编写的用户管理器需要实现org.apache.ftpserver.ftplet.UserManager接口。在Spring配置文件中,需要bean元素来配置你的UserManager。这给你了所有Spring的优势,可以融合其他的bean。也可以根据Spring的扩展机制,提供自己的XML格式。
4.2 数据库用户管理方式
可以将用户信息存储在数据库中,JBDC用于访问数据库。这个User Manager已经在MYSQL、HSQLDB和FireBird数据库下进行了测试。所有的信息存储在FTP_USER表中,一个示例的数据库DDL文件在<INSTALL_DIR>/res/ftp-db.sql下。需要将JDBC包加入到classpath下。
示例:
<db-user-manager encrypt-passwords="salted">
   <data-source>
    <beans:bean class="some.datasoure.class" />
   </data-source>
   <insert-user>INSERT INTO FTP_USER (userid, userpassword,
    homedirectory, enableflag, writepermission, idletime, uploadrate,
    downloadrate) VALUES ('{userid}', '{userpassword}', '{homedirectory}',
    '{enableflag}', '{writepermission}', {idletime}, {uploadrate},
    {downloadrate})</insert-user>
   <update-user>UPDATE FTP_USER SET
    userpassword='{userpassword}',homedirectory='{homedirectory}',enableflag={enableflag},writepermission={writepermission},idletime={idletime},uploadrate={uploadrate},downloadrate={downloadrate}
    WHERE userid='{userid}'</update-user>
   <delete-user>DELETE FROM FTP_USER WHERE userid = '{userid}'
   </delete-user>
   <select-user>SELECT userid, userpassword, homedirectory,
    enableflag, writepermission, idletime, uploadrate, downloadrate FROM
    FTP_USER WHERE userid = '{userid}'</select-user>
   <select-all-users>SELECT userid FROM FTP_USER ORDER BY userid
   </select-all-users>
   <is-admin>SELECT userid FROM FTP_USER WHERE userid='{userid}' AND
    userid='admin'</is-admin>
   <authenticate>SELECT userpassword from FTP_USER WHERE userid='{userid}'</authenticate>
</db-user-manager>

4.2.1配置参数
db-user-manager element
元素 描述 是否必需 默认值
encrypt-passwords 它表明了密码是如何存储的。可用值为:clear普通文本,MD5哈希算法或者salted哈希盐化密码。建议采用salted。 No md5
子元素 描述 是否必需 默认值
data-source 普通Spring bean配置的数据源 Yes
insert-user SQL语句插入一个新的用户,所有的动态值在运行时会被取代。 Yes
update-user SQL语句插入修改一个用户,所有的动态值在运行时会被取代。 Yes
delete-user SQL语句删除一个用户,所有的动态值在运行时会被取代。 Yes
select-user SQL语句查询一个用户,所有的动态值在运行时会被取代。 Yes
select-all-users SQL语句插入所有用户,所有的动态值在运行时会被取代。 Yes
is-admin 查询一个用户是否是管理员用户,所有的动态值在运行时会被取代。 Yes
authenticate QL语句认证一个用户,所有的动态值在运行时会被取代。 Yes

4.2.2 数据源配置
数据源必须按数据库提供方描述那样配置,可以用BasicDataSource来满足一般的要求,它是由Apache Commons DBCP 项目组提供。
使用BasicDataSource连接Mysql。
<data-source>
<beans:bean class="org.apache.commons.dbcp.BasicDataSource">
   <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
   <beans:property name="url" value="jdbc:mysql://localhost/ftpd" />
   <beans:property name="username" value="myuser" />
   <beans:property name="password" value="secret" />
   </beans:bean>
</data-source>

4.2.3FTP_USER表结构
Column Type Default value
userid VARCHAR(64), Primary key
userpassword VARCHAR(64)
homedirectory VARCHAR(128)
enableflag BOOLEAN TRUE
writepermission BOOLEAN FALSE
idletime INT 0
uploadrate INT 0
downloadrate INT 0
maxloginnumber INT 0
maxloginperip INT 0
4.2.4 基于文件的用户管理
这是默认的用户管理方式,使用properties文件管理所有的用户。
示例:
<file-user-manager file="users.properties" encrypt-passwords="true" />

file-user-manager元素
元素 描述 是否必需 默认值
file 存储用户的properties文件路径 Yes
encrypt-passwords 加密方式,具体见前面 No md5
5 配置消息端口
当客户端需要一个消极端口连接时,服务器端应当提供相应的端口以供连接使用。默认情况下,FtpServer会选择任何可以利用的端口。然而,这也可以被使用passive data connection配置覆盖。允许的的消极端口可以被指定到一个端口(如20020),多个端口(如20020,20030,20040),或者一个范围(20020-20030)。默认的一个开放关闭的范围,以1开始,65535结束;例如范围60000-,是指从60000-65535。任何一个指定的值或者范围的组合,都可以使用。
当服务器端使用完所有的端口(一个客户端处理一个数据转换),下一个客户端必须等待可用端口。因此,建议采用多个端口。
如果一个值(某个指定端口,或者一个范围值的开始或者结束),在允许的0-65535之外,则在服务器启动的时候就会报错。
示例:
123 端口 123 作为passive port
123,133 端口123 和 133作为passive port
123-125 从123 到125内任何一个端口都可以作为passive port
123-125, 127, 129-130 从123 到125内任何一个端口, 端口 127 或从129到130内的端口 都可以作为passive port
0   任意一个端口均可作为passive port

6 TLS-SSL Support
这里解释了怎么使Apache FTP Server使用Transport Layer Security (TLS)来加密服务器-客户端的通信。
FtpServer使用Java Secure Sockets Extension (JSSE) 基础组件提供TLS/SSL socket。JSSE与一些提供商Java发布版一起。对于这些发布版本,请遵从供应商的指示配置JVM以使用JSSE服务。
6.1安全模式
显式安全模式
在这种模式下服务器支持安全和非安全的连接,一旦得到客户端请求(通过SSL认证),服务器端转向SSL/TLS模式。在这种情况下,服务器端不应该采用隐式SSL(默认情况下值):
<nio-listener name="default" implicit-ssl="false">

隐式安全模式
采用隐式的SSL连接,即总是在控制socket上可用。需要做的第一件事情就是告诉listener:
<nio-listener name="default" implicit-ssl="true">
如果设置采用隐式的SSL连接,应该考虑数据连接的隐式安全。
6.2 数据连接安全
隐式安全监听器并不保证加密数据转换。要在数据连接中使用SSL/TLS客户端要么必须发送“PROT P”命令,要么隐式安全也能在数据连接中可用。
<data-connection implicit-ssl="true">
如果没有显式地配置SSL密钥存储(keystores)和信任存储(truststores)为数据连接,它将从listener中继承。这是基本的配置。
不同的FTP客户端动作不同,关于隐式的数据连接,一些臆想了一个SSL socket,而一些总是发送“PROT P”命令,下面表格中展示了一些客户端的特性,请报告一些其他的:

FTP客户端 动作
FileZilla 在隐式模式下自动发送 "PROT P"命令
DartFTP/PowerTCP 臆想了一个SSL socket

#开源组件研究
分享到:
举报 浏览(1795) 评论 转载

你可能也喜欢

  • 请把孩子的话当回事
  • yoyo & Spelling Bee
  • 透过依然澄澈的眼睛,看你……
  • 麦穗家 两岁宝宝低幼绘本55本推荐
  • 小叮当成长月记(十五)
  • 暖洋洋的春天
  • JSP页面静态化总结之一使用URLRewrite实现url地址伪静态化

本文最近访客

  • 止于至善123

    12月22日
  • 笨自己
    11月26日
  • hczy1985
    8月24日
  • tieying02
    8月23日
  • gpxknk
    7月29日
  • V_仔_仔_V
    7月6日
  • 0604020213
    5月16日
  • 沧济先生
    4月24日
评论
 同时评论给 
 同时评论给原文作者 

 发布

500/0

收起|查看更多

帮助中心| 空间客服| 投诉中心| 空间协议
©2014 Baidu
百度空间,让世界发现你
向世界展示自己,发布喜爱的图片、文字和音乐

简单注册登录

FTPserver 配置相关推荐

  1. Apache FtpServer配置步骤总结

    Apache旗下的FtpServer(免费开源,跨平台,java语言编写)配置步骤总结 1.在windows服务器安装jre,下载jre7,并安装.(java运行环境),经过实验,不必安装jdk. 2 ...

  2. 华为防火墙USG6000通过WEB图形界面配置案例

    华为防火墙USG6000:NAT和NAT Server配置案例 网络拓扑图 通过WEB方式登录到防火墙 登录成功 配置防火墙使内网用户通过PAT方式上网 配置防火墙使得外网用户能访问企业DMZ区域的F ...

  3. linux杂谈(十四):ftp的企业应用级的配置(一)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/linux_player_c/article/details/24869877 1.ftp简单介绍 ( ...

  4. 关于腾讯云server使用FTP具体配置教程

    本文文件夹:-------------------------------------------------------- [-] 腾讯云server介绍 关于腾讯云server使用感受 作为开发人 ...

  5. Pureftpd操作指南

    前言 Pure-ftpd提供了一个轻量级.快速.多语言.具备基本功能特性的FTPServer配置方案.本文展示了如何在CentOS7.x上安装和配置Pure-ftpd,并在此过程中阐述PUre-Ftp ...

  6. seci-log 1.11 发布 增加了ftpserver,远程ftp,sftp采集简化配置等功能

    2019独角兽企业重金招聘Python工程师标准>>> 日志分析软件 seci-log 1.11发布,增加了增加了ftpserver,远程ftp,sftp采集简化配置等功能.上篇文章 ...

  7. FtpServer的安装配置方法

    3.5.1        FtpServer的安装                 Linux系统FTP服务器需要安装vsftpd软件,步骤如下:          1.    确认是否已安装vsft ...

  8. CentOS7下vsftp配置

    1.安装vsftp yum install vsftpd 2.修改配置文件 vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=Y ...

  9. pureftpd + pureftp-user-manager 构建磁盘配额,速率限制,web管理ftpserver

    ftpserver: 内网:172.150.84.143  公网ip:112.113.114.115 1.安装apache,php,mysql-client包,并准备映射的用户 yum -y inst ...

  10. Linux下防火墙iptables用法规则详及其防火墙配置

    原博主文章更美丽: http://www.cnblogs.com/yi-meng/p/3213925.html iptables规则 规则--顾名思义就是规矩和原则,和现实生活中的事情是一样的,国有国 ...

最新文章

  1. 《机器学习思维导图》,一图掌握机器学习知识要点
  2. [汇编与C语言关系]2. main函数与启动例程
  3. 我对观察者模式的理解,之前一直很乱
  4. 计算机二级考试3月时间安排,2017年3月份计算机二级考试时间安排
  5. php循环建立新的文件根据文件名移动文件到指定文件夹修改文件名称
  6. C++中固定长度短字符串比较是否相同,忽略大小写比对时的小技巧
  7. 利用XSS盗取cookies
  8. 大数据平台基础架构hadoop安全分析
  9. Theory: If statement(理论:如果语句)
  10. myeclipse误删文件恢复
  11. wps如何自己制作流程图_怎么制作流程图,wps自动生成流程图方法
  12. 大班如果我有机器人教案_大班科学机器人教案
  13. 以前给客户开发了一个本地同城小程序
  14. linux usb gadget 日志
  15. java libraries在哪_java.library.path在哪?
  16. 两分钟研究透idea中Git文件的颜色,绿红蓝白灰
  17. Sigfox获法国最大一笔VC投资,打造物联网自己的互联网
  18. 4阶显式Runge-Kutta法解常微分方程的通用程序--python实现
  19. Ubuntu解决键盘错乱与图形化切换
  20. Arduino提高篇04—U8g2库驱动OLED

热门文章

  1. Java开发笔记(二)Java工程的帝国区划
  2. 大韩航空如何成为一流航空——等级文化与称呼的改变
  3. 网站安全防护方案--WEB应用防火墙
  4. 前端小demo:星星闪烁
  5. [源码和文档分享]基于HTML5和JS实现的在线电子钢琴网页版
  6. 嘿嘿,长假最后一天!摸鱼一把,我用Python做一个美女消消乐!
  7. LOL自制皮肤0-介绍我自己
  8. in作为介词的用法_介词in的用法
  9. 消除无法用内置管理账户打开sticky notes
  10. Go基础:路径、文件名和包名的关系