Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam
oto topologia :)
10.2.0.2 10.2.0.1
klient ----------------serwer -----------------------INTERNET
192.168.1.109
Klient stoi za maskaradą i ma dostęp do internetu.
cel:
Klient ma mieć dostęp jedynie do http
Co zrobiłem:
Na serwerze postawiłem maskarade po czym na serwerze wpisałem:
iptables -P FORWARD DROP iptables -P INPUT DROP
wniosek. wszystko co przychodzi i przechodzi przez serwer jest odrzucane.
Chciałem odblokować www, wiec wpisałem też:
iptables -A FORWARD --protocol tcp --destination-port 80 -j ACCEPT
#czyli przepuszczać wszystko co przechodzi przez serwer i docelowy port tego czegos to 80 (http)
No i gitarra, tylko jak pakiety wracaja, to nie koniecznie na port 80, tylko różne inne porty, w związku z czym dopisałem też:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#po to, by można było przepuszczać ruch na inne porty związany z połączeniem z portem 80.
I niby wszystko dobrze, niby wszystko sie zapisało, tylko NIE DZIAŁA :(.
Jakiekolwiek sugestie, porady, pomysły podpowiedzi co zrobiłem nie tak mile widziane.
Z góry dzięki i pozdrawiam
chmurowski
// bbcode — ArnVaker
Offline
RTFM:
http://pl.wikibooks.org/wiki/Sieci:Linux/Netfilter/iptables
http://stary.dug.net.pl/texty/Iptables_by_Atom_Zero.pdf
To by było na tyle
;-)
Offline
Dzięki za linki. Na pewno bardzo się przydadzą. Niemniej jednak jeśli ktoś znajdzie chwilkę, by pokazać gdzie popełniam błąd w tym prostym przykładzie, to będę zobowiązany. Kiedy dotrę do domu i sam "rozkminię" temat, to skrobnę dla potomności w tym wątku co i jak, bo mówiąc szczerze sporo szukałem w necie i poki co "ciasny łeb" :).
edit:
Jeśli ktoś jeszcze wstawi mi tu link do manuala, to rozszarpię. Przeglądam to od 4 dni. W tych materiałach jest to, co wszędzie, ale niestety, nie działa.
Milion stron, na których opcje established i related są zaznaczane jako kluczowe i nic! Nie mam pomysłu, chęci...
Pozdrawiam chmurowski
Ostatnio edytowany przez chmurowski (2011-07-05 00:15:12)
Offline
chmurowski napisał(-a):
Witam
tylko jak pakiety wracaja, to nie koniecznie na port 80, tylko różne inne porty, w związku z czym dopisałem też:Kod:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
IIRC: powyższe reguła nie znaczy "wpuść wracające pakiety". Bardziej oznacza "nie zrywaj nawiązanych sesji". Gdybyś blokował po dport/sport to wtedy można by odblokowywać powracający ruch.
chmurowski prawdę mówiąc ciężko coś wywnioskować z tego co napisałeś (podałeś tylko 4 regułki, które są dość ogólne).
Może masz proxy i coś ginie w redirecie portów ?
Może pakiety znikają Ci w pre/postroutingu ?
Sprawdzałeś jakimś snifferem czy zapytania klienta docierają do serwera w ogóle ?
A może po prostu zła kolejność reguł ?
Wklej jak możesz trochę więcej reguł
Offline
Napisałem tylko te 4 regułki, bo to środowisko testowe. Virtualbox i postawiony na nim czysty debian, a drugi komputer to czyste ubuntu z przegladarka. Proxy nie mam, reguły klepałem dokładnie w tej kolejności. Próbowałem też kilku innych wariacji z interface, z portami docelowymi i źródłowymi i nic. Wyglada to tak, że nie ma reguł iptables- http i icmp i ssh i wszystko działa.
Wpisze :
iptables -P FORWARD DROP
nie działa nic (logiczne)
wpisze:
iptables -A FORWARD --protocol tcp --destination-port 80 -j ACCEPT
nadal nic (no ok, nie może otrzymać odpowiedzi, bo kazałem przepuszczać ruch tylko na 80 port, a wraca na różne porty)
wiec dodaje regułe, by nie zrywał tych, które już nawiązał:
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Tylko, że nie jestem przekonany, czy druga reguła doprowadziła do nawiązania połączenia, ono sobie wyszło, poszło do serwera http, chce wrócić, ale może tylko na port 80... czyli wychodzi, że nie jest nawiązane. I pewnie dlatego reguła 3 nie działa.
I teraz potrzebuję reguły, która przepuści ruch http wracający z serwera do mojej przeglądarki. Czyli np interfejsem ethx protokół tcp na portach wysokich (nie ma problemu, zeby to napisać). Tylko, że tym samym wpuszczam masę rzeczy, a chciałem ograniczyć się do http :(.
Może coś takiego:
iptables -A FORWARD-p tcp -i eth0 --dport 80 --sport 1024:65535 -m state --state NEW -j ACCEPT
Sprawdzę w domu po 18 czy to działa.
Offline
Zastanaiwm się tylko, czebu się czepileś protokołu tcp, jak pilany płotu, na stronach www protokół udp też występuje.
Wiec forwardujesz pakiety dla gościa tylko z portów typowych dla www, np:
iptables -A FORWARD -d 192.168.0.15 -p tcp --sport 80-m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -d 192.168.0.15 -p udp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 192.168.0.15 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -s 192.168.0.15 -p udp --dport 80 -j ACCEPT
i dla https:
iptables -A FORWARD -d 192.168.0.15 -p tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 192.168.0.15 -p tcp --dport 443 -j ACCEPT
resztę blokujesz, w drugą stronę maskarada i po sprawie.
Wtedy działa internet, działa też Youtube, i jakieś inne strumienie audio/video używające udp, i to wszystko.
192.168.0.15 - to przykladowy IP pacjenta.
A jak chcesz lepszzej fitracji, to szukaj przepisu na Squida lub Dansguardiana, to są odpowiednie narzędzia.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2011-07-05 13:04:18)
Offline
Dzieki serdeczne, sorry ze tak późno sie odzywam, ale wcześniej nie było okazji. Problem leżał w tym, ze uparłem się, ze www to tylko http, a jak słusznie zauważył Jacealex to również udp na 53 porcie. Nie wierzyłem mu jednak i dopiero po przejrzeniu logów z prób łączenia się ze stroną googla okazało się, że ma rację. Reszta poszła jak z płatka.
Offline