У вас должен быть установлен 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 в созданном вами каркасе.
Немає коментарів:
Дописати коментар