PF - LAN und DMZ-LAN

Apfeltee

Member
Hallo,

ich habe auf meiner kleinen Soekris OpenBSD 4.6 installiert und soweit konfiguriert. Auch die gesetzten pf-Regeln funktionieren. Hier möchte ich aber noch einschränkungen haben.

Erstmal meine Regeln:
Code:
### VARIABLEN ###

Ext = "tun0"                   # Device an dem das Internet angeschlossen ist
Int = "sis0"                   # Device an dem das interne Netz haengt
Dmz = "sis2"                   # DMZ Bereich
lannet = "{ 192.168.1.0/24 }"  # Adressraum des internen Netzes
dmznet = "{ 192.168.2.0/24 }"  # Adressraum des DMZ Netzes
Loop = "lo0"                   # Loopback Device

# Ports die fuer das LAN  geoeffnet werden sollen
tcp_services = "{ ssh, smtp, auth, domain, http, https, pop3, pop3s }"
udp_services = "{ domain }"

### OPTIONS ###

# Macht Statistiken fuer die DSL-Verbindung (pfctl -s info)
set loginterface $Ext

# Beendet inaktive Verbindungen schneller - geringerer Speicherverbrauch.
set optimization aggressive

# Pakete saeubern
match in all scrub (no-df random-id)

# Antispoof
antispoof quick for { $Loop $Int }

### NAT & FORWARD ###

# NAT aktivieren (unter Linux als Masquerading bekannt)
 nat on $Ext from $Int:network to any -> ($Ext)
 nat on $Ext from $Dmz:network to any -> ($Ext)

### FILTER ###

# Generelle Block Regel
block all

# Loopback Device darf alles
pass quick on $Loop

# Ping akzeptieren
 pass in quick on $Ext inet proto icmp all icmp-type 8 code 0 keep state

# Zugriff auf das innere LAN Interface erlauben
pass in quick on $Int from $lannet to any keep state
pass out quick on $Int from any to $lannet keep state

# Zugriff auf das DMZ LAN Interface erlauben
pass in quick on $Dmz from $dmznet to any keep state
pass out quick on $Dmz from any to $dmznet keep state

# Anfragen nach aussen erlauben
pass out on $Ext proto tcp to any port $tcp_services keep state
pass out on $Ext proto udp to any port $udp_services keep state

Mein Netz:
OpenBSD Router mit 3 Interfaces.
tun0 (sis1) = Internet
sis0 = LAN 1
sis2 = LAN 2

Mit den Regeln ist der Internetverkehr für beide Netze möglich. Da hier kompletter Zugriff aus beiden Netzen auf das interne Interface erlaubt ist, "sehen" sich LAN 1 und LAN 2.

Folgendes möchte ich erreichen:

Ich möchte gerne, dass LAN 2 kein Zugriff mehr auf LAN 1 bekommt, jedoch LAN 1 soll LAN 2 erreichen können. Der Internetverkehr soll für die angegebenen Services für beide LANs weiterhin erlaubt sein.

Irgendwie fehlt mir jetzt der richtige Ansatz dafür. Hat eventuell jemand einen Tipp um mein Vorhaben umsetzen zu können?

Grüße
Apfeltee
 
wie wärs hiermit?

nat on $Dmz from $Int:network to $Dmz:network -> ($Dmz)

warum hast du so viele "quick"s?
 
Hallo,

Danke für deine Antwort.

nat on $Dmz from $Int:network to $Dmz:network -> ($Dmz)

Kannst du mir als pf Neuling die Zeile bitte erklären? Ich interpretiere diese wie folgt:

Erlaube NAT am $DMZ Interface für das interne LAN Netzwerk (LAN 1) zum DMZ Netzwerk (LAN 2). Ist das so richtig? Das heißt, dass ich damit den Zugriff von LAN 1 auf LAN 2 erlaube. Aktuell ist es ja so, dass $DMZ noch Zugriff auf LAN 1 hat. Wie kann ich das hier am besten verbieten?

warum hast du so viele "quick"s?

Na recht hast du schon. Ich nehme hier mal für die Freigabe auf das interne LAN Interface die Quicks heraus.

Grüße
Apfeltee
 
Das mit dem NAT musst du nicht machen, stimmt...

Am einfachsten wäre es, wenn du bei "pass in on $Dmz" einfach "to !$lannet" statt "to any" machst ;)

Das aggressive solltest du rausnehmen, vor Allem da du noch neu in der Materie bist.
 
Hi,

Code:
Am einfachsten wäre es, wenn du bei "pass in on $Dmz" einfach "to !$lannet" statt "to any" machst

Bei "to !$lannet" kommt ein Syntax error. Hier stört sich pfctl an dem Ausrufezeichen (Negation). Aufgrund deiner Herangehensweise habe ich das anders gelöst, Ist zwar nicht schön, funktioniert aber:

Code:
table <noPermission> { 192.168.1.0/24 }
[...]
# Zugriff auf das DMZ LAN Interface erlauben
pass in on $Dmz from $dmznet to any keep state
pass out on $Dmz from any to $dmznet keep state
    
block in on $Dmz inet from $dmznet to <noPermission>
[...]

Danke dir für deine Hilfe. ;)

Grüße
Apfeltee
 
ich denke eher, dass es an den geschweiften klammern liegt, die in $lannet stehen.

probiers mal mit $Int:network (warum überhaupt $lannet und $dmznet?)
 
Zurück
Oben