[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Iptables strukturieren



On 10.03.2010 14:00, Bjoern Meier wrote:
> Hi,
> 
> ich komm jetzt allmählich in die Lage, dass mein Script über die ich
> die Netfilter-Tabellen mit iptables füttere etwas größer und damit
> unübersichtlich werden. Um den vorzubeugen wollte ich das ganze neu
> strukturieren.
> Wäre gut, wenn ihr Ideen dazu habt und mir diese mitteilen könntet.

Benutze ipset.

> 
> Zur Übersicht:
> Die Firewall um die es geht, ist quasi die 2 Stufe. Sie prüft ob die
> angenommenen IPs gültig sind und erlaubt dann die Zugriffe in ein
> DMZ-Subnet zu bestimmten Ports. Ebenso regelt sie welche Ports vom
> Firmennetz raus dürfen. Das Gateway und die Firewall selbst stehen
> wiederum in ein eigenes Subnet. Wir haben verschiedene Eintrittspunkte
> ins Firmennet (PPtP, IPSec, etc.).
> 
> Bisher habe ich das so strukturiert.
> Alle default-Chains bekommen die default-policy DROP. Also alles was
> ich nicht explizit erlaube ist verboten (ist bei uns noch leichter zu
> definieren ;) ).
> Dann prüfe ich erstmal die IPs und leite dann an eine <IP>_CHECK_PORTS
> Chain Alle dort definierten Ports werden wieder an eine Chain Namens
> <IP>-ACCEPT_AND_LOG geleitet, die - wie der Name schon sagt - die
> Pakete erst loggt und dann ans Target ACCEPT gibt. das Logging ist nur
> für die Testphase.
> 
> Leider ist das alles in einem einzigen Script. Ich würde das gern
> aufteilen, so nach der Art:
> 
> /etc/firewall/10-<IP1>.conf
> /etc/firewall/20-<IP2>.conf
> /etc/firewall/30-<IP3>.conf
> usw.
> In diesen Scripten steht dann pro IP die Gesamte Kette, also vom
> ersten prüfen der IP bei Input über die Port-Prüfung bis zum Accept.

hm, da gäbe es viele möglichkeiten. darum gibts wahrscheinlich so viele
iptables-ruleset generatoren. jetzt machst du hald deinen 'homegrow'.
sprachen in denen das verwirklicht werden kann gibt es auch wie sand am
meer. jede shell, perl, python, ruby, etc...
mann könnte z.b. dateien mit datensätzen füllen, diese parsen und daraus
regeln generieren. hm, da wären wir wieder beim generator.

z.b.

INPUT 1.1.1.1 2.2.2.1 21 ACCEPT
INPUT 1.1.1.2 2.2.2.2 22 DROP
...

parse() {
while read -r -t 10 chain src dst dport target; do
	$ipt -A $chain -s $src -d $dst --dport $dport -j $target
done
}

printf "bla file1\n"
parser <input_file1
...

oder regeln pro datei, und dateien 'sourcen'

. /etc/fw/1.conf || ...
...


> 
> Dann
> noch ein
> /etc/init.d/firewall start-stop-script welches Scripte in
> /etc/firewall/*.conf inkludiert.

dein init.d script sollte wenn möglich iptables-restore benutzen.
ist schneller und sicherer.

> 
> Meinungen?
> 
> Ja, ich weiß es gibt Tools die Iptables-Rules generieren, aber die
> mochte ich bisher nicht so.
> Gruss,
> Björn
> 
> 

MfG

Mart


Reply to: