Установка и настройка ProFtpd

Здесь будет описана установка и настройка ProFtpd — мощного и очень популярного ftp сервера. Устанавливать будем на Ubuntu 12.04 LTS. Настроим разграничение прав на директории, чтобы каждый пользователь получил доступ только в собственную папку и не имел доступ в чужие.
Из соображений безопасности не будем использовать системные учетные записи, вместо них заведём виртуальных ftp-пользователей, учетные записи которых будут храниться в текстовом файле.

Установка:

Во время установки выскочит синий экран предложением двух различных вариантов установки:

  • From inetd — демон ProFTPd будет работать из-под службы inetd.
  • Standalone — ProFTPd будет установлен как самостоятельный демон.

Рекомендую выбрать вариант Standalone, т.к. гораздо удобней работать с ProFTPd, как с отдельной службой. После установки пакета сразу будет запущен демон proftpd и уже можно подключаться. А для того чтобы проверить работоспособность наберите следующую команду команды:

Если демон работает, то произойдет подключение и у вас потребуют имя пользователя под которым инициализировать коннект. Можете ввести любого созданного пользователя у вас в системе. Потом попросят ввести пароль этого пользователя. Если были введены корректные данные, то вы получите доступ к командной строке FTP, где можете выполнять определенные команды. Но всё что нам нужно было это попасть в эту строку, чтобы убедиться в работоспособности демона. Потому набираем команду exit и выходим.

Далее лезем в /etc/shells , он должен содержать строчку : /bin/false если не содержит, дописываем.

Настройка

Ну и наконец-то настроим наш ProFTPd для работы с пользователями: в конец конфигурационного файла /etc/proftpd/proftpd.conf добавим следующую строку, в которой мы говорим, что для авторизации пользователей будет  использоваться файл ftpd.passwd

Создаём сам файл:

Ну и собственно создаём пользователя:

и вводим пароль.

эта комманда создаст пользователя «ftp_user» с uid=106 и gid=65534 (такие же как и у системного пользователя ftp), домашней директориией для которго будет /var/ftp/ftp_user/, шелл у пользователя отсутствует (—shell=/bin/false)

Создаём  ещё одного пользователя:

Итак, папка  ftp_user это —/var/ftp/ftp_user/, а папка ftp_user2 это — /var/ftp/ftp_user2/, необходимо, чтобы ftp_user при соединении с сервером попадал сразу в свой каталог /var/ftp/ftp_user/ и не мог подняться выше него, т.е. не видел сайт  ftp_user, а ftp_user2 в свою очередь ходил бы только в свой каталог /var/ftp/ftp_user2/ и не лазил бы к  ftp_user.

Чтобы был у нас порядок, мы будем использовать файл .ftpaccess.
Создадим файл .ftpaccess в каталоге /var/ftp/ftp_user/ и впишем туда:

Точно так же необходимо создать файл и в каталоге /var/ftp/ftp_user2/, только заменив пользователя

В файлах мы запрещаем кому-либо доступ к каталогу и разрешаем доступ указанному пользователю (директива «Allowuser»), естественно он должен присутствовать в файле /etc/proftpd/ftpd.passwd.

Теперь нам неjбходимо завести третьего пользователя, который не будет иметь никаких ограничений, своего рода админ, кому как нравится:

Для админа домашней директорией будет /var/ftp/ И в итоге cоздадим файл .ftpaccess в каталоге /var/ftp/:

И занесем туда следующие строки:

Этот файл запрещает доступ к каталогу /var/ftp/ всем, кроме пользователя admin, если нужно дать доступ еще кому-то, то через запятую добавьте пользователя, предварительно создав для него учетную запись, как было показано выше.

P.S.

Конфигурация

Давайте же сконфигурируем демона так, чтобы обезопасить наш сервер. Для этого откроем конфигурационный файл ProFTPd /etc/proftpd/proftpd.conf и посмотрим на представленные опции:

  • UseIPv6 — включить ли поддержку IPv6 или оставить только IPv4. Я рекомендую включить поддержку, а то малоли что — хуже не будет.
  • ServerName — имя сервера, которое будет отображаться при коннекте с помощью ProFTPd. Установите для красоты, хотя в дальнейшем, когда у вас будет много серверов это может носить и полезный характер.
  • DefaultRoot — опция, которая устанавливает домашнюю директорию пользователя выше, которой он не сможет подняться. Подробней об этой возможности пойдет речь ниже, так что пока особо не парьтесь.
  • RequireValidShell — опция запрета коннекта для пользователей, у которых не указана рабочая командная среда, т.е. пользователи с /bin/false не будут иметь доступ через FTP. Думаю эта опция нужна только в особенных случая, но на всякий случай я вам о ней сказал.
  • Port — стандартный порт подключения, который будет слушать ProFTPd. Для повышения безопасности рекомендую его изменить.
  • MaxInstances — максимальное количество одновременных подключений. Будьте внимательны, это именно количество одновременных соединений, а не пользователей, т.е. для каждого пользователя может быть по несколько соединений. Установите ту цифру, которую считает оправданной в вашем случаи, например, если вы единственный администратор сервера, то думаю 5 коннектов вам хватит за глаза.
  • Umask — маска создаваемых пользователем файлов. Т.е. в зависимости от маски создаваемым файлам и папкам будут присвоены определенные права доступа. По-умолчанию стоит маска 022, что значит что директории будут создаваться с chmod 755, а файлы — 644, что разрешает полный доступ только для пользователя FTP, который создал файлы, а остальные смогут только открывать на чтение.
  • AllowOverwrite — опция разрешающая перезапись файлов, т.е. в том случаи если опция в off, то пользователь не сможет заменить одноименный файл. Рекомендую установить в on, чтобы иметь возможность перезаписи, если ваша задача не требует иного.

Это основные опции для настройки демона, которые позволят немного обезопасить ваш сервер и сделать его использование более гибким. Хотя это далеко не все опции, их там гораздо больше, но на мой взгляд, это самые необходимые. Если вам интересно, то вы можете почитать официальную документацию этой утилитки и узнать побольше интересностей о настройках.

Кстати, для того чтобы любые изменения вступили в силу необходимо перезапустить демон proftpd:

 В итоге появится закономерный вопрос, а как запретить пользователям подниматься выше домашней директории?

За это отвечает опция DefaultRoot, описанная выше. Ниже я покажу два различных варианта ограничения пользователей FTP с помощью DefaultRoot:

  1. Для всех пользователей FTP создана одна папка, к которой они могут иметь доступ. Для этого создадим такую папку, например, /var/ftp и установим опцию следующим образом:
  2. Другой вариант использования этой опции это если все пользователи будет попадать только в свою домашнюю директорию, чего обычно бывает достаточно для мелких задач. В этом случаи опция будет выглядеть так:

Для смены пароля используйте

 

В большинстве случаев  этого будет достаточно. На этом всё, спасибо за внимание.


Вы можете оставить комментарий, или ссылку на Ваш сайт.