Első lépésként meg kell határozni, hogy milyen gépre akarjuk a tűzfal szkriptet készíteni, hiszen ez döntően befolyásolja az általunk megtervezendő szabályok "logikai" felépítését, tartalmát. Én egy egyedülálló (standalone) géppel kezdem. Elképzelhető, hogy a későbbiekben, egy kis fejlesztés után két gép lesz itthon egy wireless/vagy vezetékes routerrel megosztva az internetet. Bár ez, ahogy most átgondolom a gépek saját tűzfala szempontjából nem fontos tényező.
Akkor vágjunk bele!
Ahhoz, hogy a szkriptünk egyáltalán működjön rögtön az elején ez a sor kell:
#!/bin/bash
A "sha-bang" a szkript elején közli a rendszerrel, hogy ez egy parancsokat tartalmazó file amelyeket a megadott "parancs értelmező" fog futtatni. A #! valójában egy speciális jelölés ami meghatározza a file típusát, vagy ebben az esetben azt, hogy végrehajtható shell script-ről van szó.Gyakorlatilag a #! az első dolog, amit a parancs értelmező látni fog. Mivel ez a sor #-el kezdődik, a parancsértelmező kommentnek fogja tekinteni a szkript végrehajtása során, de ekkorra már megtette a dolgát: meghívta a parancs értelmezőt.
A "sha-bang"-ot követi az úgynevezett "path name" amely meghatározza a parancs értelmező program helyét, amely végre fogja hajtani a szkriptben lévő parancssorokat az elejétől kezdve. Ha nem tudjuk a bash program helyét, akkor megkereshetjük ezzel a paranccsal:
speter:~$ which bash
/bin/bash
A szkriptben lehetőségünk van kommentek elhelyezésére, amelyek segítik a különböző utasítások megértését, vagy esetleg egy később alkalmazni tervezett sort lehet ideiglenesen inaktívvá tenni, így a szkript felhasználójának döntésére bízva az adott parancs alkalmazását.
Summa summárum, most így néz ki a szkript eleje (megjegyzések a bejegyzés végén):
Summa summárum, most így néz ki a szkript eleje (megjegyzések a bejegyzés végén):
#!/bin/sh
## Home standalone gép.
## Megkeressük az iptables-t.
IPTABLES=`which iptables`
## Vagy ha tudjuk, akkor ezt.
## /usr/sbin/iptables
## Meghatározzuk az internetre csatlakozó interface-t.
IFACE=eth0
## Vagy ezt is lehet (az IP csak minta).
## IFACE=192.168.1.1
## Először törlünk minden szabályt.
## A lánc összes szabályának törlése.
$IPTABLES -F
## Az üres lánc törlése.
$IPTABLES -X
## A csomag és byte-számlálók nullázása a lánc valamennyi szabályában.
$IPTABLES -Z
## Felállítjuk az alap policyt.
## Mindent tiltunk, amit külön nem engedélyezünk.
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
Megjegyzéseim:
- az már világos, hogy az alap (default) policy bárhol lehet, hiszen csak akkor érvényesül, ha a szabályok egyikére sem érvényes a bejövő/kimenő csomag.
- iptables helyének meghatározása szükséges? Láttam anélkül is.
- IFACE=eth0 - szerintem nem szükséges, mert ahol kell ott elég az -i eth0 (de ezt majd később)
- ip6tables? (IPTABLES=`which ip6tables`)
- a komment egy # vagy kettő ##? Láttam ilyet is, olyat is, tehát valószínűleg mindegy.
SP
PS.: ide írom utólag, hogy aki ezt, vagy a későbbi bejegyzéseket olvassa, mindenképpen olvassa el a kommenteket is, mert lehet benne olyan dolog is, ami ROSSZ!
A hibás, vagy vitatott részeket utólag, az eredeti bejegyzés helyén PIROS színnel megjelölöm!
Mivel ez egy sorozat lesz, a következő bejegyzést a már megvitatott (és remélhetőleg jó) változattal kezdem. (2007.03.21.17.42)
A hibás, vagy vitatott részeket utólag, az eredeti bejegyzés helyén PIROS színnel megjelölöm!
Mivel ez egy sorozat lesz, a következő bejegyzést a már megvitatott (és remélhetőleg jó) változattal kezdem. (2007.03.21.17.42)
Utolsó kommentek