Firewall, HTB podział pasma - GOTOWIEC

Jacek Rzęsista jasio w jcentrum.net
Śro, 7 Wrz 2005, 18:56:39 CEST


Dnia wtorek, 6 września 2005 22:25, Sławomir Kawała napisał:
[CIACH]
> Przeanalizowalem Twoj firewall i mam kilka zastrzezen... nie odbierz
> tego jako ataku, a tylko jako ewentualne rady ...
Dzięki za poświęcenie czasu na moje wypociny :) Wysyłając tego posta na takie 
odpowiedzi przede wszystkim oczekiwałem ;) A poniżej się wytłumaczę z kilku 
rzeczy ;)

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

> 2. connlimit - za mala defaultowa ilosc, powinno byc x2-4 tyle i robisz
> tylko w jedna strone od usera na swiat... zapominasz o wrzuceniu
> connlimit ze swiata do usera.
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ć .... A 
co do conlimit ze świata do usera - racja, przyznaję się bez bicia, 
zapomniałem ;).

> 3. Rzeczy w stylu:
>
> echo -n "Loading modules ..."
> /sbin/modprobe ip_conntrack_ftp
> /sbin/modprobe ip_nat_ftp
> /sbin/modprobe iptable_nat
> echo -n "Done."
>
> raz, ze powinienes sprawdzac czy rzeczywiscie pomyslnie przebiegl proces
> ladowania ich - a dopiero pozniej "Done", dwa powinienes sprawdzic czy w
> ogole istnieja w systemie i czy nie sa juz zaladowane.

> 4. Ladowanie imq jw. sprawdzanie czy istnieje modul, sprawdzanie czy
> rzeczywiscie prawidlowo podnioslo interfejsy, dopiero teraz done.
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. Może ktoś to poprawi i rozwinie się jakiś 
projekcik ;)


> 5. Dlaczego tabela mangle oraz nat nie doczekala sie zerowania licznikow
> na poczatku ? iptables -t nat -Z;iptables -t mangle -Z
Ups, małe niedopatrzenie .... Już poprawiam :)

> 6. $ipt -A FORWARD -o lo -j ACCEPT - regula bez sensu... tu nie wejdzie
> nigdy zaden pakiet ... wszystko co wychodzi z routera idzie na OUTPUT i
> wchodzi INPUTem - http://www.docum.org/docum.org/kptd/
Racja - zostało z moich peirwszych eksperymentów z iptables .... Dawna 
zaszłość .... Już poprawiam ;)

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

> 8. Do limitowania liczby pakietow per czas stworzono dedykowane moduly
> dstlimit/hashlimit (zaleznie od wersji jadra).
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 ?

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

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

> 11. Kurde... connlimit na 25, calkowita blokada p2p.. wspolczuje userom
> takich sieci :P Udostepniasz skrypty publicznie - daj opcje do
> wylaczenia blokady p2p
Eee tam, jakoś działają, ludzie coś tam ściągają ;) A co do opcji wyłączania - 
to tendencja jest taka, że ludzie chcą wiedzieć jak max. przyciąć programy 
p2p ;) Ujmę to tak - skrypt jest na GNU GPL - jeżeli ktoś chce i potrzebuje, 
droga otwarta ;) Model rozwoju jak PLD :)

> 12. Po co w tabeli mangle dawac cokolwiek z -j ACCEPT, skoro nigdzie nic
> tam nie blokujesz? do markowanie uzywa sie -j MARK
>
> Dalej, po co:
>
> $ipt -t mangle -A lstat -i $LOC_IF -s $i -d ! $LOC_IP -j ACCEPT
>
> skoro mozna
>
> $ipt -t mangle -A lstat -o $EXT_IF -s $i -j ACCEPT, ale jeszcze lepiej
> tak jak wyzej pisalem wywalic te accept i zastapic -j MARK
Już się tłumaczę - w tabeli mangle jest stworzony specjalnie łańcuch lstat na 
potrzeby statystyk tworzonych w lstat-cie. Dlatego są takie rozróżnienia i 
uściślenia, żeby zliczać pakiety od konkretnego hosta. 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 :) I do lstat-a też nie jest ono 
potrzebne ;) 

> 13. Takie potraktowanie sprawy to imo przegiecie:
> $ipt -A INPUT -i $LOC_IF -j ACCEPT
> $ipt -A OUTPUT -o $LOC_IF -j ACCEPT
> $ipt -A FORWARD -i $LOC_IF -j ACCEPT
>
> Zbyt ogolnie, zbyt malo restrykcyjnie imo.
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.

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

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

> 15. W zasadzie kierowanie ruchu do IMQ modelowo powinno wygladac tak:
>
> iptables -t mangle -A PREROUTING -i XXX -j IMQ --todev 0
> iptables -t mangle -A POSTROUTING -o XXX -j IMQ --todev 1
Powiem tak - trochę z tym eksperymentowałem i przy takich regułach jak mam w 
skrypcie - najlepiej mi działa mój skrypt qos ....

> Skryptu do qos juz mi sie nie chce analizowac :> Jakby sie wywiazala
> dyskusja to uprzedzam, ze bede dopiero jutro wieczorkiem mogl w niej
> uczestniczyc :P
Będę czekał z niecierpliwością - mam nadzieję, że zaowocuje to dalszym 
rozwojem skryptów - i to już nie tylko przeze mnie :)

> btw... w Twoim skrypcie brak jakiejkolwiek chocby pseudoautoryzacji
> (ip+mac+ipset) userow, moze robisz to na poziomie arp'a ...
Dokładnie - /etc/ethers i STATIC_ARP=YES  w /etc/sysconfig/network.

> 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 :)
A na koniec dołączam jfirewall po lekkim tuningu na podstawie Twoich uwag :)
-- 
Jacek Rzęsista
GG 61213
-------------- następna część ---------
Załącznik, który nie był tekstem został usunięty...
Name: jfirewall
Type: application/x-shellscript
Size: 17157 bytes
Desc: nie znany
Url : /mailman/pipermail/pld-users-pl/attachments/20050907/9d75c3c3/jfirewall-0001.bin


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