Strona 1 z 1

blokada portów w iptables

: 23 lipca 2010, 19:56
autor: montie
Witam.
Mam pytanie i zarazem potrzebuje coś takiego zrobić, jest ruter z Debianem, jest serwer i usługa, która używa portów tcp i udp, chcę zrobić przekierowanie portów z interfejsu WAN na Linuksie na ip wewnętrzne (do serwera usługą) z tym że domyślnie dla wszystkich z zewnątrz zablokowany jest dostęp dla tych dwóch portów i potem dostęp tylko i wyłącznie dla jednego adresu ip znajdującego się w internecie.

Robię coś takiego (zablokowanie portu dla wszystkich):

Kod: Zaznacz cały

/sbin/iptables -A INPUT -p tcp -s 0/0 --dport 1433 -j DROP
/sbin/iptables -A INPUT -p udp -s 0/0 --dport 1434 -j DROP
Potem dostęp z tych portów dla konkretnego ip:

Kod: Zaznacz cały

/sbin/iptables -A INPUT -p tcp -s 123.123.123.123/32 --dport 1433 -j ACCEPT
/sbin/iptables -A INPUT -p udp -s 123.123.123.123/32 --dport 1434 -j ACCEPT
i przekierowanie już portu:

Kod: Zaznacz cały

/sbin/iptables -t nat -A PREROUTING -p tcp -d ip_wan --dport 1433 -j DNAT --to 10.0.0.100:1433
/sbin/iptables -t nat -A PREROUTING -p udp -d ip_wan --dport 1434 -j DNAT --to 10.0.0.100:1434
I w logach mam, że ktoś chce się dostać do tej usługi (log usługi na serwerze wewnętrznym z ip z internetu jakieś).

Co źle robię? Czy wpis z ,,FORWARD'' też musi być? Może ktoś zaproponuje inną regułę?

: 23 lipca 2010, 20:30
autor: grzesiek
Maskaradę masz? Przetestuj to tcpdump i pokaż, jak to jest, że dochodzi ale nie odpowiada.

: 23 lipca 2010, 20:33
autor: montie
Maska jak najbardziej jest, ruch wychodzący z komputera prywatnego jest, przekierowanie portu np 80 na routerku do maszyny prywatnej działa bez problemu, chodzi mi o zablokowanie jakiegos portu dla wszystkich ktory jest przekierowany do maszyny prywatnej, potem odblokowanie tego tylko dla konkretnego ip

: 23 lipca 2010, 20:39
autor: grzesiek
montie pisze:potem odblokowanie tego tylko dla konkretnego ip
tego za bardzo nie rozumiem :)

: 23 lipca 2010, 20:42
autor: montie
Potem chcę odblokować to przekierowanie portu (które wcześniej jest zablokowane dla wszystkich z internetu) tylko dla tego konkretnego adresu ip w internecie.

: 23 lipca 2010, 20:47
autor: grzesiek
Może być tak

Kod: Zaznacz cały

/sbin/iptables -A INPUT -p tcp -s ! 194.167.159.52 --dport 1433 -j DROP
zamiast tego

Kod: Zaznacz cały

/sbin/iptables -A INPUT -p tcp -s 0/0 --dport 1433 -j DROP
i analogicznie z UDP

: 23 lipca 2010, 20:52
autor: montie
No tak właśnie myślałem że to można z ! zrobić, nasuwa mi się pytanie a gdybym chciał dać dwóm ip w internecie dostęp do tych portów? Czy to co wcześniej napisałem jest złe?

: 23 lipca 2010, 21:10
autor: grzesiek
Nie wiem dlaczego blokujesz wybrane, powinieneś wszystko blokować a przepuszczać tylko wybrane - czyli na odwrót. Wtedy jakby przyszło robić to dla kilku adresów to tworzyłbyś oddzielne regułki ale takie, które akceptują. Poza tym dobrze byłoby ograniczyć się tylko do pakietów z flagą SYN - czyli stan '--state state NEW', bo zapewne ruch nawiązany - stan ESTABLISHED i tak przepuszczasz.
Oczywiście nie wie jak wygląda Twoja zapora wiec co du dużo gadać :)