среда, 16 апреля 2014 г.

FTP на Linux. ProFTPd.conf на русском

Я думаю, каждый из вас когда-то пользовался FTP сервером и прекрасно представляет, что это и с чем его едят. Поэтому нет смысла описывать лишнее, а поведаю как я вам лучше про установку и конфигурирование. Заодно расскажу, с какими ошибками я столкнулся и как это исправить.

FTP на Linux. ProFTPd.conf на русском

Итак, ftp сервер ставится из пакета proftpd. Пакет находится в стандартных репозиториях, поэтому дополнительно ничего подключать не надо. Для установки используйте привычную вам утилиту, в зависимости от типа Linux дистрибутива. Будь то apt-get, aptitude, yum, emerge или что-то ещё. Мне же приходилось устанавливать proftpd только на Ubuntu и Debian. Здесь основные конфигурационные файлы хранятся в папке /etc/proftpd/,а самый главный конфиг, это ptoftpd.conf (вот о нём-то и пойдёт речь, а чтобы лучше понять, что к чему – я перевёл его на русский, как смог). Proftpd.conf, кстати не сильно отличается и во FreeBSD, так что можете смело, но внимательно, использовать его и там.

ProFTPd УСТАНОВКА

Итак, предположим, что мы устанавливаем proftpd на дистрибутив ветки Debian:
1.# apt-get install proftpd
2. Пакет скачивается и начинается графическая установка. В ходе установки выполняется преконфигурация. А именно, у вас спросят, в каком режиме должен работать proftpd – standalone или inetd. Если к вам будет подключаться небольшое кол-во человек одновременно - рекомендуем использовать inetd. Это снизит нагрузку. В случае с standalone при каждом новом подключении будет создаваться новый процесс, что значительно повысит нагрузку на ваш сервер. ВНИМАНИЕ! Для корректной работы в режиме inetd необходимо наличие файла inetd.conf в папке /etc. Я не зря это упомянул, ибо иногда этот файл не создаётся автоматом при выборе режима inetd. Вот такой вот подводный камень, а как решить эту проблему я опишу в конце статьи.
3. Создаются пользователи ‘ftp’ и ‘proftpd’.
4. Управление демоном proftpd (останов и запуск)
/etc/init.d/proftpd start | stop
Кстати, заметил забавную фичу - команда STOP не останавливает, а перезапускает proftpd... всегда.


ProFTPd НАСТРОЙКА

Установить просто, а вот выполнить настройку ProFTPd, как анонимного, так и не анонимного доступа без соответствующего мануала по ProFTPd нелегко. Несмотря на то, что оригинальный файл конфигурации proftpd.conf полон различных комментариев всегда возникают вопросы, иначе не было бы кучи запросов в поисковиках, типа: "proftpd настройка ubuntu" (я бы всё-таки рекомендовал Debian). Да и файлы конфигураций и комментарии к ним практически всегда на английском языке, без которого сейчас никуда. Ну а если с английским проблемы? Или трудно сделать перевод конфига в силу большого количества непонятных технических терминов? Вот для этой цели мною и был выполнен перевод proftpd.conf и написан подробный мануал по настройке proftpd сервера. Я надеюсь, что не зря, и вам это очень поможет.
Ну а теперь я думаю стоит представить вам перевод proftpd.conf
################################################################
# Перевод ProFTPd.conf на русский язык.

# Вы можете использовать настройки ProFTPd.conf с комментариями на русском языке в   своей  системе.

# Вы можете свободно распространять текст перевода ProFTPd.conf со ссылкой на источник.

# Конфигурационный файл ProFTPd.conf переведён Squ1sh специально для StudyLinux.ru


################################################################
# /etc/proftpd/proftpd.conf -- Это базовый конфигурационный файл ProFTPD

# Чтобы изменения вступили в силу вам необходимо перезагрузить proftpd.

# включаем модули DSO. Это различные файлы с модулями.

# Не заморачивайтесь.

Include /etc/proftpd/modules.conf

# Выберите "off" для отключения IPv6 и работы только IPv4.

#Если ваша сеть работает на IPv6, то включите (on)

UseIPv6                 off

# Попробуйте включить эту опцию при задержках связи.

IdentLookups            off

#Собственно, имя сервера.

#Оно будет сообщено пользователю при подключении к нему

ServerName              "StudyLinux.ru"

#Принцип работы. Standalone или inetd.

ServerType              inetd

# Вывести приветствие до аутентификации

DeferWelcome            off

# Поддержка RFC2228

MultilineRFC2228        on 

# Сервер по умолчанию

DefaultServer           on

# Показывать символические ссылки

ShowSymlinks            on

#Настройка таймаутов

TimeoutNoTransfer       600

TimeoutStalled              600

TimeoutIdle             1200

#Название файла приветственного сообщения

#(находится в папке пользователя)

DisplayLogin                    welcome.msg

# Показывать приветственное сообщение (true)

DisplayChdir                .message true

ListOptions                 "-l"

# Это так называемый фильтр запрета. Все файлы разом (по маске *.*) 

#вы не сможете удалить. Только по одному.

DenyFilter              \*.*/

# "Запереть" пользователя в его папке. Это значит, что пользователь

 #будет попадать в свою папку. Иначе вам нужно будет явно указать целевую директорию вместо "~" символа.

DefaultRoot            ~

# Эту опцию можно не менять.

RequireValidShell      off

# Порт для работы FTP. Стандартный порт - 21

Port               21

# В некоторых случаях вы должны указать диапазон пассивных портов в 

#обход для обхода файрволла. Для этого укажите диапазон портов.

#Вполне возможно использование более узкого диапазона. Если на 

#файрволле не запрещён 21 порт, то опцию можно не #расскоментировать.

# PassivePorts                  49152 65534

# Если вы работаете за NAT'ом, эта опция поможет способствовать

 #пассивной передаче данных. Для этого укажите здесь ваш внешний

 #адрес и откройте пассивные порты на файрволле.

# MasqueradeAddress         1.2.3.4

# Эту опцию нужно использовать при маскарадинге динамических IP-#адресов:

# Обновлять настройки маскараденные IP-адреса каждые 8 часов

# DynMasqRefresh 28800

# Для предотвращения DoS атак, укажите максимальное число дочерних 

#процессов (стандартно - 30).

#Если в ваши потребности входит более 30 одновременных подключений 

#- просто поменяйте это значение. ВНИМАНИЕ! Эта опция заработает

 #только в режиме standalone! В режиме inetd всё работает на одном

 #процессе, так что в этом плане DoS атака не страшна

MaxInstances            30

# Укажите пользователя и его группу, от имени которого будет работать FTP-сервер. (Эти значения можно не менять)

User               proftpd

Group              nogroup

# Маска доступа 022 это хороший стандарт маски доступа на запись\чтение. Так и оставим.

Umask                   022  022

# Разрешим перезапись уже созданных файлов.

AllowOverwrite              on

# Расскомментируйте это, если хотите использовать NIS или LDAP авторизацию

# PersistentPasswd      off

# Расскомментируйте это если хотите использовать PAM-аутентификацию

 #и локальные пароли

# AuthOrder             mod_auth_pam.c* mod_auth_unix.c

# Будьте внимательны при использовании этой опции. Она позволит 

#видеть прогресс и скорость закачки файлов, но даст значительную #нагрузку на процессор

# UseSendFile           off

# Куда писать логи.

TransferLog /var/log/proftpd/xferlog

SystemLog   /var/log/proftpd/proftpd.log

QuotaEngine off

Ratios off

# Задержки движка. Зачем - непонятно. Включено по умолчанию. 

#Однако в оригинальной версии proftpd.conf файла тут была ссылка на описание.

# Ссылка оказалась нерабочей.

DelayEngine on

ControlsEngine        off

ControlsMaxClients    2

ControlsLog           /var/log/proftpd/controls.log

ControlsInterval      5

ControlsSocket        /var/run/proftpd/proftpd.sock

AdminControlsEngine off

# Фреймворки алтернативной аутентификации.

# Я думаю что здесь нужно раскомментировать нужный метод.

# Никогда сам не пользовался (только стандартная UNIX-аутентификация)

#Include /etc/proftpd/ldap.conf

#Include /etc/proftpd/sql.conf

# А вот эта опция используется для FTPS соединения

# Т.е. защищенное ssl соединение. (Ну если совсем уж всё секретно)

#Include /etc/proftpd/tls.conf

# Так и не понял, что это за опция и зачем нужна

# Если кто знает - подскажите

#Include /etc/proftpd/virtuals.con

# Базовая конфигурация анонимного соединения без каталогов для загрузки.

# Если вы не желаете открывать анонимный доступ, то можете закомментировать всё,

# что находится ниже или просто удалить :)

User                 ftp

Group                nogroup

# Привязка Анонимуса к пользователю 'ftp'. Т.е. назначение анонимусу прав этого пользователя

UserAlias            anonymous ftp

#   # Все файлы принадлежат пользователю 'ftp'.

#   DirFakeUser    on ftp

#   DirFakeGroup on ftp

#

RequireValidShell        off

#

#   # Сколько анонимусов может подключиться одновременно

#   MaxClients              10

#

#   # Показывать приветственное сообщение при переходе

#   # в каждую директорию

#   DisplayLogin            welcome.msg

#   DisplayChdir        .message

#

#   # Ограничение по директиве Write

#       DenyAll

#

#   # Uncomment this if you're brave.

#   # 

#   #   # Маска доступа 022 это хороший стандарт маски доступа на  запись\чтение.

#   #   # (Только тут отдельные правила для анонимусов)

#   #   Umask               022  022

#   #            DenyAll

#   #            AllowAll

################################################################

Вот и весь файл. На первый взгляд кажется сложным, но на самом деле тут вовсе нечего конфигурировать.  Принцип работы анонимного proftpd сервера заключается в авторизации пользователя ‘ftp’ без пароля. Именно в папку /home/ftp попадает пользователь при попытке анонимного соединения. Конечно можно создать иную папку и «привязать» к ней пользователя путём редактирования директивы «DefaultRoot» файла proftpd.conf, но это следует делать только в том случае, если вы хотите, чтобы несколько разных ftp-пользователей попадало в одну общую папку. Смысл только при нескольких ftp-аккаунтах. Вообще же можно просто добавить нового пользователя linux
# adduser ftpuser (как пример)
Задать ему пароль, и готов аккаунт. Никто не запрещает вам использовать и свои собственные логин/пароль (тогда попадёте к себе в папку /home/yourname). Единственный запрет – логин/пароль root’a. Конечно вы можете назначить пароль пользователю «ftp»:
# passwd ftp
Но тогда будут невозможны анонимные соединения.
Я думаю вопросов по анонимному соединению у вас нет. Да и по не анонимному тоже. Минимальное конфигурирование файла proftpd.conf сводится к выбору «standalone» или «inetd». В принципе ничего больше для работы не анонимного proftpd сервера не нужно.
Кстати, я говорил, что для режима inetd необходимо наличие файла inetd.conf в папке /etc
Обычно этот файл создаётся автоматически при выборе режима inetd во время установки, но случаются и ошибки, в результате которых нужного нам файла нет. Тогда мы увидим такое сообщение при попытке запуска proftpd:

ProFTPd warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration.

Паниковать не стоит. Просто создаём в папке /etc файлик inetd.conf и вписываем туда тот минимум, что нужен для работы proftpd сервера, а именно эти 2 строчки:

ftp stream tcp nowait root   /usr/sbin/tcpd   /usr/sbin/proftpd

swat stream tcp nowait.400 root   /usr/sbin/tcpd   /usr/sbin/swat

Пробуем перезапускать. Должно всё заработать.
Я надеюсь что данной статьёй помог вам разобраться в том, как установить ftp сервер на Linux и доходчиво объяснил основной принцип работы в плане авторизации и типов работы как standalone, так и inetd. А также помог решить часто возникающую проблему. Если у вас всё-таки остались вопросы по настройке proftpd или возникла нестандартная проблема, то добро пожаловать на наш форум.
Вы всегда можете оставить в комментариях свои замечания и пожелания по доработке, изменению или исправлению статьи. Мы работаем для вас!

Комментариев нет :

Отправить комментарий