Firewall, HTB podział pasma - GOTOWIEC

Sławomir Kawała slwkk w alternatywa.net
Wto, 6 Wrz 2005, 22:25:05 CEST


Dnia Tue, 6 Sep 2005 21:11:54 +0200
Jacek Rzęsista <jasio w jcentrum.net> napisal(a||e)s:

> Ponieważ ten temat jest wiecznie żywy, również tu na liście, a kiedyś 
> "publikowałem"  jakąś wersję moich skryptów i spotkało się to z 
> zainteresowaniem -  publikuję aktualnie przeze mnie używaną w kilku
> sieciach  mniejszych i większych. 
(...)

Przeanalizowalem Twoj firewall i mam kilka zastrzezen... nie odbierz
tego jako ataku, a tylko jako ewentualne rady ...

1. Wartosci zmiennej MASQ_HOSTS oddzielone 3 spacjami, po co? 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.

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.

5. Dlaczego tabela mangle oraz nat nie doczekala sie zerowania licznikow
na poczatku ? iptables -t nat -Z;iptables -t mangle -Z

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/

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.

8. Do limitowania liczby pakietow per czas stworzono dedykowane moduly
dstlimit/hashlimit (zaleznie od wersji jadra).

9. Limitowanie icmp echo request 1/s to chyba juz lekka paranoja... imo
za malo.

10. Markowanie pakietow pod htb w stylu ack, syn jakies tam 53 udp itp
imo lepiej globalnie zastapic markowaniem pakietow powiedzmy do 100
bajtow

11. Kurde... connlimit na 25, calkowita blokada p2p.. wspolczuje userom
takich sieci :P Udostepniasz skrypty publicznie - daj opcje do
wylaczenia blokady p2p

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

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.

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

14. Ruch wychodzacy z serwera zaokraglilbym do kilku hostow przy state
NEW

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

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

btw... w Twoim skrypcie brak jakiejkolwiek chocby pseudoautoryzacji
(ip+mac+ipset) userow, moze robisz to na poziomie arp'a ...

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

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