Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> ProFTPd + LDAP

ProFTPd с авторизацией пользователей в OpenLDAP

Автор: aleksey.kravchenko.


    В данной статье будет рассматриваться настройка сервера ProFTPd с авторизацией пользователей в базе данных LDAP. OpenLDAP настраивал по статье samba_pdc + ddns + dhcp - с хранением всех данных в LDAP. Секцию авторизации брал с opennet.ru. Версия FreeBSD - 6.2.

1. Установка
Установите из портов ProFTPd с поддержкой LDAP:
# cd /usr/ports/ftp/proftpd/
# make config

Выбираем опцию LDAP.
# make install clean
# rehash

2. Настройка ProFTPd
Отредактируйте конфигурационный файл /usr/local/etc/proftpd.conf
ServerName                      "MY FTP Server" 
ServerType                      standalone 
DefaultServer                   on 
ScoreboardFile                  /var/run/proftpd.scoreboard 
Port                            21 
# Это если FTP не имеет реального IP
MasqueradeAddress               22.22.22.22

# LDAP Section

# Сервер с LDAP 
LDAPServer                      localhost 
# Пользователь в LDAP, с правом поиска
LDAPDNInfo                      "cn=manager,dc=mycompany,dc=local" password 
# Поиск пользователей по uid
LDAPDoAuth on "ou=users,dc=mycompany,dc=local" "(&(uid=%v)(objectclass=posixAccount))" 

Umask                           022 
MaxInstances                    30 
User                            nobody 
Group                           nogroup 
DefaultRoot                     ~ 
AllowOverwrite			on 

<Limit SITE_CHMOD> 
  DenyAll 
</Limit> 

3. Запуск и отладка
Настройте автоматический запуск ProFTPd. Для этого добавьте в файл /etc/rc.conf такую строку:
proftpd_enable="YES" 

Запустите ProFTPD:
# /usr/local/etc/rc.d/proftpd start

Проверьте наличие процесса:
# ps ax | grep ftp 
60203  ??  Ss     0:00,01 proftpd: (accepting connections) (proftpd) 
60207  p0  S+     0:00,02 grep ftp

4. Настройка маршрутизатора
4.1 Если ваш FTP сервер находится за сервером NAT, на котором запущен natd, тогда добавьте в конфигурационный файл /etc/natd.conf такие строки:
redirect_port tcp 192.168.1.2:21 21
redirect_port udp 192.168.1.2:21 21

4.2 Если ваш FTP сервер находится за маршрутизатором, который подключен по PPPoE, и нат выполняет ppp,
# ps ax | grep nat
1295  ??  Ss     0:35,11 /usr/sbin/ppp -quiet -auto -nat optima
7444  p0  R+     0:00,00 grep nat

то добавьте в конфигурационный файл /etc/ppp/ppp.conf такие строки:
 nat enable yes
 nat log yes
 nat same_ports yes
 nat unregistered_only yes
 nat port tcp 192.168.1.2:21 21
 nat port udp 192.168.1.2:21 21

Примечание! В каждой строке перед nat стоит пробел.
5. Настройка ipfw
Настройте ipfw. На маршрутизатора добавьте такие строки:
${FwCMD} add allow log tcp from any to ${IpOut} 20,21 in via ${LanOut} setup
${FwCMD} add allow log tcp from any to ${ip_lan}.2 20,21 in via ${LanOut} setup
${FwCMD} add allow log tcp from any to ${ip_lan}.2 20,21 out via ${LanIn}

Где:
   IpOut - реальный IP;
   ip_lan - шаблон для внутренних адресов, например - 192.168.1;
   ${ip_lan}.2 - серый IP-адрес FTP - 192.168.1.2;
   LanOut - внешний сетевой интерфейс;
   LanIn  - внутренний сетевой интерфейс.


Примечание! У каждого пользователя есть домашний каталог на севере OpenLDAP вида /home/samba/homes/username. Он и будет корневым для пользователя, при условии, что LDAP и FTP на одном сервере.




размещено: 2008-07-14,
последнее обновление: 2008-07-14,
автор: aleksey.kravchenko


cj_nik, 2008-09-02 в 21:14:05

По поводу этого:
># Это если FTP не имеет реального IP
>MasqueradeAddress               22.22.22.22
и
>redirect_port tcp 192.168.1.2:21 21
>redirect_port udp 192.168.1.2:21 21

этого может быть недостаточно
это правда к ЛДАП не относится :)
но всё же... есть два метода "проброса фтп за нат"

ПЕРВЫЙ  - идеологически правильный, используя ftp-прокси, как это описано например в:
http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#p...

и вообще там популярно описано как фтп работает, (не пойму только кто такой изврат вообще придумал:) )

ВТОРОЙ, так сказать - "в лоб"
для proftpd сервера

 MasqueradeAddress my.domain.com
 PassivePorts 60000 60010

на роутере/нате пробрасываем порты 21, 60000-60010

уж не помню какой режим, активный или пассивный на клиенте надо использовать, работает в даннонм примере для 10 одновременных соединений
Возможно я что-то упустил, но основная суть описана.

cj_nik, 2008-09-02 в 21:17:33

ссыль недоскопировал :)
http://house.hcn-strela.ru/BSDCert/BSDA-course/apcs02.html#pf-ftp

Siddha, 2010-09-01 в 0:45:33

Для работы с LDAPS пишем такое:
LDAPServer "ldaps://localhost/??sub"

oleg, 2010-09-09 в 17:50:41

Здравствуйте, подскажите пожалуйста в чем ошибка. Настраиваю proftpd с аутификацией в openldap, в логах такая ошибка:

Sep 09 13:41:27 mail.domain proftpd[1372] localhost (10.211.55.2[10.211.55.2]): USER admin (Login failed): Incorrect password.
Sep 09 13:41:27 mail.domain proftpd[1371] localhost (10.211.55.2[10.211.55.2]): USER admin (Login failed): Incorrect password.
Sep 09 13:41:27 mail.domain proftpd[1372] localhost (10.211.55.2[10.211.55.2]): FTP session closed.
Sep 09 13:41:27 mail.domain proftpd[1371] localhost (10.211.55.2[10.211.55.2]): FTP session closed.

Лдап настраивал по статье Samba(PDC) + Ldap

max, 2010-10-11 в 16:32:36

Кажись статья не полная или я в лыжах на грунтовке.
Та же проблема что и у oleg'а. Наведите на мысль товарищи. Плиз!!!!!!

Siddha, 2010-10-11 в 16:42:39

Моя секция для LDAP

# LDAP Section
LDAPServer        "ldap://127.0.0.1/??one"
LDAPDNInfo "cn=manager,dc=zion,dc=local" "password"
LDAPDoAuth on "ou=FTP,dc=zion,dc=local" "(&(uid=%v)(objectclass=posixAccount))"
LDAPAuthBinds    on
LDAPDefaultAuthScheme "crypt"
LDAPDoUIDLookups    off
LDAPDoGIDLookups    off
PersistentPasswd    off

LDAPGenerateHomedir    on    0755
LDAPGenerateHomedirPrefix    /data/home/ftp
CreateHome    on    0755

В доках все есть.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0414 секунд
Из них PHP: 27%; SQL: 73%; Число SQL-запросов: 77 шт.
Исходный размер: 25450; Сжатая: 6555