KAN`ский блог Мысли вслух…
  • Мар
    1

    Быстрая настройка ProFTPD

    Filed under: Без рубрики;

    В статье описывается быстрая настройка FTP сервера ProFTPD в нескольких различных конфигурациях.
    FTP сервер ProFTPD вполне оправдывает его название. Этот демон довольно стабильный, может работать как «самостоятельно», так и в составе супер-сервера inted, поддерживает вируальные хосты, учетные записи и многое другое.
    Плюс ко всему имеет конфиги в стиле Apache, что делает его настройку весьма удобной и понятной.
    В данной статье мы вкратце рассмотрим установку proftpd, т.к. он имеется в портах и, следовательно, в установке нет ничего интересного.

    Подробно остановимся на настройке.
    Итак, первый шаг — Установка.
    Как было написано выше, ставится сервер очень просто – из коллекции портов.
    Пишем:
    Листинг : Установка ProFTPd из портов

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

    На этом установка закончена.
    Конфиг будет лежать как /usr/local/etc/proftpd.conf,
    а скрипт как /usr/local/etc/rc.d/proftpd
    Теперь переходим к настройке.
    Сначала рассмотрим «скелет» конфига. Он будет содержать базовые настройки.
    В дальнейшем этот конфиг можно дополнять в соотвествии с задачей.
    Листинг : Заготовка конфига

    # Тип сервера. standalone означает отедльный демон, а inetd – в составе супер-сервера
    ServerType              standalone

    # Сообщение при подключении клиента.
    ServerIdent             on «FTP Server Ready.»

    # Имя сервера
    ServerName              «My FTP Server»

    # Контактная информация админа
    ServerAdmin             admin@myhost.ru

    # Порт, на котором будет слушать сервер (21 — стандартный)
    Port                    21

    # Маска прав доступа для новых (згружаемых) файлов.
    # При этом реальные права доступа будут как (777 — mask), т.е. маска 022 будет
    # устанавливать права 755.
    # Можно указывать свою маску для каждого каталога.
    Umask                   022

    # Настройки производительности
    # Чем больше числа, тем больше клиентов одновременно сможет обслужить сервер, однако установка
    # большого числа на слабом железе повышает вероятность DDoS атаки.
    MaxInstances            30
    MaxLoginAttempts        3
    MaxClients              128

    # «таймауты», по истечению которых сервер будет закрывать соединение
    TimeoutLogin            120
    TimeoutIdle             600
    TimeoutNoTransfer       900
    TimeoutStalled          300

    # Показывать сообщения приветвия только после прохождения авторизации.
    # Актуально для «закрытых» FTP-серверов в целях безопасности.
    DeferWelcome            on

    # Секция, действия которой распространяются на все сервера, описанные в конфиге
    <Global>
    # Файл, сеодержащий сообщения привествия при подключении
    DisplayLogin            .welcome

    # Разрешает перезапись файлов
    AllowOverwrite          on
    </Global>

    # Настройка ограничения по умолчанию
    # Запрещаем всё и для всех =)
    <Limit ALL>
    DenyAll
    </Limit>


    Основа конфига готова.
    В дальнейшем будем дописывать к нему необходимые нам настройки.
    Простой публичный FTP сервер
    Задача очень проста:
    Необходимо настроить общедоступный «анонимный» FPT сервер, с которого пользователи смогут скачивать файлы без ввода логина и пароля.
    Также необходимо позволить пользователям загружать файлы в папку с именем «incoming»
    Предположим, что физически корневая папка расположена по адресу /usr/ftp.
    Называется «конрневая папка», т.к. для пользователей она будет просто /
    Всё, что находится в этой папке, будет доступно по FTP.
    Папка для загрузки файлов раcположена непосредственно в корневой папке.
    Листинг : Простой публичный FTP

    # Опеределяет анонимный FTP сервер c корнем в /usr/ftp
    <Anonymous /usr/ftp>
    # Пользователь и группа от которых будет работать сервер
    User                    ftp
    Group                   ftp

    # Алиас имени пользователя.
    # По стандарту принято имя anonymous. Именно на него и ставим алиас.
    UserAlias               anonymous ftp

    # Разрешить авторизацию только по алиасу
    # это значит что
    AuthAliasOnly                   on

    # Отключаем требования валидного шелла пользователя
    # позволяет «пускать» в систему юзером без доступа по SSH (nologin)
    RequireValidShell       o
    ff
    # Скрывать файлы и папки пользователя root
    HideUser                root

    # Права по умолчанию для сервера
    # Разрешаем авторизацию, чтение файлов и перемещение по папкам
    <Limit LOGIN READ DIRS>
    AllowAll
    </Limit>

    # Права на папку incoming и все её вложенные папки
    # Разрешаем запись
    <Directory incoming/*>
    <Limit WRITE>
    AllowAll
    </Limit>
    <Directory>
    </Anonymous>

    Проверяем владельца корневой папки, он должен быть «ftp:ftp».
    Теперь можно запускать сервер.
    Доступ по логину / паролю
    Задача состоит в следующем:
    Дать полный доступ пользователю к его домашней папке с авторизацией по логину/паролю данного пользователя.
    Конфиг в будет следующим:
    Листинг : Авторизация по логину и паролю

    # Объявляем анонимный сервер с корнем в домашем каталоге пользователя myuser
    <Anonymous ~myuser>
    # От кого будет работать демон
    User                    myuser
    Group                   myuser

    # Установка владельца на новые файлы
    UserOwner               myuser
    GroupOwner              myuser

    # Включаем запрос пароля
    AnonRequirePassword     on

    # Скрываем файлы пользователя root
    HideUser                root

    # Разрешаем все для нашего пользователя
    <Limit ALL>
    Order Allow, Deny
    AllowUser       myuser
    </Limit>
    </Anonymous>

    Корректное создание анонимного пользователя FTP
    Изначально во FreeBSD 7.2-RELEASE пользователя с именем ftp не существует. Мне он понадобился для организации также и анонимного доступа к ftp-серверу под управлением proftpd-1.3.2c.
    Сперва создаем каталог для этого пользователя:
    # mkdir /home/ftp
    И заводим пользователя командой:
    # pw useradd -n ftp -g nogroup -s /usr/sbin/nologin -с «access to ftp» -d /home/ftp
    Где флаги обозначают:
    -n ftp – указываем имя создаваемого пользователя
    -g nogroup – указываем группу для создаваемого пользователя
    -s /usr/sbin/nologin – указываем шелл (оболочку) для создаваемого пользователя
    -с “access to ftp” – указываем комментарий к создаваемому пользователю
    -d /home/ftp – указываем домашний каталог для создаваемого пользователя
    С помощью команды vipw проверяем, правильно ли создался наш новый пользователь:
    # vipw
    ftp:*:1007:65333::0:0:access to ftp:/home/ftp:/usr/sbin/nologin
    Если вы найдете примерно такую же строку, то новый пользователь ftp пользователь успешно создался. (Для выхода из редактора vi нужно набрать :q).
    Осталось поменять права на домашнюю папку только что созданного пользователя:
    #  chown ftp:nogroup /home/ftp
    Теперь все готово для работы анонимного пользователя с вашим ftp-сервером.
    Для поддержки Windows-клиентов нужно приписать строку с кодировками:
    LangEngine on
    ClientCharset UTF-8
    UseEncoding UTF8 CP1251

    Комментарии к записи Быстрая настройка ProFTPD отключены

Comments are closed.