воскресенье, 16 марта 2008 г.

vsftpd и пользователи из базы LDAP.

Предполагается, что сервер каталогов openldap уже установлен и настроен.
Устанавливаем nss_ldap

# cd /usr/ports/net/nss_ldap
# make install
Отредактируем файл конфигурации /usr/local/etc/nss_ldap.conf
host small.server
base dc=small,dc=server
# Пользователь, которому разрешен просмотр каталога
binddn uid=proxy,dc=small,dc=server
# Пароль пользователя proxy
# Пароль не надо хешировать!
bindpw proxy-password
scope sub
bind_timelimit 3
bind_policy soft
nss_paged_results yes
pagesize 1000
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_password exop
nss_base_passwd ou=People,dc=small,dc=server?one
nss_base_shadow ou=People,dc=small,dc=server?one
nss_base_group ou=Group,dc=small,dc=server?one
Изменим следующие строки в /etc/nsswitch.conf
group: files ldap
passwd: files ldap
Проверяем работу nss_ldap
# id user-from-ldap
Должно выйти что-то похожее на
uid=10000(user-from-ldap) gid=10000(Group-from-LDAP) groups=10000(Group-from-LDAP)
Устанавливаем pam_ldap
#cd /usr/ports/security/pam_ldap
# make install
Отредактируем файл конфигурации pam_ldap: /usr/local/etc/ldap.conf
host small.server
base dc=small,dc=server
binddn uid=proxy,dc=small,dc=server
# Пароль не надо хешировать!
bindpw proxy-password
scope one
bind_timelimit 3
bind_policy soft
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_password exop
nss_base_passwd ou=People,dc=small,dc=server?one
nss_base_shadow ou=People,dc=small,dc=server?one
nss_base_group ou=Group,dc=small,dc=server?one
Установка самого сервера FTP
# cd /usr/ports/ftp/vsftpd
make config
В появившемся диалоге ставим галочку около опции RC_NG и далее
# make install
Ниже приведен файл конфигурации vsftpd: /usr/local/etc/vsftpd.conf
#Запрещаем анонимусов
anonymous_enable=NO
listen=YES
background=YES
# Указываем какую именно конфигурацию PAM использовать
pam_service_name=vsftpd
check_shell=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
# Скрываем какой именно сервер FTP у нас стоит
ftpd_banner=Welcome to FTP service.
# Помещаем пользователей в изолированное окружение
chroot_local_user=YES
pasv_min_port=49152
# Скрываем uid и gid файлов при просмотре директорий.
hide_ids=YES
local_umask=022
anon_umask=022
secure_chroot_dir=/usr/local/share/vsftpd/empty
Создаем файл конфигурации PAM: /usr/local/etc/pam.d/vsftpd
auth            required        /usr/local/lib/pam_ldap.so
account required /usr/local/lib/pam_ldap.so
# Если вы хотите разграничить доступ к ftp по группам
# можете дополнительно установить модуль pam_require
# и добавить приведенную ниже строку. Подробности тут
account required /usr/local/lib/pam_require.so no_case @Ftp:Users
# Строка для модуля pam_mkhomedir,
# избавляющего от необходимости ручного
# создания домашней директории для нового пользователя
session required /usr/local/lib/pam_mkhomedir.so mode=0700
Добавим следующую строку в /etc/rc.conf
vsftpd_enable="YES"
Запускаем сервер FTP и проверяем его работу :)
# /usr/local/etc/rc.d/vsftpd start

Комментариев нет: