LinuxForum.Fans
Тема

Задержки в ProFTPd 1.3.4a

Автор: Klader 4 сообщений 2053 просмотров
#331469

Добрый день/вечер.

ОС: Debian Wheezy 7.0.1

Поднял ProFTPd сервер на Debian'е, подключаюсь клиентом FileZilla. Ставлю на передачу кучу файлов и идет задержка в 3 минуты. Как убрать эту задержку?

Конфиг:

http://pastebin.com/5Cr5JycN

Логи:

proftpd.log

Авг 06 05:35:48 Server proftpd[12177] Server (IP Адрес): FTP session closed. Авг 06 05:35:49 Server proftpd[12171] Server (IP Адрес): FTP session closed. Авг 06 05:35:49 Server proftpd[12208] Server (IP Адрес): FTP session closed. Авг 06 09:35:50 Server proftpd[12283] Server: ProFTPD 1.3.4a (maint) (built Thu Apr 18 2013 03:44:07 UTC) standalone mode STARTUP

#331514

Проблема решена директивами


# Тут тебе нужно указать диапазон портов, на которые будут подключаться клиенты. Если порты открыты действительно все, то это не обязательно. Лучше проверить.
PassivePorts 49152 65534

# А тут ты должен указать внешний IP-адрес роутера в сети провайдера. Без этого passive-режим (а используют в основном только его) работать не будет.
MasqueradeAddress 1.2.3.4

Сервак за роутером, DMZ на его IP поставлен.

#331528

Еще бы не помешало ссылочку на руководство, где вы нашли решение. Man-страницы, конечно, есть всегда под рукой, но не всегда на русском, а новичкам будет полезно.

#331540

Мне помогли на ЛОРе. Ссылка Задержки в ProFTPd

Конфигурационный файл (пример с авторизацией пользователей из системы + проверка по shell):

Показать
text
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
# 

# Includes DSO modules Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes. (Если не пользуетесь IPv6, то лучше установите значение off) UseIPv6 on # If set on you can experience a longer connection delay in many cases. (В настоящее время протоколом RFC1413 никто не пользуется, # поэтому отключаем.)

IdentLookups off

ServerName "FTP Server Debian" # Имя сервера. Выводит при подключении клиенту. ServerType standalone

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

DeferWelcome off

MultilineRFC2228 on DefaultServer on ShowSymlinks on

TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200

DisplayLogin welcome.msg DisplayChdir .message true ListOptions "-ls" # По умолчанию значение стояло "-l" . "-ls" если хотите, чтобы все файлы отображались (например, .htaccess)

DenyFilter \*.*/

# Use this to jail all users in their homes DefaultRoot ~ # закрываем пользователя в его директории RootLogin off # запрещаем вход от имени root

# Users require a valid shell listed in /etc/shells to login. # Use this directive to release that constrain. RequireValidShell on # включаем проверку по shell, только если авторизация происходит по данным пользователя, который

#существует в системе.

# Port 21 is the standard FTP port. По умолчанию порт у сервера 21. Можно изменить на свой вкус. Port 21

# In some cases you have to specify passive ports range to by-pass # firewall limitations. Ephemeral ports can be used for that, but # feel free to use a more narrow range. # Открываем порты для пассивного метода обмена данными. Обычно значения остаются по умолчанию.

PassivePorts 49152 65534

# If your host was NATted, this option is useful in order to # allow passive tranfers to work. You have to use your public # address and opening the passive ports used on your firewall as well. # В этой строке указываем внешний IP адрес роутера/маршрутизатора за которым стоит сервер.

MasqueradeAddress xx.xx.xx.xx

# This is useful for masquerading address with dynamic IPs: # refresh any configured MasqueradeAddress directives every 8 hours <IfModule mod_dynmasq.c> # DynMasqRefresh 28800 </IfModule>

# To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd) # Устанавливаем значение одновременно создаваемых процессов. Защита от DDoS атак. MaxInstances 30

# Set the user and group that the server normally runs at. User proftpd Group nogroup

# Umask 022 is a good standard umask to prevent new files and dirs # (second parm) from being group and world writable. Umask 022 022 # Normally, we want files to be overwriteable. AllowOverwrite on

# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords: # PersistentPasswd off

# This is required to use both PAM-based authentication and local passwords # AuthOrder mod_auth_pam.c* mod_auth_unix.c

# Be warned: use of this directive impacts CPU average load! # Uncomment this if you like to see progress and transfer rate with ftpwho # in downloads. That is not needed for uploads rates. # # UseSendFile off

TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log

# Logging onto /var/log/lastlog is enabled but set to off by default #UseLastlog on UseFtpUsers on # Запрещаем пользователям из /etc/ftpusers доступ к FTP серверу. UseReverseDNS off # Может быть задержка из-за включения этой опции. При обмене в пассивном режиме происходит поиск DNS #адресов/имен IP адреса пользователя/клиента # In order to keep log file dates consistent after chroot, use timezone info # from /etc/localtime. If this is not set, and proftpd is configured to # chroot (e.g. DefaultRoot or <Anonymous>), it will use the non-daylight # savings timezone regardless of whether DST is in effect. #SetEnv TZ :/etc/localtime

<IfModule mod_quotatab.c> QuotaEngine off </IfModule>

<IfModule mod_ratio.c> Ratios off </IfModule>

# Delay engine reduces impact of the so-called Timing Attack described in # http://www.securityfocus.com/bid/11430/discuss # It is on by default. <IfModule mod_delay.c> DelayEngine on </IfModule>

<IfModule mod_ctrls.c> ControlsEngine off ControlsMaxClients 2 ControlsLog /var/log/proftpd/controls.log ControlsInterval 5 ControlsSocket /var/run/proftpd/proftpd.sock </IfModule>

<IfModule mod_ctrls_admin.c> AdminControlsEngine off </IfModule>

# # Alternative authentication frameworks # #Include /etc/proftpd/ldap.conf #Include /etc/proftpd/sql.conf

# # This is used for FTPS connections # #Include /etc/proftpd/tls.conf

# # Useful to keep VirtualHost/VirtualRoot directives separated # #Include /etc/proftpd/virtuals.conf

# A basic anonymous configuration, no upload directories.

# <Anonymous ~ftp> # User ftp # Group nogroup # # We want clients to be able to login with "anonymous" as well as "ftp" # UserAlias anonymous ftp # # Cosmetic changes, all files belongs to ftp user # DirFakeUser on ftp # DirFakeGroup on ftp # # RequireValidShell off # # # Limit the maximum number of anonymous logins # MaxClients 10 # # # We want 'welcome.msg' displayed at login, and '.message' displayed # # in each newly chdired directory. # DisplayLogin welcome.msg # DisplayChdir .message # # # Limit WRITE everywhere in the anonymous chroot # <Directory *> # <Limit WRITE> # DenyAll # </Limit> # </Directory> # # # Uncomment this if you're brave. # # <Directory incoming> # # # Umask 022 is a good standard umask to prevent new files and dirs # # # (second parm) from being group and world writable. # # Umask 022 022 # # <Limit READ WRITE> # # DenyAll # # </Limit> # # <Limit STOR> # # AllowAll # # </Limit> # # </Directory> # # </Anonymous>

# Include other custom configuration files Include /etc/proftpd/conf.d/

Если сервер находится за роутером/маршрутизатором, нужно открыть 21 порт. Если есть поддержка DMZ, лучше назначить эту опцию на IP адрес сервера, тогда все порты и полностью весь доступ к серверу будет открыт (в таком случае нужно позаботится о защите сервера). Можно так же открыть нужные порты в Virtual Server опции (диапазоном 0 - 10000 или по одному).


Вариант авторизации по виртуальным пользователям.

Конфигурационный файл оставляем тот же. Добавляем/меняем только эти строки:

text
AuthUserFile           /etc/proftpd/ftpd.passwd    # указываем файл авторизации
RequireValidShell   off

Консоль:

text
touch /etc/proftpd/ftpd.passwd  # создадим файл для хранения пароль + логин

sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=_ИМЯ_ --shell=/bin/false --home=/ДИРЕКТОРИЯ/ --uid=33 --gid=33

# создадим виртуального пользователя

service proftpd restart # перезапустим сервер

Войдите или зарегистрируйтесь, чтобы ответить.