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[/quote]
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:Kod:
iptables -P FORWARD DROP iptables -P INPUT DROPwniosek. wszystko co przychodzi i przechodzi przez serwer jest odrzucane.
Chciałem odblokować www, wiec wpisałem też:Kod:
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ż:Kod:
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
[i]// [tt]bbcode[/tt] — ArnVaker[/i]
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
[quote=chmurowski]Witam
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
[/quote]
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
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00067 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.17.79.188' WHERE u.id=1 |
0.00117 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.17.79.188', 1732404731) |
0.00028 | SELECT * FROM punbb_online WHERE logged<1732404431 |
0.00082 | SELECT topic_id FROM punbb_posts WHERE id=176900 |
0.00007 | SELECT id FROM punbb_posts WHERE topic_id=19308 ORDER BY posted |
0.00058 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=19308 AND t.moved_to IS NULL |
0.00009 | SELECT search_for, replace_with FROM punbb_censoring |
0.00123 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=19308 ORDER BY p.id LIMIT 0,25 |
0.00077 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=19308 |
Total query time: 0.00582 s |