Következő Előző Tartalom

11. Tanácsok a csomagszűrés megtervezéséhez

Általános bölcsesség a számítógépes biztonságban, hogy mindent le kell zárni, és ezután egyesével megnyitni azokat a lyukakat, melyeket szükségesnek tartunk. Ezt általában úgy jellemzik, hogy "minden, amit nem engedek meg kifejezetten, az tiltva van". Ajánlom ezt a megközelítést, ha a biztonság az alapvető célod.

Ne futtass olyan szolgáltatást, amit nem szükséges futtatnod, vagy ha úgy gondolod, akadályozd meg hogy hozzáférjenek.

Ha tűzfalat építesz, úgy kezdd, hogy ne fusson rajta semmi, és minden forgalmat tiltson ki. Ezután egyesével add hozzá a szolgáltatásokat és engedélyezd azokat a csomagokat, amelyek ezt igénybe veszik.

A fokozottabb biztonság érdekében ajánlom, hogy kombináld a tcp-wrappereket (a csomagszűrőhöz való kapcsolódásra), proxykat (a csomagszűrőn áthaladó forgalomra), a route ellenőrzést és a csomagszűrést. A route ellenőrzés abból áll, hogy a nem helyes interfészen keresztül érkező csomagokat eldobod. Például, ha belső hálózatod címei a 10.1.1.0/24 tartományból vannak és ilyen címről érkezik csomag a külső interfészedre, a csomagot szűrd ki. Ez egy interfészre (példánkban ppp0-ra) a következőképp lehetséges:

# echo 1 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
#

Vagy az összes jelenlegi és lehetséges jövőbeli interfészedre valahogy így:

# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
#     echo 1 > $f
# done
# 

A Debian ezt defaultból megoldja, ha lehetséges. Ha asszimmetrikus routolást használsz, le kell majd tiltani ezt a szűrést ezeken az interfészeken.

A loggolás hasznos dolog ha a tűzfal nem működik. De egy termelő és működő tűzfalnál ezt mindig kombináld a "limit" illeszkedésekkel, hogy megvédd magad logfájljaid teleszemetelésétől.

Melegen ajánlom a kapcsolatkövetést (connection tracking) a biztonságra törekvő rendszereknél: ez bemutat majd néhány érdekességet, ahogy minden kapcsolatot lekövet, de igen hasznos a hálózatodhoz való hozzáférések kontrollálására. Ha a kerneled magától nem töltené be és nincs is a kernelbe szorosan beleépítve, szükséged lehet az "ip_conntrack.o" modul betöltésére. Ha akkurátusan szeretnéd lekövetni a komplex protokollokat, szükséged lesz a megfelelő segítő modulok, például az "ip_conntrack_ftp.o" betöltésére.

# iptables -N no-conns-from-ppp0
# iptables -A no-conns-from-ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A no-conns-from-ppp0 -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A no-conns-from-ppp0 -i ppp0 -m limit -j LOG --log-prefix "Bad packet from ppp0:"
# iptables -A no-conns-from-ppp0 -i ! ppp0 -m limit -j LOG --log-prefix "Bad packet not from ppp0:"
# iptables -A no-conns-from-ppp0 -j DROP

# iptables -A INPUT -j no-conns-from-ppp0
# iptables -A FORWARD -j no-conns-from-ppp0

Egy igazán jó tűzfal építése túlmutat ennek a HOWTO-nak a keretein, de a tanácsom az, hogy "mindig légy minimalista". Nézd meg a Security HOWTO-t ha többet akarsz megtudni arról, hogyan tesztelheted és próbálhatod linuxos tűzfaladat.


Következő Előző Tartalom