четвер, 23 грудня 2010 р.

Виртуальные, не анонимные пользователи 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 (только читать) и brovko_rs (я могу читать и писать) в файле userftp.txt появилась запись (/bin/false - это shell пользователя, точнее его отсутствие)

brovko_rs:$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         "BROVKO_RS 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 brovko_rs
        DenyAll
    </LIMIT>
</Directory>

Пользователю brovko_rs разрешает запись на FTP директива AllowUser в конструкции Limit и запись :1000:65533:: в userftp.txt, так как 65533 - это GID группы nogroup (можете UID сделать как у nobody). То есть каталоги и файлы имеют владельца nobody:nogroup и поэтому brovko_rs может записать на 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 в созданном вами каркасе.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments