安装环境:

操作系统centos-5.2

mysql 5.0.67 源代码安装在/usr/local/mysql目录

1、proftpd-1.3.1源代码编译安装

./configure --prefix=/usr/local/proftpd \

--with-modules=mod_sql:mod_sql_mysql \ #支持mysql数据库

--with-modules=mod_quotatab:mod_quotatab_sql \ #支持磁盘配额

--with-modules=mod_tls \ #支持SSL/TLS安全传输

--with-includes=/usr/local/mysql/include \

--with-libraries=/usr/local/mysql/lib

make

make install

cp sample-configurations/mod_sql.conf /usr/local/proftpd/etc/proftpd.conf

2、proftpd.conf文件配置基本格式:

#全局设置

设置项目1 参数1

设置项目2 参数2

……

……

#某个目录的设置

……

……

#关于匿名用户的设置

……

……

……

……

3、proftpd.conf配置文件中的一些基本配置:

ServerName 服务器名称

ServerType 服务器工作类型(standalone/inted)

DefaultServer 是否启用虚拟FTP (on/off)

Port 运行端口

Umask 默认文件权限(022)

User 运行proftpd服务器的用户

Group 运行proftpd服务器的用户组

AllowOverwrite 是否允许客户端覆盖文件(安全上一般设置为off)

RequireValidShell 用户shell不在/etc/shells文件中,默认不允许登陆(on/off)

MaxInstances 20 最多有20个proftpd的PID

MaxClients 10 最多允许10个用户在线

MaxClientsPerHost 1 一个IP只允许一个帐号连接

MaxClientsPerUser 2 每个帐号在每个客户端最多同时登陆2次,可防止多线程下载软件

DisplayLogin welcome.msg ftp登陆欢迎信息文件

登入时想进入的目录位置(/* 为通配符)

匿名用户设置

所有虚拟ftp的共同设置项

3.1 虚拟FTP设置

ServerName "……"

……

……

3.2 开启ftp上传/下载的续传功能

AllowStoreRestart on #上传

AllowRetrieveRestart on #下载

3.3 限速设置

格式为: TransferRate STOR|RETR 速度(kbytes/s) user 使用者

STOR 为上传速度

RETR 为下载速度

后面不跟user的时候,针对全部用户进行限速

3.4 让proftpd支持FXP传输

AllowForeignAddress on

PassivePorts 40000 40999

3.5 加快连接速度,关闭DNS反解

UseReverseDNS off

IdentLookups off

3.6 只允许部分网段访问FTP

Order allow,deny

Allow from 10.10.

Deny from all

4、参数说明

4.1 限制的动作

CWD: Change Working Directory 改变目录

MKD: Make Directory 创建目录

RNFR: ReName FRom 更改目录名

DELE: DELEte 删除文件

RMD: ReMove Directory 删除目录

RETR: RETRieve 下载

STOR: STORe 上传

READ: 可读文件的权限,但不包括列目录

WRITE: 写文件或目录的权限,包括MKD和RMD

DIRS: 列目录的权限

LOGIN: 登陆的权限

ALL: 所有权限

4.2 所应用的对象

AllowUser/DenyUser AllowGroup/DenyGroup AllowALL/DenyAll ……

5、部分安全策略配置

5.1 隐藏proftpd服务器的版本信息

ServerIdent off

5.2 伪装Proftpd服务器

伪装成windows下的ftp服务器Serv-U

ServerIdent on "Serv-U FTP Server v6.4 for Winsock ready ……"

5.3 使用非root权限运行proftpd服务:

User nobody

Group nobody

禁止root登陆:

RootLogin off

对ftp用户使用chroot限制:

DefaultRoot ~

控制ftp命令缓冲区大小:

CommandBufferSize 512

修改proftpd服务器使用的端口:

Port 2121

5.4 监控Proftpd服务器运行情况

5.4.1 记录ftp连接数

watch -n 360 /usr/local/proftpd/bin/ftpcount

每隔360秒显示一次连接用户数量的信息

5.4.2 查找谁与FTP服务器连接

/usr/local/proftpd/bin/ftpwho

5.5 服务器配置文件的修改(proftpd.conf)

5.5.1 通过IP地址限制FTP访问

#只允许10.10.0.0/16网段用户访问

Order allow,deny

Allow from 10.10.

Deny from all

5.5.2 使用pam作为proftpd授权用户的鉴别方法

AuthPAM on

AuthPAMConfig ftp

修改/etc/pam.d/ftp相应文件

5.5.3 限制FTP命令特权

*禁止一些用户创建和删除目录的特权

Order deny,allow

DenyGroup badusers

AllowAll

*建立只能上载的FTP服务器

DenyAll

*限制对单个目录的访问

DenyAll

*限制目录浏览特权

DenyGroup newfriends

5.5.4 使不同用户之间相互隔离

一些用户通常访问ISP的FTP服务器时,会看到一些不应当的系统信息,因此隐藏这些信息是必要的,下面是一个配置:

DefaultRoot “/www”

HideNoAccess on

IgnoreHidden on

HideNoAccess指令将用户隐藏/www 目录下的所有条目,IgnoreHidden指令指示ProFTPD 服务器忽略用户所有指令。

6、加密FTP服务器与客户端的连接

需要在编译安装的时候配置支持相应模块

./configure --with-modules=mod_tls

6.1 制作凭证

# mkdir /etc/ssl/certs

# mkdir /etc/ssl/private

# chmod og-rwx /etc/ssl/private

# mkdir /etc/ssl/crl

# mkdir /etc/ssl/newcerts

修改 /etc/ssl/openssl.cnf

把 dir = ./demoCA 改成 dir = /etc/ssl

6.2 制作最高层认证中心 (Root CA)

Private Key ( Public Key )

# openssl genrsa -des3 -out /etc/ssl/private/myrootca.key 2048

# chmod og-rwx /etc/ssl/private/myrootca.key

填写凭证申请书 (然后按照问题回答即可)

#openssl req -new -key /etc/ssl/private/myrootca.key -out /tmp/myrootca.req

签发凭证

# openssl x509 -req -days 7305 -sha1 -extfile /etc/ssl/openssl.cnf -extensions v3_ca -signkey /etc/ssl/private/myrootca.key

-in /tmp/myrootca.req -out /etc/ssl/certs/myrootca.crt

# rm -f /tmp/myrootca.req

6.3 用最高层认证中心签发凭证

制作服务器用的凭证

# openssl genrsa -out /etc/ssl/private/myhost.key 2048

# chmod og-rwx /etc/ssl/private/myhost.key

填写凭证申请书

# openssl req -new -key /etc/ssl/private/myhost.key -out /tmp/myhost.req

# openssl x509 -req -days 3650 -sha1 -extfile /etc/ssl/openssl.cnf -extensions v3_req -CA /etc/ssl/certs/myrootca.crt

-CAkey /etc/ssl/private/myrootca.key -CAserial /etc/ssl/myrootca.srl

-CAcreateserial -in /tmp/myhost.req -out /etc/ssl/certs/myhost.crt

# rm -f /tmp/myhost.req

6.4 接下来设定proftpd.conf,主要是在最后加上以下有关TLS的设置:

< IfModule mod_tls.c >

TLSEngine on

TLSLog /var/log/tls.log

TLSProtocol SSLv23

TLSOptions NoCertRequest

TLSRequired On

TLSRSACertificateFile /etc/ssl/certs/myhost.crt

TLSRSACertificateKeyFile /etc/ssl/private/myhost.key

TLSCACertificateFile /etc/ssl/certs/myrootca.crt

TLSVerifyClient On

< /IfModule >

7、有关MySQL+Quota的设置

需要在编译安装的时候配置支持相应模块

./configure --with-modules=mod_sql:mod_sql_mysql

--with-modules=mod_quotatab:mod_quotatab_sql

--with-includes=/usr/local/mysql/include \

--with-libraries=/usr/local/mysql/lib

7.1 数据库的导入

mysql mysql -uroot -ppassword

create database ftpdb

grant select, update on ftpdb.* to proftpd@localhost identified by 'password'

use ftpdb

CREATE TABLE ftpgroup (

groupname varchar(16) NOT NULL default '',

gid smallint(6) NOT NULL default '5500',

members varchar(16) NOT NULL default '',

KEY groupname (groupname)

) TYPE=MyISAM COMMENT='ProFTP group table';

INSERT INTO ftpgroup VALUES ('ftpgroup', 5500, 'ftpuser');

CREATE TABLE ftpquotalimits (

name varchar(30) default NULL,

quota_type enum('user','group','class','all') NOT NULL default 'user',

per_session enum('false','true') NOT NULL default 'false',

limit_type enum('soft','hard') NOT NULL default 'soft',

bytes_in_avail float NOT NULL default '0',

bytes_out_avail float NOT NULL default '0',

bytes_xfer_avail float NOT NULL default '0',

files_in_avail int(10) unsigned NOT NULL default '0',

files_out_avail int(10) unsigned NOT NULL default '0',

files_xfer_avail int(10) unsigned NOT NULL default '0'

) TYPE=MyISAM;

CREATE TABLE ftpquotatallies (

name varchar(30) NOT NULL default '',

quota_type enum('user','group','class','all') NOT NULL default 'user',

bytes_in_used float NOT NULL default '0',

bytes_out_used float NOT NULL default '0',

bytes_xfer_used float NOT NULL default '0',

files_in_used int(10) unsigned NOT NULL default '0',

files_out_used int(10) unsigned NOT NULL default '0',

files_xfer_used int(10) unsigned NOT NULL default '0'

) TYPE=MyISAM;

CREATE TABLE ftpuser (

id int(10) unsigned NOT NULL auto_increment,

userid varchar(32) NOT NULL default '',

passwd varchar(32) NOT NULL default '',

uid smallint(6) NOT NULL default '5500',

gid smallint(6) NOT NULL default '5500',

homedir varchar(255) NOT NULL default '',

shell varchar(16) NOT NULL default '/sbin/nologin',

count int(11) NOT NULL default '0',

accessed datetime NOT NULL default '0000-00-00 00:00:00',

modified datetime NOT NULL default '0000-00-00 00:00:00',

PRIMARY KEY (id)

) TYPE=MyISAM COMMENT='ProFTP user table' ;

7.2 在proftpd.conf文件中加入sql相关配置:

SQLAuthTypes Backend Plaintext

#Backend表示用户认证方式为MySQL数据库的认证方式

#Plaintext表示明文认证方式,排在最前面的为最先使用的方式

SQLAuthenticate users* groups*

# databasename@host database_user user_password

SQLConnectInfo ftpdb@localhost proftpd password

SQLUserInfo ftpuser userid passwd uid gid homedir shell

SQLGroupInfo ftpgroup groupname gid members

SQLHomedirOnDemand on

#如果用户主目录不存在,则系统会根据此用户在用户数据表中的homedir字段的值新建一个目录

# Update count every time user logs in

SQLLog PASS updatecount

SQLNamedQuery updatecount UPDATE "count=count+1,accessed=now() WHERE userid='%u'" ftpuser

# Update modified everytime user uploads or deletes a file

SQLLog STOR,DELE modified

SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

7.3 加入Quota磁盘配额相关设置

QuotaEngine on

QuotaDirectoryTally on

QuotaDisplayUnits Mb

QuotaShowQuotas on

QuotaLog "/var/log/quota"

SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used+ %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies

SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies

QuotaLimitTable sql:/get-quota-limit

QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

7.4 ftpquotalimits表设置说明

name: - 用户帐号

quota type: - user, group, class, all (we use user)

per_session: - true or false (we use true)

limit_type: - 硬限制 or 软限制 (我们一般用硬限制)

bytes_in_avail: - 允许上传的字节数

bytes_out_avail: - 允许下载的字节数

bytes_xfer_avail: - 允许传输的字节数(包括上传/下载)

files_in_avail: - 允许上传的文件数

files_out_avail: - 允许下载的文件数

files_xfer_avail: - 允许传输的文件数(包括上传/下载)

8、其他

8.1 使用命令ftpshut

基本格式:

ftpshut [ -l min ] [ -d min ] time [ warning-message ... ]

参数说明:

-l min: 在ftp关闭服务之前的几分钟内,尝试建立新的ftp连接均不被接受

-d min: 在ftp关闭服务之前的几分钟内,已经建立的ftp连接将被中止

time: 在多少时间后,服务器将关闭ftp服务,格式有两种

+number 经过number分钟后关闭

MMHH 在今天MM:HH服务器将关闭

8.2 welcome.msg 欢迎文件可用参数

%T 目前的时间

%F 所在硬盘剩下的容量

%C 目前所在的目录

%R Client 端的主机名称

%L Server 端的主机名称

%U 使用者帐户名称

%M 最大允许连接人数

%N 目前的服务器连接人数

%E FTP服务器管理员的 email

%i 本次上传的文件数量

%o 本次下载的文件数量

%t 本次上传+下载的文件数量

应用举例:

欢迎您%U, 这是Frank的测试FTP服务器;

目前时间是:%T;

本服务器最多允许%M个用户连接数;

目前服务器上已有%N个用户连接数;

目前你所在的目录是%C;

目录所在的硬盘还剩下%F字节。

8.3 proftpd的web管理软件:Myftpadmin-0.61

下载地址:http://www.sfr-fresh.com/unix/privat/myftpadmin_061.tar

这个软件需要建立一些组和用户,自己看着办。

还有最好开启ROOT登陆,因为比较方便,另外常见的问题

正在连接至 10.2.252.17, 端口 2121 (#1)

已连接. 正在等待回应.

500 FTP server shut down (going down at Sat Oct 17 15:40:12 2009) -- please try again later

QUIT

连接尝试失败.

这是因为使用ftpshut 后会在etc下生成一个shutmsg文件,需要将它手动删除才行。

示例配置文件如下

ServerName "ProFTPD Default Installation"

ServerType standalone

DefaultServer on

Port 2121

Umask 022

# 注最多30个ip同时登录使用ftp;

MaxInstances 2500

# 设置最大的尝试登陆的次数,如果超过自动断开连接

MaxLoginAttempts 5

# 设置运行Proftpd服务的系统用户和组

User nobody

Group nobody

# 最大的用户数

MaxClients 3000

# 连接时的MSG

#DisplayConnect /usr/proftpd1.3/etc/connect.msg

#DisplayGoAway /usr/proftpd1.3/etc/goway.msg

# 输入quit命令后的MSG

#DisplayQuit /usr/proftpd1.3/etc/quit.msg

#MaxHostsPerUser 5

# 对不起,一个IP只允许一个连接

#MaxClientsPerHost 5

RootLogin on

RequireValidShell off

UseReverseDNS off

IdentLookups off

TimeoutStalled 600

TimeoutLogin 600

TimeoutIdle 600

TimeoutNoTransfer 600

# 让proftp支持现在流行的FXP传输方式,默认是不支持的

AllowForeignAddress on

# 端口也可自己指定

PassivePorts 64000 65500

# 允许断点续传是默认支持的,不用设置

# 这里有一个技巧,你可以控制FTP中任一个目录有"断点续传"的功能,请设置下面一行,(例:)

AllowStoreRestart on

AllowRetrieveRestart on

# 屏蔽服务器版本信息

ServerIdent off

# 设置ftpuser组只能访问自己的目录

DefaultRoot /usr/wwwroot claymore

# 底下则是与目录有关的设定!在这个设定中,显示允许读写与覆盖档案!

# AllowOverwrite 就是允许覆写的意思!

Order allow,deny

Allow from 10.2.252.

Allow from 202.115.153.

Allow from 202.115.156.

Deny from all

AllowOverwrite on

# 底下与匿名登入者有关!由 显示:『预设的匿名登入之

# 根目录为 ftp 这个使用者的家目录!』,因为 ~ 代表家目录的意思!

# 而且,匿名登入主机后,该 process 取得的 user:group 权限为 ftp:ftp!

# 至于那个 UserAlias 就是在设定『名字的别名』啊!语法为:

# UserAlias "登入者的账号" "实际 Linux 主机的账号"

# MaxClients:最多仅允许 10 个 anonymous 登入我们主机的意思!

# DisplayLogin:当使用者登入之后的欢迎画面的档案内容!

# DisplayFirstChdir:转换到某目录时(cd指令),显示该目录的注意事项档案内容

User ftp

Group ftp

UserAlias anonymous ftp

MaxClients 200

#MaxHostsPerUser 5

MaxClientsPerHost 1

TransferRate RETR 200 user anonymous,ftp

TransferRate STOR 100 user anonymous,ftp

#DisplayLogin welcome.msg

# 底下则是限制 anonymous 『不具有写入的权限!』因为 WRITE 是写入,

# 加上 DenyAll 则是写入的权限被取消之意!

DenyAll

myftpadmin+proftpd+mysql架设ftp服务器_proftpd – 碎言碎语相关推荐

  1. myftpadmin+proftpd+mysql架设ftp服务器_linux下用Proftpd搭建ftp服务器及配置方法

    首先proftpd是一个开源软件,其官方地址是http://www.proftpd.org,目前最高版本是:1.3.1(非稳定版),稳定的版本是1.3.0,下载文件为proftpd-1.3.0a.ta ...

  2. myftpadmin+proftpd+mysql架设ftp服务器_配置proftpd-admin管理proftpd服务器

    系统:CentOS 5.7 64bit 原有环境:LNMP.org v0.7 proftpd版本:1.3.4a web管理:proftpd-admin 1.2 一. ProFTPd 的安装 1. 下载 ...

  3. myftpadmin+proftpd+mysql架设ftp服务器_[教程]在CentOS7上配置 FTP服务器 Proftpd 支持 MySQL 虚拟用户加密认证以及磁盘限额(Quota)...

    有一些很古老的教程,一般都是走编译安装路线的,本文是教你不需要编译,而且随时都可以跟随 CentOS 升级 Proftpd 到最新版本,以避免可能的漏洞攻击.利用 Proftpd 现成的配置以及设置好 ...

  4. 内网架设FTP服务器(serv-u)

    1. 内网FTP服务器的概念 设想下面的这种环境:几台计算机组成一个局域网,该局域网中拥有一台DHCP服务器负责为局 域网中每台计算机分配IP地址.其中有一台计算机(或网络设备)作为网关(可以与DHC ...

  5. 在Windows XP 上 架设 FTP服务器

    架设一台FTP服务器其实很简单.首先,要保证你的机器能上网,而且有不低于ADSL 512Kbps的网络速度.其次,硬件性能要能满足你的需要.最后,需要安装FTP服务器端的软件,这类软件很多,可以使用微 ...

  6. CryptoTab 服务器_如何架设FTP服务器,如何架设FTP服务器,具体架设方法

    FTP服务器,则是在互联网上提供存储空间的计算机,它们依照FTP协议提供服务. FTP的全称是File Transfer Protocol(文件传输协议).顾名思义,就是专门用来传输文件的协议.简单地 ...

  7. 详细讲解架设FTP服务器的两种方法

    摘要: 架设一台FTP服务器其实很简单.首先,要保证你的机器能上网,而且有不低于ADSL 512Kbps的网络速度.其次,硬件性能要能满足你的需要.最后,需要安装FTP服务器端 架设一台FTP服务器其 ...

  8. Ubuntu下架设FTP服务器(转)

    Ubuntu下架设FTP服务器 Linux下提供了很多的ftp服务器,这里我选用了安全,快速,简单的vsftpd作为FTP服务器.本文是我在自己的Ubuntu 10.10 -32 位系统下搭建的.搭建 ...

  9. 用LINUX架设FTP服务器

    第二章 用LINUX架设FTP服务器 2.1 什么是FTP 2.2 安装Wu-FTP 2.3 让FTP服务器跑起来 2.4 配置文件的设置 2.5 开设只能FTP的帐户 2.6 设置虚拟FTP主机 2 ...

最新文章

  1. 异部时钟电路的FPGA设计
  2. 2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - I. 垒骰子
  3. 张军:围绕“WebRTC+AI+大数据”创新
  4. mybatis if test 判断参数_什么?你还在if判断参数?Spring Boot 注解进行参数校验真香...
  5. php网上实训指导书,PHP网站开发技术-实训指导书2016吐血制作
  6. activiti学习
  7. 【小姨子】 基本信息(拼音,读音等)
  8. #Python语言程序设计Demo - 七段数码管绘制
  9. 实现mvcc_数据库中的引擎、事务、锁、MVCC(三)
  10. 怎么将CAD图纸快速导入转换成常见的黑白JPG格式?
  11. Kotlin 1.4 版本正式发布:新功能一覽
  12. Power bi 3.14 饼图
  13. 值得看看的艺术影片 (转)
  14. loadrunner12录制事件一直卡在11就不动了,大佬们,求助啊!!!
  15. Vue中分页组件的用法
  16. gitlab服务器代码存储位置,gitlab仓库存储位置的修改方法
  17. Cocos Creator 写的小游戏
  18. Tableau用多线图展示多个指标
  19. [产品设计]华为云的产品经理不是一般得弱
  20. 计算机一级wps office选择题技巧,计算机一级WPSoffice考前练习题和答案

热门文章

  1. chrome设置开启GPU加速
  2. node打包时遇到的问题
  3. 餐饮行业的营销策略是什么?
  4. lcd1602显示和led显示的区别在哪里
  5. 微信小程序 语音录制功能和文件(ppt、word、excel、pdf、txt格式)上传
  6. 解决锚点定位刷新页面的问题
  7. 模型检测--工具PRISM
  8. 自动表单生成工具说明(后端、桌面、web、移动端)
  9. WorkBench简介
  10. Fallout 4 辐射4 技巧统计