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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-07-04 14:55:53

  chmurowski - Użytkownik

chmurowski
Użytkownik
Zarejestrowany: 2011-03-17

iptables blokada wszystkiego poza www

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 DROP

wniosek. 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

 

#2  2011-07-04 15:40:01

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables blokada wszystkiego poza www

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
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2011-07-04 17:44:11

  chmurowski - Użytkownik

chmurowski
Użytkownik
Zarejestrowany: 2011-03-17

Re: iptables blokada wszystkiego poza www

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

 

#4  2011-07-05 09:04:34

  haczyk - Użytkownik

haczyk
Użytkownik
Skąd: Bydgoszcz
Zarejestrowany: 2009-02-28

Re: iptables blokada wszystkiego poza www

[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ż:

Kod:

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

 

#5  2011-07-05 12:09:06

  chmurowski - Użytkownik

chmurowski
Użytkownik
Zarejestrowany: 2011-03-17

Re: iptables blokada wszystkiego poza www

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 :

Kod:

iptables -P FORWARD DROP

nie działa nic (logiczne)
wpisze:

Kod:

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ł:

Kod:

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:

Kod:

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

 

#6  2011-07-05 12:59:10

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: iptables blokada wszystkiego poza www

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:

Kod:

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:

Kod:

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2011-07-08 22:59:17

  chmurowski - Użytkownik

chmurowski
Użytkownik
Zarejestrowany: 2011-03-17

Re: iptables blokada wszystkiego poza www

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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.007 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00056 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.141.29.162' WHERE u.id=1
0.00099 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.141.29.162', 1732404735)
0.00021 SELECT * FROM punbb_online WHERE logged<1732404435
0.00019 SELECT topic_id FROM punbb_posts WHERE id=176940
0.00031 SELECT id FROM punbb_posts WHERE topic_id=19308 ORDER BY posted
0.00038 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.00036 SELECT search_for, replace_with FROM punbb_censoring
0.00080 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.00063 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=19308
Total query time: 0.00457 s