URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4838
[ Назад ]

Исходное сообщение
"Iptables не выпускает Filezilla через FTP"

Отправлено Agafon , 22-Апр-11 20:27 
Всем привет уважаемые формуляне

может кто подскажет новичку в чем может быть дело. Ситуация следующая
стоит centos 5.5 задача быть шлюзом и прокси
утсановлен squid-havp как прокси
и iptables для пакетов
в общем все работает интернет раздаёт сквид кэширует havp+clam сканируют http трафик
проблемма в ftp
  iptables не даёт подлючение к хостеру

конфигурация след

eth0 --internet (192.168.178.50)<---> роутер 192.168.178.1 <----> internet
eth1 -- lan    (192.168.2.1)<----> тачки клиенты(192.168.2.2)

на тачке прописан  шлюз и днс centosА
но не думаю что в днс дело так как гугл пингуется

вот конфиг iptables
# Generated by iptables-save v1.3.5 on Wed Apr 20 03:16:17 2011
*nat
:PREROUTING ACCEPT [13:1184]
:POSTROUTING ACCEPT [1:172]
:OUTPUT ACCEPT [1:172]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Wed Apr 20 03:16:17 2011
# Generated by iptables-save v1.3.5 on Wed Apr 20 03:16:17 2011
*mangle
:PREROUTING ACCEPT [453:35320]
:INPUT ACCEPT [453:35320]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [342:49808]
:POSTROUTING ACCEPT [342:49808]
COMMIT
#1 Completed on Wed Apr 20 03:16:17 2011
# Generated by iptables-save v1.3.5 on Wed Apr 20 03:16:17 2011
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [342:49808]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
#DNS
-A RH-Firewall-1-INPUT  -i eth1 -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT  -i eth1 -m udp -p udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT  -i eth0 -p udp -s 192.168.178.1 --sport 53 -j ACCEPT
-A RH-Firewall-1-INPUT  -i eth0 -p tcp -s 192.168.178.1 --sport 53 -j ACCEPT
#PRINTING
-A RH-Firewall-1-INPUT -i eth1 -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -i eth1 -p tcp -m tcp --dport 631 -j ACCEPT
#Rules for connect to router
#-A RH-Firewall-1-FORWARD -i eth1 -d 192.168.178.1 -m state --state NEW,ESTABLISHED -j ACCEPT
#-A RH-Firewall-1-FORWARD -i eth0 -d 192.168.2.0/24 -m state --state ESTABLISHED -j ACCEPT
#-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 10000 -j ACCEPT

#SQUID
-A RH-Firewall-1-INPUT -i eth1 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 3128 -j ACCEPT
-A RH-Firewall-1-INPUT -i eth1 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 8080 -j ACCEPT

#VNC
-A RH-Firewall-1-INPUT -i eth1 -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 5900 -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED  -m tcp --sport 80 -j ACCEPT
#HTTPS
-A RH-Firewall-1-INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED -m tcp --sport 443 -j ACCEPT
#SSH
-A RH-Firewall-1-INPUT -i eth1 -s 192.168.2.0/24 -m state --state ESTABLISHED,NEW,RELATED -p tcp --dport 22 -j ACCEPT
#WEBMIN
-A RH-Firewall-1-INPUT -i eth1 -s 192.168.2.0/24 -p tcp -m state --state NEW,ESTABLISHED,RELATED -m tcp --dport 10000 -j ACCEPT
#FTP
-A RH-Firewall-1-INPUT -i eth1 -s 192.168.2.0/24 -m state --state ESTABLISHED,NEW,RELATED -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0  -m state --state ESTABLISHED,RELATED -p tcp --sport 21 -j ACCEPT
#Allow active
-A RH-Firewall-1-INPUT -i eth1 -s 192.168.2.0/24 -m state --state ESTABLISHED,NEW,RELATED -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0  -m state --state ESTABLISHED,RELATED -p tcp --sport 20 -j ACCEPT
#Allow passive FTP
-A RH-Firewall-1-INPUT -i eth1 -s 192.168.2.0/24 -m state --state ESTABLISHED,NEW,RELATED -p tcp --dport 1024 -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0  -m state --state ESTABLISHED,RELATED -p tcp --sport 1024 -j ACCEPT
#log end
-A RH-Firewall-1-INPUT -i eth1 -j  LOG --log-level debug --log-prefix "EHT1 -FROM LAN "
-A RH-Firewall-1-INPUT -i eth0 -j  LOG --log-level debug --log-prefix "EHT0 -From INTERNET "
-A RH-Firewall-1-INPUT -j DROP
COMMIT
# Completed on Wed Apr 20 03:16:17 2011

буду очень признателен ,если кто подскажет в чем может быть дело?!


Содержание

Сообщения в этом обсуждении
"Iptables не выпускает Filezilla через FTP"
Отправлено sdog , 22-Апр-11 20:56 
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

"Iptables не выпускает Filezilla через FTP"
Отправлено Agafon , 22-Апр-11 21:47 
заблы дописать что
ip_conntrack_ftp
ip_nat_ftp

загруженны


"Iptables не выпускает Filezilla через FTP"
Отправлено LSTemp , 25-Апр-11 05:00 
>[оверквотинг удален]
> #Allow active
> -A RH-Firewall-1-INPUT -i eth1 -s 192.168.2.0/24 -m state --state ESTABLISHED,NEW,RELATED
> -p tcp --dport 20 -j ACCEPT
> -A RH-Firewall-1-INPUT -i eth0  -m state --state ESTABLISHED,RELATED -p tcp --sport
> 20 -j ACCEPT
> #Allow passive FTP
> -A RH-Firewall-1-INPUT -i eth1 -s 192.168.2.0/24 -m state --state ESTABLISHED,NEW,RELATED
> -p tcp --dport 1024 -j ACCEPT
> -A RH-Firewall-1-INPUT -i eth0  -m state --state ESTABLISHED,RELATED -p tcp --sport
> 1024 -j ACCEPT

вообще-то в пассивном режиме для передачи данных могут быть использованы любые порты с обеих сторон. клиент открывает два соединения  - одно из них на порт сервера 21. после сервер шлет ему свой порт для канала данных и клиент со своего второго порта устанавливает соединение с указанным портом сервера. при чем тут константа 1024 - для меня загадка (м/б имелись в виду все порты выше 1024?).

> #log end
> -A RH-Firewall-1-INPUT -i eth1 -j  LOG --log-level debug --log-prefix "EHT1 -FROM
> LAN "
> -A RH-Firewall-1-INPUT -i eth0 -j  LOG --log-level debug --log-prefix "EHT0 -From
> INTERNET "
> -A RH-Firewall-1-INPUT -j DROP
> COMMIT
> # Completed on Wed Apr 20 03:16:17 2011

самому попарсить где свалилось влом?

> буду очень признателен ,если кто подскажет в чем может быть дело?!


"Iptables не выпускает Filezilla через FTP"
Отправлено Agafon , 26-Апр-11 03:49 
Странно как то дальше
сейчас попробовал вместо ftp.xxxxxx вбить IP который получил пропинговав ftp и соединение установилось тоесть выглядит так как будто iptables не даёт читать днc . Но только в filzila ведь пинг на гугл.ком идёт и на все остальное


Нет не в лом пытаюсь читать но ничего стоющего там не вижу ((

>> самому попарсить где свалилось влом?
>>> буду очень признателен ,если кто подскажет в чем может быть дело?!


"Iptables не выпускает Filezilla через FTP"
Отправлено Aleks305 , 28-Апр-11 21:28 
> Странно как то дальше
> сейчас попробовал вместо ftp.xxxxxx вбить IP который получил пропинговав ftp и соединение
> установилось тоесть выглядит так как будто iptables не даёт читать днc
> . Но только в filzila ведь пинг на гугл.ком идёт и
> на все остальное
> Нет не в лом пытаюсь читать но ничего стоющего там не вижу
> ((
>>> самому попарсить где свалилось влом?
>>>> буду очень признателен ,если кто подскажет в чем может быть дело?!

ftp-сервер открывает порт 20 когда вы получаете файл или хотите посмотреть файл, соответственно он не попадает под правило с established, related - данные не идут, а аутентификация проходит

iptables -A FORWARD -i eth1(ваш внешний инт) -p tcp -s <ip ftp-сервера> --sport 20 -j ACCEPT


"Iptables не выпускает Filezilla через FTP"
Отправлено Andrey Mitrofanov , 28-Апр-11 23:27 
> -A RH-Firewall-1-INPUT  -i eth1 -m tcp -p tcp --dport 53 -j
> ACCEPT

Во-первых, я бы постеснялся мешать в одной цепочке стейтлес и стейтфул, извините мой фрунцузский!, правила... Хотя, наверное, должно и так тоже работать.

> #Rules for connect to router
> #-A RH-Firewall-1-FORWARD -i eth1 -d 192.168.178.1 -m state --state NEW,ESTABLISHED -j
> ACCEPT
> #-A RH-Firewall-1-FORWARD -i eth0 -d 192.168.2.0/24 -m state --state ESTABLISHED -j ACCEPT

Вот эти два выкинуть и забыть. (Сам вижу, что закоментированы.)

> #-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

А вот это -- включить, плюс во всех стейтфул правилах ниже оставить только чистый "--state NEW". Пакеты "RELATED,ESTABLISHED" от всех соединей, которые были "открыты" из состояния ровно NEW, будут пропущены _этим_--^^^ правилом. Так, как мне показалось, устроены эти "RH-Firewall-1"-скрипты...

> #SQUID
> -A RH-Firewall-1-INPUT -i eth1 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp
> --dport 3128 -j ACCEPT
> -A RH-Firewall-1-INPUT -i eth1 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp
> --dport 8080 -j ACCEPT

Соотвтственно:
-A RH-Firewall-1-INPUT -i eth1 -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT

Кстати, заметил, что объединеие INPUT и FORWARD в одну кучу в этих "RH-Firewall-1"-подобных пустит юзеров из локалки не только к сквиду на роутере, но и, сюрприз, на порты, в данном примере, 3128 и 8080 любого хоста снаружи, в интернете. Неаккуратнентко!

> #VNC
> -A RH-Firewall-1-INPUT -i eth1 -p tcp -m state --state NEW,ESTABLISHED -m tcp
> --dport 5900 -j ACCEPT
> -A RH-Firewall-1-INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED  -m
> tcp --sport 80 -j ACCEPT

Аналогично, для "простых" сервисов: в первом--^^^ оставить только NEW, второе выкинуть.

> #HTTPS
> -A RH-Firewall-1-INPUT -i eth0 -p tcp -m state --state ESTABLISHED,RELATED -m tcp
> --sport 443 -j ACCEPT

Выкинуть, всёравно не работает: нет открытия соединения с NEW. Или переписать.

> #SSH
> -A RH-Firewall-1-INPUT -i eth1 -s 192.168.2.0/24 -m state --state ESTABLISHED,NEW,RELATED
> -p tcp --dport 22 -j ACCEPT

То же: оставить только NEW; верно ли, что оно пускает юзеров по ssh не только на прокси.


А... понял. Ещё вариант: убираем общее правило для RELATED,ESTABLISHED, а каждый сервис "выписываем" примерно так:

-A RH-Firewall-1-INPUT -p tcp -s 192.168.2.0/24 --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --sport 22 -d 192.168.2.0/24 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

или так
$IPT_ADD -i eth1 -p tcp -s 192.168.2.0/24 --sport 1024:65535 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT_ADD -o eth1 -p tcp --sport 22 -d 192.168.2.0/24 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT


>[оверквотинг удален]
> #Allow active
> -A RH-Firewall-1-INPUT -i eth1 -s 192.168.2.0/24 -m state --state ESTABLISHED,NEW,RELATED
> -p tcp --dport 20 -j ACCEPT
> -A RH-Firewall-1-INPUT -i eth0  -m state --state ESTABLISHED,RELATED -p tcp --sport
> 20 -j ACCEPT
> #Allow passive FTP
> -A RH-Firewall-1-INPUT -i eth1 -s 192.168.2.0/24 -m state --state ESTABLISHED,NEW,RELATED
> -p tcp --dport 1024 -j ACCEPT
> -A RH-Firewall-1-INPUT -i eth0  -m state --state ESTABLISHED,RELATED -p tcp --sport
> 1024 -j ACCEPT

Ага, самое вкусное. :) Не скажу, что всё, что ниже сам написал, но очень старался скопипастить верно.

# Setting up rules for initial FTP connection server
$IPT_ADD -i eth1 -p tcp --sport 1024:65535 --dport ftp -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT_ADD -o eth1 -p tcp --sport ftp --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

# Setting up rules for Active FTP server
$IPT_ADD -o eth1 -p tcp --sport ftp-data --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT_ADD -i eth1 -p tcp --sport 1024:65535 --dport ftp-data -m state --state ESTABLISHED -j ACCEPT

# Setting up rules for Passive FTP server
$IPT_ADD -i eth1 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT_ADD -o eth1 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

И комментарии тоже не мои -- специально обученный скрипт пишет. То, что выше с $IPT_ADD (два сервиса) сгенерировано из двух последних строк примерно такого конфига:

---8<---
version 5

router r
        server ssh accept src 192.168.2.0/24 inface eth1
        server ftp accept inface eth1
--->8---

На самом деле с комментариями - из "explain" сессии.

Welcome - http://firehol.sf.net/