Ég var að flakka um Hugann, lesa eina og eina grein, bara af rælni, og datt inn á að lesa um eldvegginn hans félaga JR.
Leiddist út í að renna glyrnunum yfir verkið sjálft, en nokkrir punktar í því stingu mig dálítið í augun.
Í fyrsta lagi langar mig til að efast um þá stefnu að loka á öryggisholur á netleveli, þegar rétta leiðin (að mínu mati)
er að loka öryggisholunum sjálfum, frekar en að hindra að nokkur komist inn að þeim…
Í öðru lagi, þá vantar path að iptables binary'inu, það er ekki víst að $PATH breytan sé rétt stillt þegar scriptan er
keyrð, gott practise að gefa upp fullt path.
Í þriðja lagi…reglurnar í scriptinu sjálfu. :-)
a)
> # Notum ekki “ICMP redirect móttöku”. Hægt er að nota slíkt til að
> # breyta “routing töflunni”, ekki sniðugt.
> /bin/echo “0” > /proc/sys/net/ipv4/conf/all/accept_redirects
> /bin/echo “0” > /proc/sys/net/ipv4/conf/$IFACE/accept_redirects
Þarna finnst mér hrópandi vitleysa vera í gangi…ICMP redirects eru notuð til að stýra pökkum rétta leið ef þeir, af
einhverjum ástæðum, eru ekki að fara rétt. Til dæmis ef pakki er að fara frá Landssímanum til Íslandssíma, ætlar yfir
RIX, RIX er bilaður, fær ICMP redirect á að fara á útlandasambönd í staðinn, fer þangað yfir, allir sáttir…en að loka
á ICMP redirect finnst mér silly.
b)
> #Port forwarding á identd.
> iptables -t nat -A PREROUTING -i $IFACE -p tcp –destination-port 113 -j DNAT –to `echo $LOCALNET | sed
's/.0$/.1/g'`-`echo $LOCALNET | sed ‘s/.0$/.253/g’`
Þetta er svosem fín regla. Hún forwardar ident…en heddnah…ykkur hefur ekki hugkvæmt að sumir séu kannski með net
hvers network addressar endar *ekki* á 0, og síðasta talan er ekki 253? T.d. ef ég ákvæði að nota 192.168.24.128/29 á
mitt innra net. Þá væri netið 192.168.24.128, maskinn 255.255.255.248 og síðasta usable talan í netinu 192.168.24.134.
Þessi regla myndi verða gagnslaus. Það er hvergi varað við þessu í commentum.
c)
> #Hjálpar að localhost megi tengjast :)
>
> iptables -A FORWARD -s 127.0.0.1/255.0.0.0 -j ACCEPT
> iptables -A FORWARD -d 127.0.0.1/255.0.0.0 -j ACCEPT
> iptables -A OUTPUT -s 127.0.0.1/255.0.0.0 -j ACCEPT
Fínt, já, auðvitað á localhost að mega tengjast…en af hverju að setja þá reglu svona seint í scriptip? Þetta er án
efa sú regla sem mest reynir á, IP tables notar first match wins, setja þessa reglu efst, svo kjarninn þurfi ekki að
fara í gegnum allan reglulistann í hvert sinn sem localhost vill tala við sjálfan sig.
Svona, sem sidenote, þá er þetta ekki localhost, heldur localnet, þegar maskinn er svona. Þetta er host address, og svo
maski…nokkuð skrýtið, rétt syntax væri network address, svo maski…en, já, skiptir svosem engu máli, nema að það
eyðir nokkrum CPU tikkum.
d)
> ## FRAGMENTS
> # Fragments eru slæmar…banna og logga!
> iptables -A INPUT -i $IFACE -f -j LOG –log-prefix “IPTABLES FRAGMENTS: ”
> iptables -A INPUT -i $IFACE -f -j DROP
Öhmm…hvaðan hefur þú það, að fragments séu slæmar? Mig grunar að vandamálið sé skortur á skilningi á því hvað
fragments eru. Fragments eru pakkar sem hafa verið bútaðir niður til að sýna að MTU (Maximum Transmission Unit), eða
hámarks pakkastærð, sendingarinnar er of stórt fyrir einhvern legg leiðarinnar. Ef ég myndi t.d. senda pakka með MTU
1500 frá tölvu 1 til tölvu 2, og pakkinn myndi fara í gegnum routera A, B og C á leiðinni:
Tölva 1 (MTU 1500) -> (MTU 1500) Router A (MTU 1500) -> (MTU 1500) Router B (MTU 1300) -> (MTU 1300) Router C (MTU 1500)
-> Tölva 2.
Eins og sjá má er MTU alls staðar 1500, nema á milli routeranna B og C. Þetta þýðir að pakkar sem fara á milli tölvu 1
og 2 komast ekki á milli, séu þeir stærri en 1300. Bömmer. TCP/IP bjargar þessu með því að fragmenta pakkana á
leiðinni, fragments berast á leiðarenda, leiðarendinn sendir ICMP_need_fragment til baka, sendandi minnkar MTU á
pökkunum sínum þangað til samskiptin virka. Æði. Allir ánægðir.
Ef annar hvor aðilinn lokar á fragments og/eða ICMP_need_fragment, hvað haldið þið að gerist? Mjújú, bara mjög litlar
sendingar komast á milli, t.d. vefsíðufyrirspurnir berast til servers, en hann getur ekki svarað með síðunum sem beðið
er um…svoleiðis freaky vandamál. Í besta falli veldur þetta pakkatapi og töfum.
Ég vil taka það skýrt fram, að svona þrengingar koma bandvídd ekkert við, það er allt annað dæmi.
e)
> #Þessar línur athuga hvort tengingarnar eigi erindi hingað inn
> #Ef þú villt líka loka á ICMP þá geturðu sleppt -p færslunum
> iptables -A INPUT -d $STATICIP -p tcp -m state –state ESTABLISHED,RELATED -j ACCEPT
> iptables -A INPUT -d $STATICIP -p udp -m state –state ESTABLISHED,RELATED -j ACCEPT
> iptables -A FORWARD -m state –state NEW -i ! $IFACE -j ACCEPT
Þessar línur leyfa TCP og UDP sem tilheyrir tengingum í gangi…fínt. En það sem fellur ekki undir þessar reglur…því
er hafnað??? Ég leyfi mér að gera athugasemd við það. Traceroute, sem margir kannast við, notar UDP á sérstökum
portum, þetta lokar á það.
Ef notandi scriptsins asnast svo til að álíta það sniðugt að loka á ICMP, eins og commentarnir virðast ýta undir, þá
lokar hann t.d. á ICMP_need_fragment, sem ég minntist á áðan, ICMP unreachable skilaboð, og margt fleira.
Ef maður er staddur bak við eldvegg sem neitar ICMP þýðir það að öll status skilaboð á tengingum manns komast *ekki* til
skila. Ef maður reynir að tengjast við vél á porti sem er ekki actívt (t.d. reynir að tengjast við vefþjón sem er ekki
að svara), þá verður maður að bíða eftir því að tengingin tími út hjá manni sjálfum, því að ICMP
host/network/protocol/port unreachable skilaboðin berast ekki. Einnig tefur þetta fyrir fólki sem ætlar að tengjast við
mann (ef maður hefur t.d. einhverjar þjónustur sjálfur).
Segjum að mig langi til að keyra FTP þjón bak við JR Firewall. Það er alls ekki óvenjulegt að mann langi til að keyra
slíkt til að skiptast á leikjapötchum, kortum eða whatever…
Einhver tengist við FTP'inn. FTP'inn spyr hann um ident. Hann er ekki að keyra ident, svo hann svarar með ICMP
unreachable. Eldveggurinn minn blokkar það. Ég fæ skilaboðin ekki. Ég bíð enn…bara þangað til það tímar út.
Niðurstaða: tengingar við FTP'inn minn taka lágmark 30 sek. Æði, ha?
Jæja, þetta er bara svona, það sem stakk helst í augun við að renna yfir scriptið. Annars er þetta fínt framtak, fínt
að hjálpa fólki að setja þetta upp, og ég vona að ég sé ekki að móðga neinn með þessu smáböggi mínu. :-)
–
Kristó