Недоступен FTP-сервер (Pure-FTPd) через интернет.

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

Модератор: SLEDopit

Аватара пользователя
Nigelist
Сообщения: 18
ОС: Debian Testing, KDE

Недоступен FTP-сервер (Pure-FTPd) через интернет.

Сообщение Nigelist »

Привет всем!

Имеется сервер с 2-мя сетевыми картами, одна подключена к локальной сети, другая к роутеру. На роутере настроено перенаправление запросов по 21 порту на сервер и DynDNS через noip.com. Для IPTables заданы такие настройки:

Код: Выделить всё

iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT

Где eth0 - сетевая карта подключенная к роутеру.

Установил и настроил Pure-FTPd + MySQL + Pure-FTPd WebUI на базе Debian 8.1. Но столкнулся с проблемой: по локальной сети FTP-сервер доступен, а вот удаленно через роутер уже нет. Где может быть проблема?
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3560
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Недоступен FTP-сервер (Pure-FTPd) через интернет.

Сообщение Hephaestus »

Для iptables настроено пропускать входящие пакеты на 21 порт.
А в обратную сторону?
Покажите вывод iptables-save целиком.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
Nigelist
Сообщения: 18
ОС: Debian Testing, KDE

Re: Недоступен FTP-сервер (Pure-FTPd) через интернет.

Сообщение Nigelist »

Hephaestus писал(а):
15.06.2015 07:16
Для iptables настроено пропускать входящие пакеты на 21 порт.
А в обратную сторону?
Покажите вывод iptables-save целиком.

Вот:
Spoiler

Код: Выделить всё

*nat
:PREROUTING ACCEPT [660430:44233637]
:INPUT ACCEPT [371392:26125877]
:OUTPUT ACCEPT [208553:13714938]
:POSTROUTING ACCEPT [208553:13714938]
-A POSTROUTING -s 172.168.12.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Jun 15 12:59:37 2015
# Generated by iptables-save v1.4.21 on Mon Jun 15 12:59:37 2015
*filter
:INPUT DROP [62431:6093961]
:FORWARD DROP [0:0]
:OUTPUT DROP [8553:444156]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport 12321 -j ACCEPT
-A INPUT -i eth0 -p tcp -m multiport --ports 49152:65535 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 40110:40210 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state INVALID -j DROP
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth1 -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
COMMIT
# Completed on Mon Jun 15 12:59:37 2015
# Generated by iptables-save v1.4.21 on Mon Jun 15 12:59:37 2015
*mangle
:PREROUTING ACCEPT [72734485:12146013695]
:INPUT ACCEPT [67164190:8211452272]
:FORWARD ACCEPT [5385628:3925404257]
:OUTPUT ACCEPT [138609240:11507308873]
:POSTROUTING ACCEPT [143986116:15432260050]
COMMIT
# Completed on Mon Jun 15 12:59:37 2015
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3560
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Недоступен FTP-сервер (Pure-FTPd) через интернет.

Сообщение Hephaestus »

Так-с...
У Вас есть роутер и есть сервер (компьютер).
Доступ блокируется либо на роутере (средствами его файрвола), либо на самом сервере. А может быть, и там, и там.
Приведенные правила iptables относятся к роутеру или к серверу?

Теперь по приведенным правилам.
Интерфейс eth1 смотрит в локальную сеть, как я понял.
Для него у Вас разрешены любые входящие пакеты.
-A INPUT -i eth1 -j ACCEPT 15 строка
и любые исходящие пакеты
-A OUTPUT -o eth1 -j ACCEPT 32 строка
поэтому с локальной сетью проблем с доступом не будет - всё разрешено.

А вот с доступом снаружи всё сложнее.
Входящие разрешены на 21 порт, с исходящими неясно.
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 33 строка - здесь вроде бы разрешены новые и ответные пакеты.
-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP34 строка - а здесь новые блокируются.
По идее, сначала должно отработать правило в 33 строке.

Советую включить логирование и посмотреть, где именно бьются пакеты.
Я обычно делаю так: прямо перед проверяемым правилом вставляю точно такое же, только действие ставлю LOG (или можно ULOG).
Например:

-A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT 25 строка

с логированием будет выглядеть так
-A INPUT -i eth0 -p tcp -m tcp --dport 21 -j LOG --log-prefix "Input 21 port accept" 24 строка (вставили ещё одну строку)
-A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT 25 строка
если пакет попадает под правило в 24 строке, стало быть, попадет и под правило в 25 строке.
То есть, если в логе отразилась запись, значит правило отработало.

Аналогичным образом делаете для исходящих пакетов.
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j LOG --log-prefix "OUTPUT ACCEPT"
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "Output DROP"
-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP

В самый конец добавьте ещё пару логирующих правил.

-A INPUT -j LOG --log-prefix "default input"
-A OUTPUT -j LOG --log-prefix "default output"
они отобразят пакеты, не попавшие ни под одно правило, и обработанные политикой по умолчанию (которая у Вас DROP).

Дальше обращаетесь к серверу снаружи и потом смотрите логи: с каким префиксом попадают в логи Ваши пакеты, тем правилом они и обрабатываются.
В Вашем конкретном случае, подозреваю, что пакеты рубятся политикой по умолчанию. Стало быть, увидите их с префиксом "default"
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
Nigelist
Сообщения: 18
ОС: Debian Testing, KDE

Re: Недоступен FTP-сервер (Pure-FTPd) через интернет.

Сообщение Nigelist »

Hephaestus спасибо за помощь! Проблема решена! Хочу обратить внимание, что кроме 21 порта, нужно открыть и пассивные порты для FTP-сервера, как на сервере, так и на роутере. Иначе подключиться не получится.

Hephaestus писал(а):
15.06.2015 11:47
с логированием будет выглядеть так
-A INPUT -i eth0 -p tcp -m tcp --dport 21 -j LOG --log-prefix "Input 21 port accept" 24 строка (вставили ещё одну строку)
-A INPUT -i eth0 -p tcp -m tcp --dport 21 -j ACCEPT 25 строка
если пакет попадает под правило в 24 строке, стало быть, попадет и под правило в 25 строке.
То есть, если в логе отразилась запись, значит правило отработало.

Аналогичным образом делаете для исходящих пакетов.
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j LOG --log-prefix "OUTPUT ACCEPT"
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "Output DROP"
-A OUTPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP

В самый конец добавьте ещё пару логирующих правил.

-A INPUT -j LOG --log-prefix "default input"
-A OUTPUT -j LOG --log-prefix "default output"
они отобразят пакеты, не попавшие ни под одно правило, и обработанные политикой по умолчанию (которая у Вас DROP).

Дальше обращаетесь к серверу снаружи и потом смотрите логи: с каким префиксом попадают в логи Ваши пакеты, тем правилом они и обрабатываются.
В Вашем конкретном случае, подозреваю, что пакеты рубятся политикой по умолчанию. Стало быть, увидите их с префиксом "default"

P.S. А где логи можно смотреть?
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3560
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Недоступен FTP-сервер (Pure-FTPd) через интернет.

Сообщение Hephaestus »

Если в iptables используется действие LOG, то записи попадают в логи ядра (это же на уровне ядра пакеты фильтуются).
Если же используется действие ULOG, то здесь задействуется syslog, и можно настроить вывод в отдельный файл.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали: