LINUX.ORG.RU
ФорумAdmin

iptables dnat/snat ftp


0

1

Всем привет. Знаю что тема не нова, юзал поиск нотак и ответа не нашел... Есть гейт на федоре15 на ней поднят iptables и есть машинка на win2003R2 standart и IIS6.0 с фтп серваком и с серым айпи. Пытаюсь пробросить фпт с белого адреса на серый в активном режиме на сервер заходит(но залить с внешки а залить ничего не могу говорит «доступ запрещен»), а вот в пассивном падает на команде PASV(но аутентификация проходит нормально). С нутри сети клиенты ходят к нему как в пассивном так и в активном режиме нормально без проблем...

Вот конфиги iptables 
----
 # Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
#
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m conntrack --ctstate  ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#
#
#	Allow ICMP!
-A INPUT -m conntrack --ctstate NEW -p icmp --icmp-type 8 -m limit --limit 3/minute --limit-burst 5 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -p icmp --icmp-type 8 -j DROP
#-A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
-A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
#
#
#	Allow local host!
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo  -j ACCEPT
#
#
#	SSH, Block SSH bots!
-A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 22 -m recent --set --name SSH-Bots-Block
-A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 22 -m recent --update --seconds 30 --hitcount 1 --rttl --name SSH-Bots-Block -j REJECT
#
#
#	Open radius-client!
-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 1812 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m udp -p udp --dport 1812 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 1813 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m udp -p udp --dport 1813 -j ACCEPT
#
#
#	NTP update time!
-A INPUT -m conntrack --ctstate NEW -m udp -p udp --sport 123 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m udp -p udp --dport 123 -j ACCEPT
#
#
#	Open access for munin!
-A INPUT -m conntrack --ctstate NEW -s 192.168.10.0/24  -m tcp -p tcp --dport 80 --sport 1024:65535 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -s 192.168.10.0/24  -m udp -p udp --dport 80 --sport 1024:65535 -j ACCEPT
#	Open access to port 8080!
-A INPUT -m conntrack --ctstate NEW -s 192.168.10.0/24  -m tcp -p tcp --dport 8080 --sport 1024:65535 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -s 192.168.10.0/24  -m udp -p udp --dport 8080 --sport 1024:65535 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -s 192.168.10.0/24  -m tcp -p tcp --dport 3128 --sport 1024:65535 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -s 192.168.10.0/24  -m udp -p udp --dport 3128 --sport 1024:65535 -j ACCEPT
#
#
#	Open update for local machines DNS!
-A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --sport 53 --dport 1024:65535 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp --sport 1024:65535 --dport 53 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -m udp -p udp --sport 53 --dport 1024:65535 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m udp -p udp --sport 1024:65535 --dport 53 -j ACCEPT
#
#
#	Open DNS for local subnet!
-A INPUT -m conntrack --ctstate NEW -m udp -p udp -s 192.168.10.0/24 --sport 1024:65535 -d 192.168.10.8 --dport 53 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m udp -p udp -s 192.168.10.8 --sport 53 -d 192.168.10.0/24 --dport 1024:65535 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 192.168.10.8 --dport 53 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp -s 192.168.10.8 --sport 53 -d 192.168.10.0/24 --dport 1024:65535 -j ACCEPT
#
#	Open DNS for vpn subnet!
-A INPUT -m conntrack --ctstate NEW -m udp -p udp -s 172.16.99.0/28 --sport 1024:65535 -d 172.16.99.1 --dport 53 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m udp -p udp -s 172.16.99.1 --sport 53 -d 172.16.99.0/28 --dport 1024:65535 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -m tcp -p tcp -s 172.16.99.0/28 --sport 1024:65535 -d 172.16.99.1 --dport 53 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp -s 172.16.99.1 --sport 53 -d 172.16.99.0/28 --dport 1024:65535 -j ACCEPT
#
#
#	Open 80,443 ports!
-A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --sport 1024:65535  --dport 80 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -m udp -p udp --sport 1024:65535 --dport 80 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp --sport 1024:65535 --dport 80 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m udp -p udp --sport 1024:65535 --dport 80 -j ACCEPT
#
#
#	Open site artur.com.ua for certificate
-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp --sport 1024:65535 --dport 8088 -j ACCEPT
#
#
#
#-A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --sport 1024:65535  --dport 443 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp --sport 1024:65535  --dport 443 -j ACCEPT
#
#
#	Open FTP Active,Passive!
-A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --sport 21 -j ACCEPT
-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 21 -j ACCEPT
#
#-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -m tcp -p tcp --sport 20 -j ACCEPT
#-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp --sport 20 -j ACCEPT
#
#-A INPUT -m conntrack --ctstate ESTABLISHED -m tcp -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
#-A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -m tcp -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
#
#
#
#	Open xl2tpd!
-A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 1701 -j ACCEPT
-A INPUT -m conntrack --ctstate NEW -m udp -p udp --dport 1701 -j ACCEPT
#
#
#
-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A INPUT -j DROP
#
#
#	Open ftp,http,https,rdp for local subnet!
-A FORWARD -m conntrack --ctstate NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 0/0 --dport 21 -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 0/0 --dport 80 -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 0/0 --dport 443 -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 0/0 --dport 3389 -j ACCEPT
#
#
#	Open ftp,http,https,rdp fol vpn subnet
-A FORWARD -m conntrack --ctstate NEW -m tcp -p tcp -s 172.16.99.0/28 --sport 1024:65535 -d 0/0 --dport 21 -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -m tcp -p tcp -s 172.16.99.0/28 --sport 1024:65535 -d 0/0 --dport 80 -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -m tcp -p tcp -s 172.16.99.0/28 --sport 1024:65535 -d 0/0 --dport 443 -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -m tcp -p tcp -s 172.16.99.0/28 --sport 1024:65535 -d 0/0 --dport 3389 -j ACCEPT
#
#
#
-A FORWARD -m conntrack --ctstate NEW -p icmp --icmp-type 0 -j ACCEPT
-A FORWARD -m conntrack --ctstate NEW -p icmp --icmp-type 8 -j ACCEPT
#
#
#	Open RDP
#-A FORWARD -m tcp -p tcp --dport 3389 -d 192.168.10.77 -j ACCEPT
-A FORWARD -i eth1 -d 192.168.10.12 -m tcp -p tcp -m multiport --dports 20,21 -j ACCEPT
-A FORWARD -o eth1 -d 192.168.10.12 -m tcp -p tcp -m multiport --dports 20,21 -j ACCEPT
-A FORWARD -i eth1 -d 192.168.10.12 -m state --state RELATED,ESTABLISHED -m tcp -p tcp --dport 1024:65535 -j ACCEPT
-A FORWARD -o eth1 -s 192.168.10.12 -m state --state RELATED,ESTABLISHED -m tcp -p tcp --sport 1024:65535 -j ACCEPT
#
#
#
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#
*nat
#-A PREROUTING -m tcp -p tcp -i eth1 --dport 3389 -j DNAT --to-destination 192.168.10.77:3389
-A PREROUTING -m tcp -p tcp -i eth1 --dport 21 -j DNAT --to-destination 192.168.10.12
#
-A POSTROUTING -o eth1 -s 192.168.10.0/24 -j SNAT --to-source *.*.*.90
-A POSTROUTING -o eth1 -s 172.16.99.0/28 -j SNAT --to-source *.*.*.90
-A POSTROUTING -s 192.168.10.12 -o eth1 -m tcp -p tcp -m multiport --sports 20,21 -j SNAT --to-source *.*.*.90
#
#
COMMIT

В чем костыль найти не могу...

Ответ на: комментарий от uspen

Спасибо кЭп . Так как поиском я пользовался на google и на этом форуме здесь же выдает что должны быть примерно такие правила правила

iptables -t nat -A PREROUTING -p tcp -i $INET_IFACE -d $INET_IP --dport 21 -j DNAT --to-destination 192.168.0.3 
---
iptables -A FORWARD -i $INET_IFACE -d 192.168.0.3 -p tcp -m multiport --dports 20,21 -j ACCEPT
iptables -A FORWARD -o $INET_IFACE -s 192.168.0.3 -p tcp -m multiport --sports 20,21 -j ACCEPT 
---
iptables -t nat -A POSTROUTING -s 192.168.0.3 -o $INET_IFACE -p tcp -m multiport --sports 20,21 -j SNAT --to-source $INET_IP
---
iptables -A FORWARD -i $INET_IFACE -d 192.168.0.3 -m state --state RELATED,ESTABLISHED -p tcp --dport 1024:65535 -j ACCEPT
iptables -A FORWARD -o $INET_IFACE -s 192.168.0.3 -m state --state RELATED,ESTABLISHED -p tcp --sport 1024:65535 -j ACCEPT
Вот по-этому примеру я и делал у себе взятый он с этого форума... Потому как было много похожих тем.

vip71541 ()
Ответ на: комментарий от Pinkbyte

Обязательно еще при настройке шлюза без них народ бы несмог ходить по фтпишкам через браузер

lsmod |grep ftp
nf_nat_ftp              1705  0
nf_conntrack_ftp        8223  1 nf_nat_ftp
nf_nat                 15054  3 ipt_MASQUERADE,nf_nat_ftp,iptable_nat
nf_conntrack           56162  8 ipt_MASQUERADE,xt_state,nf_nat_ftp,nf_conntrack_ftp,iptable_nat,nf_nat,nf_conntrack_ipv4,xt_conntrack

vip71541 ()
Ответ на: комментарий от vip71541

кто будет делать DNAT для «пассивных» портов, а? дядя петя? они у тебя хоть обозначены вручную в конфиге?

uspen ★★★★★ ()

а DNAT 20-го порта , наверно тоже надо делать ?

anonymous ()
Ответ на: комментарий от uspen

conntrack за этим следит.. только надо добавить

iptables -t nat -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Tok ★★ ()
Ответ на: комментарий от Tok

Tok как в таблице NAT можно прописать цепочку FORWARD если там есть всего лишь три цепочки может быть:DNAT SNAT MASQUERADE если верить iptables-tutorial 1.1.19.

uspen Для пассивный портов создаю вот такое правило но при перезагрузке iptables ругается

-A PREROUTING -m tcp -p tcp -i eth1 --dport 1024:65535 -j DNAT --to-destination 192.168.10.12
И как их можно обозначить вручную если у меня ftp стоит на сервере Win2003R2 Stand на IIS 6.0

vip71541 ()
Ответ на: комментарий от vip71541

Пакет проходит не только через таблица NAT ... изучаем картинко DNAT SNAT MASQUERADE - это действия над пакетом в таблице NAT а не сами таблици\цепочки

Tok ★★ ()
Ответ на: комментарий от vip71541

Проще снести все твои правила и настроить заново с нуля.... посколько перемудрил ты там сильно ...

Tok ★★ ()
Ответ на: комментарий от Tok

Хорошо снес я все правила касающейся фтп. Начал с начал первый делом я делаю DNAT c вненего айпи на внутрений айпи сервака

*nat
-A PREROUTING -i eth1 -p tcp --dport 21 -j DNAT --to-destination 192.168.10.12
дальше разрешаю установку вторичного подключения то есть
-A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
это правило у меня стоит 10 строкой в моем первом сообщении
Далеее разрешаю форвард с внешнего интекрф(eth1) 21 порта
-A FORWARD -i eth1 -m tcp -p tcp --dport21 -m state --state NEW -j ACCEPT
И под конец делаю SNAT для внутр.айпи на внешний
-A POSTROUTING -s 192.168.10.12 -o eth1 -m state --state ESTABLISHED,RELATED -j SNAT --to-source *.*.*.*(белый адрес)
Ход мысли правильный...

vip71541 ()
Ответ на: комментарий от vip71541

попробуй разрешить все пакеты от ftp-helper, гугли по критерию helper в iptables... Как-то так:

iptables -A FORWARD -m helper --helper ftp -j ACCEPT

Pinkbyte ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.