ProFTPd — FTP-сервер для Linux и UNIX-подобных операционных систем. ProFTPd использует лишь один конфигурационный файл «proftpd.conf», который располагается по умолчанию в:
Linux — «/etc/proftpd/proftpd.conf»
FreeBSD — «/usr/local/etc/proftpd.conf»
Сервер может быть настроен для работы нескольких виртуальных хостов, также поддерживает chroot. Может быть запущен в виде отдельного сервера (демона) или в составе суперсервера inetd. Также поддерживает IPv6.
Сервер поддерживает модули добавляющие SSL/TLS шифрование, аутентификацию через LDAP, работу с SQL, туннелирование соединений через SSH. «Родная» поддержка Microsoft Windows отсутствует. Имеет графический фронтенд gProFTPd.
По материалам Wikipedia — свободная энциклопедия.
Убедитесь, что ProFTPd есть в ваших репозиториях:
Установить как всегда просто:
Запуск сервера и остановка только «грубым» методом:
Как вы уже знаете вся настройка сервера проходит через один файл:
Теперь нужно определиться с тем, как мы хотим использовать наш сервер.
В моем случае:
1) Анонимный доступ на сервер –>
Т.е. любой пользователь введя IP-адрес или доменный адрес попадает в специально созданное окружение (анонимный отсек на сервере) где он имеет определенную структуру папок. Все окружение имеет атрибут READ (только чтение и ничего больше), и только одна папка uploads/ имеет атрибут STOR, т.е. она доступна для записи в нее файлов, при этом удаление файлов запрещено, так же как и их перемещение или переименование.
2) Авторизированный вход на сервер –>
Любой пользователь который имеет аккаунт на сервер может ввести логин/пароль и попасть в свое личное окружение, которое доступно только ему одному, в данном окружение он имеет те же права, что и на сервере, т.е. в своем окружении пользователь хозяин.
3) Необходимые ограничения –>
- Все пользователи «заперты» внутри своего окружения и не могут пройти в каталог выше.
- На загрузку файлов для всех пользователей, включая ananymous стоит жесткое ограничение, файл размером не более 1GB.
- Максимальный размер директории каждого пользователя контролируется сервером (например каждому пользователю выделяется квота 10GB) установленный space-лимит пользователь превысить не может.
- Максимальное количество соединений с ProFTPd-сервером указывается в конфигурационном файле, в моем случае это 10 пользователей одновременно максимум, любое последующие соединение будет сбрасываться с выводом ошибки указывающей, что лимит соединений превышен.
- Вход на сервер от имени учетной записи root запрещен в целях безопасности.
- Протокол IPv6 отключен.
- Максимальное количество child processes ограничено 30-ью в целях безопасности.
- В целях контроля ведутся логи
Реализовать всё вышеописанное не сложно, хорошо зная значение директив. Вы можете ознакомиться с ними тут. Далее я приведу пример файла /etc/proftpd/proftpd.conf где я прокомментировал наиболее важные директивы на мой взгляд.
Вы можете скачать этот файл proftpd.conf
Скачать pdf-файл со списком всех дирректив мжно тут
Как вы могли заметить, анонимный юзер, это на самом деле юзер в системе с именем ftp, его нужно создать:
Закрыть ему shell:
запись должна выглядеть так (выделено синим цветом):
ftp:x:1001:1001:asd,asda,dsa,ads,asd:/home/ftp:/bin/false
Какие папки создавать, а какие нет – ваше дело. Я сделал так:
~/backup
~/dist
~/archives
~/docs
~/uploads — помним, что в эту папку пользователь может загружать файлы
Вы можете увидеть структуру папок на скриншотах ниже.
Это были настройки для анонимных пользователей, но выше я писал, что присоединится к серверу могут не только анонимы, но авторизированные пользователи, которые имеют аккаунты на сервере, это очень просто, вы создаете пользователя, назначаете ему логин и пароль, задаете домашний каталог и ставите необходимые ограничения:
Теперь любой из этих пользователей может присоединится к серверу введя свои логин/пароль, и попасть в свой домашний каталог, в котором он будет благополучно заперт, однако эти пользователи являются привилегированными, по этому они являются полными «хозяевами» своих окружений и только root может удалить их файлы или даже учетную запись.
После того как вы приведете конфигурационный файл к должному виду, создадите аноним-пользователя (дополнительных пользователей) и создадите структуру папок, перезапустите сервер:
И наслаждайтесь результатом.
Вход на сервер с аутентификацией:
Вход на сервер для анонима: