Установка и настройка FTP сервера ProFTPD в Ubuntu

Тема в разделе "IT-БЕЗОПАСНОСТЬ", создана пользователем Development, 8 мар 2016.

  1. Development

    Development Администратор Команда форума

    Этот небольшой постик посвящён установке и настройке FTP сервера ProFTPD в Ubuntu.

    К написанию сподвигло отсутствие нормального пошагового руководства на чём вчера споткнулся сам :/

    Всё что ниже личный опыт, пользовался также отрывочными сведениями с западных блогов и форумов.

    Итак, задача.

    Установить ftp сервер ProFTPD на базе Ubuntu в локальной сети. Сервер не анонимный, имеет авторизацию по выдаваемому администратором логину и паролю. Базы данных для авторизации не используются в данном случае, то есть никаких умопомрачительных конструкций с mysql не будет [​IMG]

    Поехали:

    Устанавливаем сам сервер. Я поставил тот, что идёт с репозиториев, кому хочется поставить более свежую версию - собирайте его сами с сайта.

    В терминале:
    Код:
    sudo apt-get install proftpd-basic
    Сервер устанавливаем как standalone (должно вылететь соответствующее окошко с запросом).

    Далее создаём каталог, обращаю внимание на то, что я устанавливал сервер на десктоп версию убунты, так как нагрузка на него не велика 2-3 юзера в день.

    Переходим в домашний каталог:
    Код:
    cd /home
    Создаём в нём каталог ftp в котором и будут храниться наши файлы
    Код:
    sudo mkdir ftp
    Далее вам необходимо зайти в файл
    Код:
    /etc/shells и проверить, есть ли там строчка
    /bin/false
    если нет, то добавьте её туда (здесь и далее я разжёвывать не буду уж такие простые вещи, как редактирование файла под sudo хорошо?, всё же если вы ставите сервер, то потрудитесь перед этим изучить самые основы).

    Выставим права на каталог ftp в который будем заливать файлы:
    Код:
    cd /home
    sudo chmod 777 ftp
    Теперь нам надо создать пользователей с их логинами и паролями. Делается это через команду. Обратите внимание, что первой командой мы создаём группу и присваиваем данной группе конкретного пользователя, второй пользователя, хранятся эти данные в соответствующих файлах рядом с файлом конфигурации сервера в каталоге
    Код:
    /etc/proftpd
    Первая команда - создаём группу ftp2 пользователем которой является пользователь с именем user, автоматически будет также создан файл ftpd.group
    Код:
    sudo ftpasswd --group --name=ftp2 --gid=50 --member=user --file /etc/proftpd/ftpd.group
    Вторая команда - создаём самого пользователя user. Обратите внимание, ещё раз, что user - это логин пользователя, он может быть маша, вася, петя и так далее, короче это логин. В этой же команде задан каталог пользователя. Автоматически также при первом использовании команды будет создан файл ftpd.passwd
    Код:
    sudo ftpasswd --passwd --name=user --home=/home/ftp --shell=/bin/false --uid=1003 --file /etc/proftpd/ftpd.passwd
    При вводе команды будет запроше пароль для пользователя, ну придумайте уж какой-нибудь.

    Последние две команды выше повторяем столько раз сколько пользователей вам нужно. Кому очень хочется посмотреть куда пишутся пароли и прочее (они там будут в виде хэша) велком в каталог /etc/proftpd

    Ещё раз для понимания - это не UNIX пользователи, это фактически учётные записи вашего фтп-сервера.

    Далее настраиваем конфиг сервера
    Код:
    /etc/proftpd/proftpd.conf
    Привожу свой рабочий конфиг полностью. Добавил также некоторые комментарии.
    Код:
    AllowOverwrite on
    
    RequireValidShell off
    AuthUserFile /etc/proftpd/ftpd.passwd
    AuthGroupFile /etc/proftpd/ftpd.group
    
    # Don't use IPv6 support by default.
    UseIPv6 off
    
    ServerName "ftp-server"
    ServerType standalone
    DeferWelcome on

    Эти две команды убыстряют работу сервака, гуглите для подробностей.
    Код:
    UseReverseDNS off
    IdentLookups off
    
    MultilineRFC2228 on
    DefaultServer on
    ShowSymlinks off
    
    TimeoutNoTransfer 600
    TimeoutStalled 100
    TimeoutIdle 2200
    
    DisplayChdir .message
    ListOptions "-l"
    
    TimeoutLogin 20

    Запрещаем подключаться на сервер как root, полезно для безопасности
    Код:
    RootLogin off
    # Создаём журналы
    Код:
    ExtendedLog /var/log/ftp.log
    TransferLog /var/log/xferlog
    SystemLog /var/log/syslog.log
    #Запрещаем заливать на сайт файлы начинающиеся с точки, полезно для безопасности
    Код:
    DenyFilter \*.*/
    # Используем файлик /etc/ftpusers в нём перечислены те пользователи, которым запрещено входить на сервер, полезно для безопасности
    Код:
    UseFtpUsers on
    # Разрешаем докачивать файлы
    Код:
    AllowStoreRestart on
    # задаём порт, на котором будет работать сервак, обычно 21
    Код:
    Port 21
    # Против DDOS атаки, полезно для безопасности
    Код:
    MaxInstances 8
    # Сервер запускается и работает под этим пользователем и группой
    Код:
    User nobody
    Group nogroup
    # Umask 022 is a good standard umask to prevent new files and dirs
    # (second parm) from being group and world writable.
    Код:
    Umask 022 022
    
    MaxClients 8
    MaxClientsPerHost 8
    MaxClientsPerUser 8
    MaxHostsPerUser 8
    # Сообщение после успешного захода на сервер
    Код:
    AccessGrantMsg "Welcome to Server"
    #Идентификатор сервера, показывается всем при заходе на сервер
    Код:
    ServerIdent on "privet :))"
    # Устанавливаем домашний каталог
    Код:
    DefaultRoot /home/ftp
    # Запираем всех в домашнем каталоге, чтобы не могли просмотреть каталоги выше, важно для безопасности
    Код:
    DefaultRoot ~
    
    MaxLoginAttempts 5
    #VALID LOGINS
    <Limit LOGIN>
    AllowUser user
    DenyALL
    </Limit>
    
    <Directory /home/ftp>
    Umask 022 022
    AllowOverwrite on
    </Directory>
    Перезапускаем сервер:

    Код:
    /etc/init.d/proftpd start
    Всё должно работать.
     

Поделиться этой страницей