Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Установка FTP-сервера ProFTPd на Linux Debian (или Ubuntu)

Практика



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

В данной заметке я расскажу - как установить FTP сервер на ОС Linux Debian. В нашем примере мы сделаем это на Squeeze, однако этот же метод прекрасно работает и под другими версиями этой ОС.


Установка

Итак, из консоли Debian вводим:

# sudo aptitude install proftpd

Во время установки нам будет предложено на выбор 2 варианта поставки:

а) From inetd. Если выбрать этот вариант - демон ProFTPd будет работать из-под службы inetd.
б) Standalone. При данном варианте ProFTPd установится как самостоятельная служба. Я выбираю именно этот вариант, т.к. мне удобно работать с ProFTPd как с отдельной службой.

После установки apt сразу запустит демон и он станет доступен на стандартном порту.

Проверить доступность можно с помощью такой команды:

$ ftp 127.0.0.1

Если клиент ftp подсоединился - значит, демон успешно установлен и работает.


Настройка

Но мало поставить демон, его надо еще и настроить.

Файл настроек в Debian для ProFTPd лежит по адресу /etc/proftpd и называется, соответственно, proftpd.conf.

Следует заметить, что "из коробки" ProFTPd сразу предоставляет доступ пользователям данной машины в свои домашние папки. Т.е., если пользователь, зарегистрированный на этом компьютере, попробует зайти на FTP - его пустит под своим логином и паролем (системы) и корневой папкой для него будет его домашняя директория.
Однако надо быть внимательным!!! Если пользователь наберет "cd .." - он легко поднимится на уровень выше и сможет обозревать папки других пользователей, а если еще раз выолнит эту команду - сможет обозревать всю файловую систему сервера, что крайне нежелательно с точки зрения безопасности.

Теперь пойдем настраивать наш сервер.

Первое, что следует понять - ProFTPd использует учетные записи пользователей самого сервера, т.е. если Вы хотите добавить пользователя для FTP - Вам нужно добавлять его на самом сервере как пользователя сервера. Если же Вы не хотите позволять пользователю подсоединяться или заходить в консоли - используйте в качестве командной среды /bin/false, при этом подсоединяться по FTP он сможет.
Соответственно, пароль к FTP совпадает с паролем пользователя.

Например, создадим пользователя "myftpuser", которому разрешено будет только подсоединяться по FTP:

$ sudo adduser myftpuser --shell /bin/false


Теперь давайте откроем файл /etc/proftpd/proftpd.conf

Внутри данного файла зададим следующие параметры:
  • UseIPv6 - Включить ли поддержку IPv6
  • ServerName - Имя сервера, которое отображается в приветствии ProFTPd
  • Port - Можно задать нестандартный порт, на котором слушает ProFTPd
  • PassivePorts - Здесь можно перезадать стандартный диапазон пассивных FTP портов
  • MaxInstances - Максимальное количество подсоединений (подключенных сессий). Следует отметить, что это количество именно соединений, а не пользователей - для каждого пользователя может быть несколько соединений.
  • Umask - маска создаваемых файлов. Рекомендую обратить на эту опцию внимание - именно с этой маской будут создаваться файлы при копировании на этот сервер по FTP. При маске по-умолчанию 022 директории будут создаваться с chmod = 755, а файлы - 644, что разрешает полный доступ только для пользователя FTP, но доступ только на чтение для остальных пользователей.
  • AllowOverwrite - Разрешить ли перезапись файлов или только их добавление (т.е. если выключить опцию - файл можно буть залить на сервер один раз, перезаписать его нельзя - только добавить рядом другой файл).
  • TransferLog и SystemLog - можно указать собственные пути для логов.
  • RequireValidShell - Если включить - ProFTPd не пустит пользователей, у которых не указана рабочая командная среда (т.е. пользователи с /bin/false не будут иметь доступ через FTP).


Не даем пользователям гулять по файловой системе сервера

Для этого используем технику chroot, которую ProFTPd поддерживает "из коробки".

Опция "DefaultRoot" управляет как-раз тем - куда chroot'ить пользователей. При этом выше по дереву каталогов пользователи подняться не могут. Давайте разберем два наиболее часто встречающихся вариантов.

1) Всех пользователей создана одна папка, в которой они "копошатся". При этом директория уже должна существовать в файловой системе сервере.

Например, мы создали директорию "/var/ftp" и хотим, чтобы все пользователи "ошивались" там. Тогда опция будет выглядеть так:

DefaultRoot /var/ftp

2) Все пользователи при логине через FTP попадают в свою домашнюю директорию. При этом выше этой директории они подняться не могут - т.е. они не могут заглянуть в директорию соседнего пользователя.

Тогда опция будет выглядеть так:

DefaultRoot ~/


Частный CHROOT для пользователя

Бывают случаи, когда весь сервер должен работать по одному сценарию (например, каждого пользователя chroot'ить в его собственный каталог), а какой-то пользователь (или пользователи) должен иметь специальную корневую директорию. Например, сервер как сервер, а есть пользователь, который является веб-мастером (например, внешний пользователь) и должен быть замапен только в каталог /var/www без возможности выйти на уровень выше, при этом домашний каталог пользователя ему, по понятным причинам, не подходит.

Для примера, заведем пользователя webadmin и создадим ему такие условия.

$ sudo addgroup webadmin --ingroup www-data --shell /etc/false

Здесь мы создали пользователя webadmin и включили его в ту же группу, в которой работает сервер Apache (www-data), при этом запретив ему коннектиться и видеть командную строку (--shell /etc/false).

Теперь добавим следующий блок в файл /etc/proftpd/proftpd.conf

<Anonymous /var/www>
 User      webadmin
 Group     www-data

 RequireValidShell    off
 AnonRequirePassword  on

 <Directory /var/www>
  AllowOverwrite  on
  <Limit ALL>
   AllowALL       on
  </Limit>
 </Directory>

</Anonymous>

В этом блоке:

User и Group - здесь задаются имя пользователя и группа, под которыми будет происходить работа данной сессии; соответственно, пользователь должен будет логиниться с этими именем пользователя и его паролем.

RequireValidShell off - здесь мы позволяем ProFTPd логинить пользователя, у которого нет командной строки.

AnonRequirePassword on - а этой директивой мы требуем, чтобы "анонимный" с точки зрения ProFTPd пользователь не мог зайти, не набрав правильный пароль.

И дальше идет описание опций директории и лимита.

После этих изменений - перезапустите ProFTPd и пользователь webadmin при логине будет попадать сразу в директорию /var/www, которая для него будет корневой и выше которой он подняться не сможет, а другие пользователи будут продолжать нормально логиниться по общему сценарию сервера.


Виртуальные хосты

Бывает, что необходимо на одной физической машине поднять несколько виртуальных FTP серверов, каждый со своими настройками. ProFTPd это умеет.

Для этого служит директива <VirtualHost IP>.

Вместо IP ей нужно указать IP-адрес виртуального хоста. Предполагается, что машина при этом имеет несколько IP адресов, например, добавленных алиасами. Тогда пользователи, подключающиеся к одному адресу будут работать с одним "сервером", а к другому - как будто с другим (хотя на самом деле - тем же самым).

Так-же разделять сервера можно и по портам - т.е. указывая один и тот же IP адрес, но добавляя директиву Port внутрь конфигурации VirtualHost. Тогда пользователи смогут подключаться по одному и тому же IP адресу, но с указаением разных портов - и будут попадать на по-разному настроенные инстанции сервера FTP.

Внутри блока <VirtualHost> ... </VirtualHost> настройки производятся так-же, как и внутри основного блока.

<VirtualHost 11.22.33.44>
Port 1050
...
</VirtualHost>



Для первых шагов - это все. Больше информации можно подчерпнуть с сайта ProFTPd:
www.proftpd.org
создано: 2017-05-10
обновлено: 2021-01-11
133415



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционная система LINUX

Термины: Операционная система LINUX