Авторские статьи

Виртуальные, не анонимные пользователи proftpd


У вас должен быть установлен FTP сервер proftpd. Во FreeBSD лучше устанавливать из портов, в Linux системах с пакетным менеджментом с помощью штатного менеджера пакетов, например в Ubuntu sudo apt-get install proftpd-basic
Речь пойдет о ftp сервере proftpd и как создать виртуальных (не привязанных к shell), не анонимных пользователей. Весь Интернет полон статей как создавать анонимных пользователей, хотя на том же родном сайте proftpd.org все примеры конфиги описывают анонимный доступ. У кого могут возникнуть проблемы, если по умолчанию конфиг proftpd.conf уже обеспечивает всю функциональность анонимного входа на FTP?! Мне, наоборот, понадобился вход на FTP моим друзьям и я бы хотел знать кто и когда и что качал или заливал на FTP.

Proftpd поддерживает различные схемы авторизации пользователей (через базы данных, PAM модули, LDAP), меня устроила авторизация через "альтернативный файл пользователей и паролей", проще говоря текстовый файл.

Мне надо было чтобы у FTP пользователя не было реального shell в моей системе и FTP сервер был бы прост в обслуживании.

Итак, как это было
1. Создал каталог /ftpserver и каталог /ftpserver/ftproot. Каталог /ftpserver и все в нем принадлежит nobody:nogroup, так как ftp-сервер запущен от имени пользователя nobody группы nogroup.
2. В каталоге /ftpserver созданы файлы userftp.txt и groupftp.txt, в которых и будут обитать виртуальные пользователи. Добавлять в эти файлы пользователей нужно/можно с помощью перл-скрипта adduserftp.pl, который у меня находится в каталоге /ftpserver. Перед первым использованием отредактируйте в данном скрипте переменные под ваши нужды:

my $default_passwd_file = "./userftp.txt";
my $default_group_file = "./groupftp.txt"; 

После работы скрипта по добавлению пользователя reader (только читать) и vasilisc (я могу читать и писать) в файле userftp.txt появилась запись (/bin/false - это shell пользователя, точнее его отсутствие)

vasilisc:$1$T5GoEkMN$hucNxuhX1c4tKP/RMGqC1:1000:65533::/ftpserver/ftproot:/bin/false
reader:$1$IUQXlH5U$VmeV8r5DDuQzHXTBa.D9/:1002:1002::/ftpserver/ftproot:/bin/false

А что появилось в файле groupftp.txt - фиолетово! Так как UID и GID виртуальных пользователей уже есть в userftp.txt.
Скриптом adduserftp.pl можно менять пароли пользователям.

Вот proftpd.conf с минимальными дополнениями, советую прочесть рекомендации по безопасности и добавить соответствующие директивы, также добавьте необходимую функциональность. При данных настройках все файлы на FTP принадлежат nobody, корень FTP сервера каталог /ftpserver/ftproot/.

ServerName         "VASILISC FTP Server"
ServerType         standalone
DefaultServer      on
Port               21
Umask              022
MaxInstances       30
User               nobody
Group              nogroup
DefaultRoot /ftpserver/ftproot
ServerLog /ftpserver/proftpd.log
AllowOverwrite      on
<Limit SITE_CHMOD>
  DenyAll
</Limit>
RequireValidShell off
AuthUserFile /ftpserver/userftp.txt
AuthGroupFile /ftpserver/groupftp.txt
<Directory /ftpserver/ftproot>
    UserOwner nobody
    <Limit WRITE>
        Order Allow,Deny
        AllowUser vasilisc
        DenyAll
    </LIMIT>
</Directory>

Пользователю vasilisc разрешает запись на FTP директива AllowUser в конструкции Limit и запись
:1000:65533:: в userftp.txt, так как 65533 - это GID группы nogroup (можете UID сделать как у nobody). То есть каталоги и файлы имеют владельца nobody:nogroup и поэтому vasilisc может записать на FTP файлы и каталоги. По той же причине reader не может записать на FTP, так как для него срабатывает DenyAll (средство защиты proftpd). Да и сама операционная система не даст создать файл, потому что у reader UID=1002 и GID=1002.

Комментарии:
1. На официальном сайте proftpd.org есть ссылка на webalizer, программа, которая анализирует логи и красиво выдает отчеты о посетителях вашего FTP-сервера. Вот скрипт, который создаст html страницы. Все будет отсортировано по месяцам, дням.

#!/bin/sh
webalizer -F ftp -o /ftpserver/wwwstat/ < /var/log/xferlog

2. Основная документация находится на родном сайте по адресу proftpd.org/docs/
3. Proftpd - сервер FTP, на уязвимости которого были и будут атаки. Обезопасить дополнительно поможет AppArmor, который будет держать proftpd в созданном вами каркасе.

Дата последней правки: 2012-05-19 14:33:44

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта