Az élet nem áll meg... már megint kedvenc témám van terítéken.
Az ok erre az eléggé el nem ítélhető tettemre az, hogy a laptopomon (lásd itt) két interfész van - eth0 és ath0.
A tűzfal szkript viszont csak eth0-ra lett megírva.
Kerestem a megoldást mindenfelé, de csak amolyan "gányolásokat" találtam. Szkripteket, amelyek megkeresik a létező interfészeket és a a tűzfal szkript megfelelő helyére beírják azt. Ez lehet, hogy egy több gépet is kiszolgáló, átjáróként, tűzfalként működő gépnél jó megoldás, de nekem ez nem kell.
Egy gép és csak én használom. Legyen szó akár vezetékes, akár vezetéknélküli csatlakozásról.
Első nekifutásra azt gondoltam, hogy talán van valamilyen megoldás a két interfészre (valami ilyesmi: IFACE_E=eth0, IFACE_A=ath0) és erre változtatni az -i után következő részeket. Ez valójában a szabályok duplázása lett volna a két különböző interészre. Ez nem tetszett.
A man-ban találtam a "+" alkalmazásáról valamit, de ez is csak így írta, hogy pl.: eth+ az az összes eth-val kezdődő interfészre illeszkedik. De nekem eth0 és ath0 van.
Egy kiegészítés:
Az ok erre az eléggé el nem ítélhető tettemre az, hogy a laptopomon (lásd itt) két interfész van - eth0 és ath0.
A tűzfal szkript viszont csak eth0-ra lett megírva.
Kerestem a megoldást mindenfelé, de csak amolyan "gányolásokat" találtam. Szkripteket, amelyek megkeresik a létező interfészeket és a a tűzfal szkript megfelelő helyére beírják azt. Ez lehet, hogy egy több gépet is kiszolgáló, átjáróként, tűzfalként működő gépnél jó megoldás, de nekem ez nem kell.
Egy gép és csak én használom. Legyen szó akár vezetékes, akár vezetéknélküli csatlakozásról.
Első nekifutásra azt gondoltam, hogy talán van valamilyen megoldás a két interfészre (valami ilyesmi: IFACE_E=eth0, IFACE_A=ath0) és erre változtatni az -i után következő részeket. Ez valójában a szabályok duplázása lett volna a két különböző interészre. Ez nem tetszett.
A man-ban találtam a "+" alkalmazásáról valamit, de ez is csak így írta, hogy pl.: eth+ az az összes eth-val kezdődő interfészre illeszkedik. De nekem eth0 és ath0 van.
Egy speciális opció: ha az interfész név után "+"-et teszünk, az valamennyi interfészre illeszkedni fog (függetlenül attól, hogy az interfész fent van-e, vagy sem), melynek a neve a "+" előtti szöveggel kezdődik. Például egy olyan szabályt, mely az összes ppp interfészre illeszkedni fog, az -i ppp+
Az interfész neve egy "!"-vel maga előtt azokra a csomagokra fog illeszkedni, melyek nem az adott interfészre érkeznek vagy nem az adott interfészről távoznak. kapcsolóval használjuk.
Egy kiegészítés:
If the -i parameter is used but no interface is specified, then every interface is affected by the rule.
Tehát, ha jól értem az -i kapcsoló interfész megjelölése nélkül, minden interfészre illeszkedni fog.
Egy példa sor a szkriptből:
iptables -A INPUT -i -m state --state ESTABLISHED,RELATED -j ACCEPT
Persze nem ilyen egyszerű a dolog, mert a tűzfal szkript újraindítása során hibaüzenettel elhal. Hiányolja az interfész meghatározását.
Akkor próbáljuk meg ezt:
iptables -A INPUT -i "" -m state --state ESTABLISHED,RELATED -j ACCEPT
Úgy tűnik, hogy működik(?).
Tehát a szkript most így néz ki:
#!/bin/sh
# Home standalone gép.
# A lánc kiürítése.
iptables -F
###############
# Alap policy #
###############
# Mindent tiltunk, amit külön nem engedélyezünk.
iptables -P INPUT DROP
iptables -P OUTPUT DROP
# FORWARD most nem kell, de lehetőségként itt hagyjuk.
#iptables -P FORWARD DROP
###################
# INPUT szabályok #
###################
# loopback engedélyezése
iptables -A INPUT -i lo -j ACCEPT
# Engedélyezzük befelé, ami tőlünk származik.
iptables -A INPUT -i "" -m state --state ESTABLISHED,RELATED -j ACCEPT
# DHCP
iptables -A INPUT -i "" -p tcp --sport 68 -j ACCEPT
iptables -A INPUT -i "" -p udp --sport 68 -j ACCEPT
# A nem tőlünk származó csomagokat eldobjuk
iptables -A INPUT -i "" -m state --state INVALID -j DROP
# A fragmented csomagok szűrése
iptables -A INPUT -f -i "" -j DROP
# Invalid sync bites csomagok kiszórása.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# ssh engedélyezése - majd ha kell. Most még nem kell.
#iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# A hamis IP címeket kiszűrjük.
iptables -A INPUT -i "" -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i "" -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i "" -s 10.0.0.0/8 -j DROP
# Kiegészítés paranoidoknak (by mavo)
iptables -A INPUT -i "" -s 255.0.0.0/8 -j DROP
iptables -A INPUT -i "" -s 0.0.0.0/8 -j DROP
####################
# OUTPUT szabályok #
####################
# A loopback-en engedélyezzük a forgalmat.
iptables -A OUTPUT -o lo -j ACCEPT
# Egy kis magyarázat a következő sorokhoz, hogy tudjam, melyik port mi.
# 20 port - FTP
# 21 port - FTP
# 22 port - SSH
# 25 port - SMTP
# 53 port - DNS
# 67 port - DHCP
# 80 port - HTTP
# 110 port - POP
# 443 port - HTTPS
# 465 port - SMTPS (Gmail)
# 995 port - POPS (Gmail)
# 1863 port - GAIM (az MSN-hez)
# 36013 port - SKYPE
iptables -A OUTPUT -o "" -p tcp -m multiport --dports 20,21,22,25,53,67,80,110,443,465,995,1863,36013 -j ACCEPT
iptables -A OUTPUT -o "" -p udp -m multiport --dports 20,21,22,25,53,67,443 -j ACCEPT
########
# Ping #
########
# A kifelé menő ping-re szükség lehet.
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
###########
# LOG #
###########
# INPUT Log
iptables -A INPUT -j LOG --log-prefix "INPUT"
# OUTPUT Log
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT"
(Vezetéknélküli módban még nincs kipróbálva)Vajon jó ez?
SP
Kiegészítés 2007 június 27. 11.55
Az -i elhagyható! Lásd mavo hozzászólását.
SP
Utolsó kommentek