LinuxForum.Fans
Тема

Проблема при подключении к FTP из браузера Windows

Автор: shurik_7866 25 сообщений 1732 просмотров
#302315
shurik_7866 написал:
Отключил пасивный режим
pasv_enable=NO

Для вебраузеров изменился текст ошибки и сама ошибка появляется мгновенно, до этого сначала было зависание прибл на 2 мин:

1. через Total Commander и FAR2 захожу как и раньше без проблем
2. Если зоходить через "Мой компьютор" изменился текст ошибки
Тепер
"
В ходе открытия папки на FTP произошла ошибка. Убедитесь что у вас есть разрешения открывать эту папку


200 Switching to ASCII mode
Permission denied
"

! Как видно из конфигурационного файла "ASCII mode" отключен

3. Для Internet Expolrer текст ошибки не изменился

4. через Google Chrome - Пишет "Веб-страница недоступна
Веб-страница по адресу ftp://alex:12qwaszx@192.168.0.101/, возможно, временно недоступна или постоянно перемещена по новому адресу.
Ошибка 601 (net::ERR_FTP_FAILED): Неизвестная ошибка."

5. через Mozilla FireFox - Выдает ошибку "550 Permission denied"

6. через Opera - Пишет "Сервер запросил неподдерживаемый метод аутентификации имени пользователя."

у меня абсолютно такая же ошибка, тоже CentOS.
после этого я подумал и мне пришло в голову отключить netfilter (iptables) "service iptables stop". поскольку закрались подозрения насчет него. так и оказалось что дело в неправильно настроенном фаерволе. хотя я настраивал с помощью модуля nf_conntrack_ftp для распознавания связанных ftp-соединений. видимо браузеры и проводник по сравнению с тем же TotalCommander используют несколько отличающийся набор протоколов и портов.

#302345

так. я нашел в чем косяк был.
у меня после перезапуска iptables выгружался модуль nf_conntrack_ftp. и автоматически обратно не загружался.
значит нужно сделать автозагрузку модуля.
вот описание настройки netfilter. если топикстартер сделает все как там написано то должно заработать (плюс допилить чтобы модуль автоматически загружался каждый раз):


В состав conntrack входят вспомогательные модули (helpers), обеспечивающие отслеживание протоколов прикладного и сеансового уровней: nf_conntrack_ftp, nf_conntrack_irc, nf_conntrack_pptp, nf_conntrack_netbios_ns и т. п. Требуются далеко не для всех протоколов, а только для тех, отслеживание которых требует знания специфики протокола. Например, протокол FTP использует в одном сеансе два соединения (управляющее соединение и соединение передачи данных), и чтобы корректно отследить соединение передачи данных, необходимо анализировать трафик управляющего соединения и выделять в нем информацию, касающуюся открытия соединения данных.

conntrack - основной критерий, используемый для контроля состояния соединения. Он предоставляет эффективный набор инструментов, позволяющий использовать информацию системы conntrack о состоянии соединения. Затронутую тему весьма проблематично осветить в двух словах и привести по ней простые примеры, не выходя за краткий формат, принятый для нашей статьи. Поэтому ограничимся мы подробно рассмотрим лишь наиболее важный параметр данного критерия — ctstate. Для прочих параметров мы лишь кратко опишем синтаксис и назначение. За более подробной информацией обратитесь к документации, прилагаемой к вашему дистрибутиву. Итак,
--ctstate маска

Маска содержит перечисление через запятую список возможных состояний соединения. Пакет считается удовлетворяющим критерию, если соединение, по которому он проходит, находится в одном из перечисленных состояний.

Возможные состояния:
NEW — соединение не открыто, то есть пакет является первым в соединении. Полезные примеры использования этого состояния приведены выше, в частности, при описании TCP-специфичных критериев.
ESTABLISHED — пакет относится к уже установленному соединению. Обычно такие пакеты принимаются без дополнительной фильтрации, как и в случае с RELATED.
RELATED — пакет открывает новое соединение, логически связанное с уже установленными, например, открытие канала данных в пассивном режиме FTP.

Например:
--------------------------------------------------------------------------------------------------------------------
modprobe nf_conntrack_ftp # Подгружаем модуль для распознавания связанных FTP-соединений
# В старых системах этот модуль может называться ip_conntrack_ftp
iptables -F # Очищаем все цепочки таблицы filter
# Ко всем пакетам, которые относятся к уже установленным соединениям, применяем терминальное действие ACCEPT — пропустить
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 21 -j ACCEPT # Разрешаем открывать соединения на 21 #TCP-порт.
iptables -P INPUT DROP # В качестве действия по умолчанию устанавливаем DROP — блокирование пакета
iptables -P OUTPUT ACCEPT # Разрешаем все исходящие пакеты
# Правила существуют только пока компьютер включён, после перезагрузки правила автоматически сбрасываются и
# очищаются. Чтобы сохранить правила
/sbin/service iptables save # Правила сохранятся в файле /etc/sysconfig/iptables и будут применяться при запуске,
# перезапуске службы или при перезагрузке компьютера.
--------------------------------------------------------------------------------------------------------------------

Этот набор команд обеспечит функционирование на хосте FTP-сервера с поддержкой как активного, так и пассивного режимов. В пассивном режиме FTP клиент сначала устанавливает управляющее соединение на TCP-порт 21 сервера. Когда возникнет необходимость передачи данных, клиент даст серверу команду PASV. Сервер выберет высокий порт и подключится к нему в режиме прослушивания, отправив номер порта клиенту по управляющему соединению. Система conntrack, при наличии подгруженного модуля ядра nf_conntrack_ftp, зафиксирует это сообщение и выделит номер порта. Когда клиент откроет соединение данных на этот высокий порт, система conntrack присвоит первому пакету статус RELATED, в результате чего пакет пройдет по нашему правилу и будет принят. Остальные пакеты в этом соединении будут иметь уже статус ESTABLISHED и тоже будут приняты.

Возможность корректно обрабатывать пассивный режим FTP, как это было описано выше, из всех unix-фаерволов доступна только в iptables. В других фаерволах для решения данной проблемы используются различные «костыли». Например, в pf управляющие FTP-соединения пропускаются через специальную программу ftp-proxy, которая анализирует трафик подобно conntrack и «на лету» добавляет правила для соединений данных. Однако даже подобные «костыли» существуют далеко не для всех протоколов. Поэтому можно утверждать, что в данном аспекте iptables находится вне конкуренции.

С обработкой активного режима таких проблем не возникает, так как сервер сам устанавливает соединение данных с порта 20, поэтому первый пакет пропускается согласно правилу по умолчанию цепочки OUTPUT. Правда, проблемы могут возникнуть на стороне фаервола клиента, но это уже не относится к компетенции сервера.
#302357

допилил автозагрузку с помощью /etc/rc.local

#302358
captain_Negri написал:
допилил автозагрузку с помощью /etc/rc.local

А разве в Центе автозагрузка пилитса скриптами rc.local?

#302684

я вобще в линусках не силен.
про rc.local узнал погуглив.
для меня главное что этот способ работает и удовлетворяет моим нуждам. а насколько он православный я не знаю

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