Памятка по настройке VsFTPd на FreeBSD

И так, когда я впервые настраивал фтп сервер на Freebsd, я очень долго на этом застрял в силу нехватки знаний.
Поэтому оставлю эту настройку здесь, дабы в другой раз не терять на этом время. Да и может еще кому пригодится.

Существует огромное количество портов фтп серверов. Самыми популярными из них являются VsFTPd и ProFTPd.
Не буду описывать все за и против каждого из них, т.к. не об этом речь сейчас :)

Почему лично я выбрал VsFTPd, а не ProFTPd.
Мне изначально друг сисадмин советовал поставить ProFTPd, я начал копаться по форумам и блогам, сравнивать отзывы о каждом.

В общем, считается, что ProFTPd более дырявый :)
Но скажу, что VsFTPd завелся у меня далеко не сразу. Когда я в очередной раз застрял, плюнул на него и снес к чертовой бабушке.
Решил ставить ProFTPd… ну не нравились мне некоторые вещи, да и не получалось все сразу так как хотелось. К тому же он потребляет больше ресурсов системы, и это был решающий момент. Поскольку все настраивал на ВПС, а он как известно не резиновый, решил все же сэкономить на ресурсах и вернуться к VsFTPd.

Черт его знает, как, но в этот раз все завелось с полпинка. Счастья было полные трусы :)

Настройка VsFTPd на FreeBSD 9

1. Устанавливаем из портов VsFTPd

# cd /usr/ports/ftp/vsftpd
# make install clean

2. Устанавливаем из портов pam_pwdfile. Это была как раз та загвоздка, почему не получилось завести его в первый раз. Нужен pam_pwdfile как раз для того, чтобы не создавать в системе фтп-юзеров, а сделать виртуальных. Классная утилита, которую можно использовать, где необходима авторизация и вирт. пользователи.

# cd /usr/ports/security/pam_pwdfile
# make install clean

3 Создаем файл для вирт. пользователей vsftpd

# touch /usr/local/etc/pam.d/vsftpd

4. Открываем в любом редакторе и прописываем в нем следующее
Если установлен pam_userdb

auth required /usr/local/lib/pam_pwdfile.so /usr/local/etc/vsftpd/etc/vsftpd_login.db
account required /usr/local/lib/pam_userdb.so /usr/local/etc/vsftpd/etc/vsftpd_login.db

или если нет

auth required /usr/local/lib/pam_pwdfile.so pwdfile /etc/vsftpd_login.db
account required /usr/lib/pam_permit.so

4. Создаем файл базы данных с логином и паролем для vsftpd для каждого юзера.

Тут тоже есть свой ньюанс.
В начале я натолкнулся на такую запись (где уже не вспомню):

# htpasswd -c -b /usr/local/etc/vsftpd/vsftpd_login.db username password213

Результатом будет подобная запись в файле vsftpd_login.db:

username:$apr1$OCFKjjUi$L8A4LG4t2TryPxRtGnLxa/

Скажу сразу, что htpasswd генерирует пароли не в том формате, что надо pam_pwdfile

Для генерации паролей лучше подойдет:

# openssl passwd -1 password213

Результат:

$1$5htlgrc7$FHf5uCbSol0oKKYN3upE0/

где password213 — ваш пароль
И вставляем его в файл /usr/local/etc/vsftpd/vsftpd_login.db по такому шаблону:

Имя_юзера:Пароль_юзера

Каждый юзер с новой строки. Запись будет выглядеть примерно так:

username:$1$5htlgrc7$FHf5uCbSol0oKKYN3upE0/

5. Устанавливаем права на файл.

# chmod 600 /usr/local/etc/vsftpd/vsftpd_login.db

6. Дальше надо добавить пользователя в систему от которого будут загружаться все файлы и папки по фтп. и установить ему /usr/sbin/nologin

# pw adduser vftpd_user -g www -d /nonexistent -s /usr/sbin/nologin -c "FTP user for user main"

Задаем ему пароль

# passwd vftpd_user

7. Задаем директорию юзера.

# pw usermod vftpd_user -d /usr/local/www/

И теперь конфигурируем файл vsftpd.conf
Свой файл конфига выложу чуть позже.

Примечание: *Виртуальные пользователи работают как анонимы, если не указать файле конфига vsftpd.conf такую строку:

virtual_use_local_privs=YES
Запись опубликована в рубрике: Заметки о FreeBSD.

Комментарии