在Debian上使用OpenLDAP身份验证设置ProFTPd

时间:2020-03-21 11:42:24  来源:igfitidea点击:

具有针对用户的OpenLDAP身份验证的ProFTPD服务器。

软件

本文使用的软件:

  • Debian Wheezy
  • ProFTPD 1.3.4a
  • OpenLDAP 2.4.31

在我们开始之前

我们可能需要查看本文以了解如何设置OpenLDAP。

我们将使用被动FTP模式从外部(NAT)连接。

我们将在没有其他VirtualHost的情况下使用“ DefaultServer on”。

安装

安装proftpd(选择独立版本):

# apt-get install proftpd proftpd-mod-ldap
[...]
Run proftpd: standalone
[...]

配置

我们将为FTP上传创建一个新目录。
我们还将防止其他用户删除或者重命名目录中的文件,除非他们拥有该文件或者目录:

# mkdir -m 1777 /data/ftp

仔细检查权限:

# ls -ld /data/ftp/
drwxrwxrwt 2 root root 4096 Oct 24 18:49 /data/ftp/

导航到proftpd安装目录:

# cd /etc/proftpd

首先备份默认配置文件:

# cp ./proftpd.conf ./proftpd.conf.$(date +%F)

打开“ /etc/proftpd/modules.conf”并取消注释以下行:

LoadModule mod_ldap.c

proftpd.conf

这是我们的“ proftpd.conf”配置:

# cat ./proftpd.conf# Server Config

#Include			/etc/proftpd/modules.conf
ServerName		"Private FTP Server"
ServerType		standalone
ServerAdmin		Hyman@theitroad
DefaultServer		on
AccessGrantMsg		"User %u logged in."
AuthOrder		mod_ldap.c
UseReverseDNS		off
RequireValidShell

off
DefaultAddress

localhost
Port			21
PassivePorts

64000 65000
User			proftpd
Group			nogroup
ScoreboardFile		/var/run/proftpd.score
MaxInstances		20
# for passive FTP mode
MasqueradeAddress	54.X.Y.Z
MultilineRFC2228	on
ShowSymlinks		off
UseIPv6			off
DefaultTransferMode	binary
WtmpLog

off
TransferLog		/var/log/proftpd/xferlog
SystemLog		/var/log/proftpd/proftpd.log# Global Config

#<Global>
 RootLogin		off
 AuthPAM

off
 DefaultRoot		/data/ftp
 ServerIdent		on "Private FTP Server"
 IdentLookups		off
 DeferWelcome

off
 DisplayLogin		/etc/proftpd/welcome.msg
 TimeoutLogin		120
 TimeoutNoTransfer	300
 TimeoutStalled		3600
 TimeoutIdle		600
 MaxClients 		5 "Sorry, ftp server has reached its maximum user limit (%m)"
 MaxClientsPerUser 	5 "Sorry, no more than %m connections per user."

MaxStoreFileSize

*
 MaxRetrieveFileSize    *
 MaxLoginAttempts	3
 DenyFilter		\*.*/
 Umask			022 
 AllowOverwrite		on
 AllowOverride		off
 AllowRetrieveRestart	on
 AllowStoreRestart	on
 RequireValidShell	off
</Global>
<IfModule mod_delay.c>
 DelayEngine on
</IfModule>
<Limit SITE_CHMOD>
 DenyAll
</Limit>
<IfModule mod_ldap.c>
 LDAPServer localhost
 LDAPBindDN cn=Guest,dc=top passwd
 LDAPUsers ou=Users,dc=theitroad.com,dc=top (uid=%u)
</IfModule>

重新启动ProFTPd守护程序

防止ProFTPD文件在世界范围内可读:

# chmod 0640  /etc/proftpd/proftpd.conf

并重新启动服务:

# service proftpd restart