Всем привет уважаемые формулянеможет кто подскажет новичку в чем может быть дело. Ситуация следующая
стоит 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буду очень признателен ,если кто подскажет в чем может быть дело?!
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
заблы дописать что
ip_conntrack_ftp
ip_nat_ftpзагруженны
>[оверквотинг удален]
> #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самому попарсить где свалилось влом?
> буду очень признателен ,если кто подскажет в чем может быть дело?!
Странно как то дальше
сейчас попробовал вместо ftp.xxxxxx вбить IP который получил пропинговав ftp и соединение установилось тоесть выглядит так как будто iptables не даёт читать днc . Но только в filzila ведь пинг на гугл.ком идёт и на все остальное
Нет не в лом пытаюсь читать но ничего стоющего там не вижу ((>> самому попарсить где свалилось влом?
>>> буду очень признателен ,если кто подскажет в чем может быть дело?!
> Странно как то дальше
> сейчас попробовал вместо 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
> -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 5router r
server ssh accept src 192.168.2.0/24 inface eth1
server ftp accept inface eth1
--->8---На самом деле с комментариями - из "explain" сессии.
Welcome - http://firehol.sf.net/