Mehrere Netzwerkkarten und ipfwrules

Dany

Well-Known Member
Hallo Leute,

bin gerade dabei bei einen Server die ipfwrules zu überarbeiten. Aber komme einfach nicht an das gewünschte Ziel.

Die Alte ipfwrules Datei hatte über 70 Zeilen und ich denke das man dieses kürzen könnte. Leider habe ich von ipfwrules nur sehr wenig ahnung und kenne mich nicht so gut aus, darum hoffe ich auf Eure Unterstützung.

Ich möchte mit der ipfw einen Server absichern, der im Internet mit einer echten IP steht, vor dem Server steht zwar nochmals eine Hardwarefirewall (nur Portscann ohne NAT) aber falls diese ausfällt sollte am Server immernoch ein Schutz aktiv sein.

Der Server selbst hat zwei Netzwerkkarten auf einer Karte ist die echte IP und ein par aliase aus dem selben Netz. Auf der zweiten Karte ist eine interne IP (192.168.10.x) die mit einen Crossover Kabel mit dem Backupserver verbunden ist.

Als Service laufen auf dem Server, auf der Netzwerkkarte mit der echten IP:
HTTP (80), FTP (20,21), SSH (22), Webmin (10000), SMTP (25), POP (110), DNS (53), NTP (123)

Die Regeln sollten folgendes erlauben:
Alle Dienste sollen vom Internet (any) aus erreichbar sein, auf der einen Netzwerkkarte.
Der Server selbst sollte nach extern nur folgende Service können:
HTTP (80), SSH (22), SMTP (25), DNS (53), NTP (123)

Die Interne Netzwerkkarte sollte nur die Dienste SSH, FTP, SMTP und NFS erlauben.

Jetzt zu meinen ersten Problem, wie kann ich diese Regeln aufbauen, das diese noch übersichtlich sind? Die Regel für den DNS und FTP Service funktionieren einfach nie richtig und es kommt immer wieder zu Problemen?

Folgende ipfwrule habe ich jetzt begonnen, aber diese funktioniert schon der Service FTP nicht richtig:

Code:
#!/bin/sh

fwcmd="/sbin/ipfw -q"

interface_echt="em0"
interface_intern="em1"

open_tcpports_to_me_em0="20, 21, 22, 25, 53, 80, 110"
open_udpports_to_me_em0="123"
open_tcpports_to_any_em0="25, 53, 80"
open_udpports_to_any_em0="123"

open_tcpports_to_me_em1="20, 21, 22, 25"
open_udpports_to_me_em1="123"
open_tcpports_to_any_em1="20, 21, 22, 25"
open_udpports_to_any_em1="123"

ip_em0="62.xx.xx.1, 62.xx.xx.2"
ip_em1="192.168.10.150"

${fwcmd} -f flush

${fwcmd} add 00100 allow ip from any to any via lo0

${fwcmd} add 00500 check-state

# TCP - Interface em0 (echte IPs)
${fwcmd} add 01000 allow tcp from any to ${ip_em0} ${open_tcpports_to_me_em0} out xmit ${interface_echt} setup
${fwcmd} add 01200 allow tcp from any to any ${open_tcpports_to_any_em0} in recv ${interface_echt}

# UDP - Interface em0 (echte IPs)
${fwcmd} add 02000 allow udp from any to ${ip_em0} ${open_udpports_to_me_em0} out xmit ${interface_echt} setup

# TCP - Interface em1 (interne IPs)
${fwcmd} add 03000 allow tcp from any to ${ip_em1} ${open_tcpports_to_me_em1} out xmit ${interface_intern} setup
${fwcmd} add 03200 allow tcp from any to any ${open_tcpports_to_any_em0} in recv ${interface_intern}

# UDP - Interface em1 (interne IPs)
${fwcmd} add 04000 allow udp from any to ${ip_em1} ${open_udpports_to_me_em1} out xmit ${interface_intern} setup

# Erlaubt der Verbindung offen zu bleiben
${fwcmd} add 05000 allow tcp from any to any via ${interface_echt} established
${fwcmd} add 05100 allow udp from any to any via ${interface_echt} established

# Rest
${fwcmd} add 65000 deny log ip from any to any


Danke für Eure Hilfe
Daniel
 
Zurück
Oben