Debian + Proftp+ldap+Quota+SSL參考網上各內容整合此文,測試ok
准备: Debian 5.0.6 光盘DVD1自带包. Debian 5.0.6 LDAP 2.4.11-1 Proftpd
1.3.1-17lenny4
安装: apt-get install
slapd ldap-utils apt-get install
proftpd
常用命令: /etc/init.d/proftpd stop /etc/init.d/proftpd restart /etc/init.d/slapd stop /etc/init.d/slapd start /etc/init.d/slapd restart ftpquota
--show-records --type=tally --table-path=/etc/proftpd/ftpquota.tallytab ftpquota --update-record
--type=tally --name=name --quota-type=quotatype 配置: LDAP
配置: 配置/etc/ldap/slapd.conf allow
bind_v2
include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema
pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args loglevel 256 modulepath /usr/lib/ldap moduleload back_bdb sizelimit
500 tool-threads
1
backend bdb database bdb
suffix "dc=huatest,dc=com" rootdn
"cn=admin,dc=huatest,dc=com" rootpw {MD5}eTg4/TEB7NkqYOSdMDivmA== directory "/var/lib/ldap"
dbconfig
set_cachesize 0 2097152 0 dbconfig
set_lk_max_objects 1500 dbconfig
set_lk_max_locks 1500 dbconfig
set_lk_max_lockers 1500
index objectClass eq lastmod on checkpoint 512 30
access
to attrs=userPassword,shadowLastChange by
dn="cn=admin,dc=huatest,dc=com" write by anonymous auth by self write by * none
access
to dn.base="" by * read
access
to * by
dn="cn=admin,dc=huatest,dc=com" write by * read
rootpw
加密密码的生成 将密码经过
MD5 运算,得到
32 字节的字符串,然后每2个字节压缩成一个十六进制字符,这样得到16字节的字符串,最后经过Base64编码。 使用
OpenLDAP 自带命令
ldif文档导入 需要先添加"dc=huatest,dc=com"这个domain。初始化的时候没有自动创建这个entry. test.ldif文件內容: dn:
dc=huatest,dc=com dc:
huatest objectclass:
top objectclass:
domain o:
huatest
ftpuser.ldif
文件內容 dn:
o=ftpusers, dc=huatest,dc=com objectClass:
top objectClass:
organization o:
ftpusers
ftpuser1.ldif
文件內容 dn:
uid=ftpuser1, o=ftpusers, dc=huatest,dc=com gidNumber:
65534 userPassword::
e1NIQX1pOHNRRzRkZXdxWDJ6UWhXa0o1UVM4QlRrN1k9 uid:
ftpuser1 uidNumber:
104 objectClass:
top objectClass:
posixAccount objectClass:
account homeDirectory:
/data/ftp/home/ftpuser1 cn:
ftpuser1
ldapadd
-x -D "cn=admin,dc=huatest,dc=com" -w secrect -f test.ldif ldapadd
-x -D "cn=admin,dc=huatest,dc=com" -w secrect -f ftpusers.ldif ldapadd
-x -D "cn=admin,dc=huatest,dc=com" -w secrect -f ftpuser1.ldif
Proftpd的配置 和 LDAP 整合的proftpd关键设置: 1, 编辑 /etc/proftpd/proftpd.conf,启用 LDAP 配置文件 /etc/proftpd/ldap.conf 的加载 Include /etc/proftpd/ldap.conf 2,编辑 /etc/proftpd/modules.conf,启用 LDAP 模组 LoadModule mod_ldap.c 3,编辑/etc/proftpd/ldap.conf 配置 LDAPServer,注意不要使用 URI 或者域名,直接使用 IP,否则可能连接失败 LDAPServer 127.0.0.1 如果 LDAP 支持匿名绑定,下面配置中的绑定用户DN和口令可设置为空 LDAPDNInfo "cn=admin,dc=huatest,dc=com" "secret" BaseDN 以及 LDAP 查询的 filter 通过语句 LDAPDoAuth 提供 LDAPDoAuth on "o=ftpusers,dc=huatest,dc=com" "(&(uid=%u)(objectClass=posixAccount)(ou=ftp))" 使用用户提供的口令和搜索到的用户 DN 绑定 LDAP 服务器,来验证口令 LDAPAuthBinds on ProFTPD 中和 LDAP 相关的其它重要设置: 如果 LDAP 中没有用户ID和组ID,即没有 posixAccount 相关字段,使用缺省值。 LDAPDefaultGID 65534 LDAPDefaultUID 104 LDAPForceDefaultGID on LDAPForceDefaultUID on LDAPDoUIDLookups off LDAPDoGIDLookups off 设置用户的主目录。为了避免和系统用户主目录混淆,设置为 /data/ftp/home 作为 LDAP 用户登录的主目录 LDAPGenerateHomedir on LDAPGenerateHomedirPrefix /data/ftp/home LDAPForceGeneratedHomedir off # 在用户主目录下,创建用户个人目录。如果设置为 on,则所有用户共享同一主目录 LDAPGenerateHomedirPrefixNoUsername off # 如果用户主目录不存在,创建它 CreateHome on 允许用户没有合法 shell,也可以登录。因为 LDAP 用户如果没有 posixAccount 扩展,是没有 shell 设置的。而 ProFTPD 的 LDAP 指令集中没有缺省shell 的设置。还好,可以设置为忽略: RequireValidShell off
编辑/etc/proftpd/proftpd.conf 限制用户只能访问自己的主目录 DefaultRoot ~ Proftpd不显示ftp服务器版本信息 ServerIdent off 限速 TransferRate RETR 100:52428800表示对下载50M以下的文件不限速,超过50M了才限速。这里,52428800的单位是Byte。这个可以用来限制大文件的下载 TransferRate
RETR 512:52428800 TransferRate
STOR 512:52428800 MaxClients
20 MaxClientsPerHost
10 MaxClientsPerUser
10 上传续传
AllowOverwrite on
AllowRetrieveRestart on
AllowStoreRestart on
磁盘配额 编辑/etc/proftpd/modules.conf LoadModule
mod_ldap.c
编辑/etc/proftpd/proftpd.conf <IfModule
mod_quotatab.c> LDAPAttr
ftpQuota description QuotaEngine
on LDAPDoQuotaLookups
on "o=ftpusers,dc=huatest,dc=com" "(&(uid=%u)(objectClass=posixAccount))"
"100" QuotaLimitTable
ldap: QuotaTallyTable
file:/etc/proftpd/ftpquota.tallytab QuotaShowQuotas
on QuotaOptions
ScanOnLogin QuotaLog
/var/log/proftpd/ftpquota.log </IfModule>
To create the initial tally table: ftpquota
--create-table --type=tally --table-path=/etc/proftpd/ftpquota.tallytab 用戶ldap裡面添加description
屬性(用了LDAPAttr
ftpQuota description映射了屬性) Description=false,hard,100,0,0,0,0,0 The LDAP attribute to be looked up
(named ftpQuota by default) should contain a comma-separated list of
8 values, in the following order: per_session,
limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail,
files_out_avail, files_xfer_avail For example:
"false,hard,100,100,100,100,100,100" “false,hard,100000000,-1,-1,-1,-1,-1” -1 表示(unlimited) 查詢ftpquota.tallytab
內容: ftpquota --show-records --type=tally
--table-path=/etc/proftpd/ftpquota.tallytab
SSL认证配置 openssl
req -x509 -newkey rsa:1024 -keyout /etc/proftpd/ssl/proftpd.key -out
/etc/proftpd/ssl/proftpd.crt -nodes -days 365
|
|