Firewall, HTB podział pasma - GOTOWIEC

Sławomir Kawała slwkk w alternatywa.net
Śro, 7 Wrz 2005, 23:55:42 CEST


Dnia Wed, 7 Sep 2005 18:56:39 +0200
Jacek Rzęsista <jasio w jcentrum.net> napisal(a||e)s:

> Dzięki za poświęcenie czasu na moje wypociny :) 

No problem.

> > 1. Wartosci zmiennej MASQ_HOSTS oddzielone 3 spacjami, po co? Jedna
> > spacja styka.
> Spróbuj otworzyć ten plik pod edytorem konsolowym - np. joe - od razu
> będziesz  wiedział czemu 3 spacje ;) A tak na poważnie - tylko
> dlatego, żeby ładnie i  przejrzyście wyglądało. No i oczywiście jedna
> spacja styka :)

Do tych spacji przyczepilem sie w sumie od tak... na dzialanie skryptu
to nijak nie wplywa ... czy 1, 3 czy 30 i tak bedzie dzialac - kwestia
estetyki (ja jestem generalnie minimalista).

> co do ilości połączeń - to defaultowe 25 połączeń wystarcza do
> normalnej pracy  - www, ftp, poczta, komunikatory, jakieś radio
> internetowe, skype, powiedzmy  gtk-gnutella ;) Natomiast moim celem
> było "wyrżnięcie" wszelkich  połączeniożernych programów p2p które
> biednego DSL-a potrafią położyć .... 

Racja dla ww. 25 nawiazanych rownoczesnie polaczen wystarczy...
napisales, ze skrypt sprawdza sie w kilku mniejszych i wiekszych
sieciach stad moje zdziwienie z ta iloscia i wycinaniem p2p. Chociaz
przyznam, ze sam mam mala siec na ~40 komputerow z czego gora 20 jest
jednoczesnie online i nie wycinam p2p, ludzie maja mozliwosc nawiazania
150 polaczen i siec dziala ok - kwestia dobrego zarzadzania pasmem na
wyjsciu (siec=>swiat - wiadomo maly upstream).

> > 3. Rzeczy w stylu:
(...)
> > 4. Ladowanie imq jw. sprawdzanie czy istnieje modul,
(...)
> Racja, ale ..... skrypty są pisane pod PLD - te moduły są domyślnie w 
> drystrybucyjnym kernelu, a ewentualne ponowne ich załadowanie nie
> powoduje  żadnego błędu przecież - więc powiedzmy, że przez lenistwo i
> brak czasu  wygląda to jak wygląda. 

Oki - tylko zauwaz, ze ktos mogl wlasnego kernela wrzucic, sam
kompilowal iptables etc :)

> Może ktoś to poprawi i rozwinie
> się jakiś  projekcik ;)

Coz, hax00rem od basha nie jestem, naklepalem takie cos:

http://slwkk.alternatywa.net/mod_load

chyba sie nigdzie nie walnalem... (testowalem u siebie pobieznie). Moze
ktos to umie lepiej zrobic (1szy regex niedoskonaly - wiem).

btw, sprawdza tylko mody w jajku - mozna dorzucic sprawdzanie modow
iptables (*.so w katalogu iptables).

> > 7. Zadeklarowalbys na poczatku jakie moduly beda globalnie potrzebne
> > w calym fw, sprawdzil ich istnienie i ewentualnie uniemozliwil
> > wykonanie skryptu... z wykonania kawalka skryptu u kogos obcego na
> > zdalnej maszynce moga wyniknac spore klopoty.
> Co do modułów - fakt, przynajmniej w opisie powinno się znaleźć ..... 
> Natomiast w założeniu skrypty miały pracować i pracuja na maszynach z
> PLD (Ac  - uściślając ;) ).

jw. - +z defaultowym distrowym kernelem

> A co złego w module limit ? Dla mnie działa, a wedle starej zasady
> elektronika  - jak cos działa, nei ruszaj bo zepsujesz :). A tak na
> poważnie - mógłbys cos  szerzej napisać w czym dstlimi/hashlimit jest
> lepszy od limit w tym  zastosowaniu ?

dstlimit/hashlimit to rozwiazania dedykowane... modul limit OIDP byl
tworzony do limitowania ilosci logow... ok - teraz dziala tez z
pakietami... co zyskujemy uzywajac dstlimit/hashlimit... mniejsza ilosc
regul fw w przypadku ograniczania ilosci pkt/s od hostow... np regula:

iptables -t filter -I FORWARD -i int_lan -o int_wan -p tcp -m hashlimit
--hashlimit-mode dstip --hashlimit 200/s --hashlimit-name bla -j ACCEPT

akceptuje 200 pkt tcp/s z kazdego ip wchodzacego int_lan i wychodzacego
int_wan ... lepsza (zazwyczaj...) 1 regula niz X

btw, to samo sie tyczy connlimit, a wiec w Twoich skryptach mozesz tez
sobie darowac "-s kazdy_ipek" tylko zaprojektowac jak w ww. przykladzie

Dstlimit/hashlimit ma wiecej opcji niz limit: iptables -m
dstlimit/hashlimit --help or
http://www.netfilter.org/patch-o-matic/pom-submitted.html

No na poziomie kodu Ci nie zanalizuje przewagi jednego nad drugim bo na
tyle sie nie znam.

> > 9. Limitowanie icmp echo request 1/s to chyba juz lekka paranoja...
> > imo za malo.
> Czemu ? Wystarczy, zeby było widać, że host żyje i odpowiada ......
> zresztą w  takim ustawieniu nie jestem "osamotniony" - wzorowałem się
> na przykładach z  netu, grup dyskusyjnych itd.

Np masz skrypty monitorujace co n-minut czy serwer zyje przez icmp...
ktokolwiek (lub cokolwiek, bo niektore serwisy tez sprawdzaja przez
icmp) teraz sprobuje 'pingnac' takiego hosta nie dostanie odpowiedzi.
5/s to imo optymalna wartosc - 5pps dla kernela/pc-ta/ to jest tyle co
i nic...

> 
> > 10. Markowanie pakietow pod htb w stylu ack, syn jakies tam 53 udp
> > itp imo lepiej globalnie zastapic markowaniem pakietow powiedzmy do
> > 100 bajtow
> Specjalnie zrobiłem tak a nie inaczej - programy p2p wysyłają często
> dużo  malutkich pakietów z danymi - jeżeli by zrobić tylko takie
> ogólne  ograniczenie - takie pakiety łapałyby się na to znakowanie - i
> potem  leciałyby do kolejki priorytetowej ...... A one mają trafić do
> kolejki o  najmniejszym priorytecie i o niepełnym wykorzystaniu łącza.

Zgadza sie ... na pewno zlapia sie jakies p2p pakiety do 100 bajtow
(choc nie u Ciebie akurat bo wycinasz p2p), aczkolwiek ja zauwazylem u
siebie, ze czym bardziej rozbudowany skrypt do QoS tym bardziej ociezale
i mniej wydajnie to dziala .. dlatego swoj pisalem maksymalnie prosty z
jak najmniejsza iloscia regul, na razie sprawdza sie w miare ok -
niedlugo zamierzam zainteresowac sie hfsc.

> > 12. Po co w tabeli mangle dawac cokolwiek z -j ACCEPT, skoro nigdzie
(...)
> A na wyjściu nie  będzie to dokładne - bo ruch z proxy będzie leciał z
> IP serwera a nie hosta.  A MARK jak pewnie zauważyłeś - unikam :)

Bedzie jesli dodasz te druga regula liczaca ruch do proxy... wtedy mark
ma przewage nad accept bo mozesz 2 reguly (i wiecej) zaznaczyc jednym
'markiem'. Generalnie rzecz rozbija sie tu o idee... wolisz dawac
ACCEPT, choc i tak te pakiety sa defaultowo akceptowane, ja wole MARK ;]

> lstat-a też nie jest ono  potrzebne ;) 

w ogole btw lepiej poznac rrdtool i skrobnac swoje skrypty niz opierac
sie na 'kombajnie' (kombajn jest nadmiarowy przez co wynikaja problemy -
bugi w sofcie.. wide ostatni, gdzie mozna bylo czytac all pliki z
serwera z uprawnieniami usera, na ktorym dzialal lstat)

> Założyłem, że w sieci lokalnej nie ma złośliwych crackerów którzy
> czyhają na  mój biedny serwer :) Ale można tu oczywiście zastosować
> reguły z zewnętrznego  interfejsu.

Zle zalozenie... :)

> 
> > To samo sie tyczy:
> >
> > $ipt -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
> > $ipt -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j
> > ACCEPT $ipt -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j
> > ACCEPT
> Czemu ? To pozwala na kontynuację połączeń już nawiązanych i
> "powiązanych" -  jak np. ftp ....

Zbyt ogolne... nie precyzujesz interfejsow, skad dokad, -p all odpowiada
calemu /etc/protocols gdzie w znacznej wiekszosci wystarczy tcp/udp/icmp

jakis script kiddie wbija Ci sie na router, zakladamy, ze nie ma
roota... nawiazuje sobie polaczenie ssh z jakims przejetym serwerem,
gdzie ma swoja 'baze'... binduje Ci socks na >1024 porcie i teraz z
'bazy' moze sie polaczyc z Twoim routerem na porcie gdzie zabindowal
socks i wykorzystac Twoj router jako proxy dla roznych uslug. Tym samym
staje sie (prawie) anonimowy. Gdybys zrobil restrykcyjniejsze,
szczegolowsze reguly z routera nie moznaby sie laczyc na 'baze', nic
poza okreslonymi uslugami na routerze nie byloby dostepne z zewnatrz
itd.

> 
> > 14. Ruch wychodzacy z serwera zaokraglilbym do kilku hostow przy
> > state NEW
> Kwestia polityki - ale jeżeli na serwerze masz serwer poczty, www, ftp
> - to  nie możesz ograniczać tylko do kilku hostów ......

Nie uznaje poczty, www, ftp na pc, ktory robi za router... router ma
robic za router + fw (imo), w ogole nie uznaje www, ftp, poczty na
Linuksie...wole do tego FreeBSD.

> > Generalnie widac, ze to skrypty robione pod Twoja siec i wedle
> > jakichs tam upodoban... brak w nich uniwersalizmu i mnogosci wyboru
> > miedzy roznymi rozwiazaniami ... (co jest zrozumiale bo pisales pod
> > siebie w sumie).
> Dokładnie - dlatego publikując te skrypty mam nadzieję, że nastąpi ich
> rozwój :)

IMO robienie czegos uniwersalnego to straszna robota... kazdy fw
powinien byc dopasowany do konkretnej sieci. Oczywiscie do pewnego
stopnia da sie napisac uniwersalnego fw, ale to by musial byc dosc
skomplikowany i duzy projekt, praktycznie pisany od 0 z mysla o
uniwersalnosci.

> A na koniec dołączam jfirewall po lekkim tuningu na podstawie Twoich
> uwag :)

Zerkne jeszcze jutro za dnia, ten connlimit mozesz poprawic o ile Ci nie
zalezy na listowaniu kto limity przekracza - np. ja wole mniejsza ilosc
regul.

-- 
pozdr. Sławomir Kawała
JID: slwkk [at] alternatywa [dot] net
GSM: (0)601-398-348



Więcej informacji o liście dyskusyjnej pld-users-pl