shorewall - Bridge Firewall mit VLANs

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
julianw
Beiträge: 10
Registriert: 07.07.2008 22:05:56
Kontaktdaten:

shorewall - Bridge Firewall mit VLANs

Beitrag von julianw » 19.12.2015 17:43:06

Hallo an alle,

ich hoffe Ihr könnt mir etwas helfen. Ich will shorewall als "bridge Firewall" betrieben. Dazu habe ich mal folgende Grafik erstellt, damit das ganze etwas übersichtlicher für euch ist:

Bild

Es geht also darum, ein Netzsegment abzuschirmen. vlan10 ist das interne Netzwerk, vlan100 das "öffentliche" Netzwerk und an vlan20 hängen zwei Maschinen, dazu später mehr. Im Grunde soll von vlan10 aus alle Maschinen aus vlan100 erreichbar sein, umgekehrt aber nur der nginx Proxy Server (10.0.12.1) sowie eine NAS (10.0.12.2) und eine KVM-Instanz (10.0.12.100). An vlan20 hängen zwei Rechner mit zwei IPs. Zwischen vlan10 und vlan20 soll es keine Beschränkungen geben, außer das die Kommunikation nur mit diesen beiden IPs möglich ist (klar kann man das austricksen, aber es sollte für den Anwendungsfall ausreichend sein). Zudem soll aus vlan100 heraus eine IP (10.0.12.20) aus vlan20 erreichbar sein. Auf dem Server unter 10.0.12.1 - der mit Debian 8 Jessie betrieben wird - läuft auch noch ein DHCP-Server, der vlan10 und vlan20 mit Adressen versorgt.

Aktuell habe ich folgende Konfiguration:

/etc/network/interfaces

Code: Alles auswählen

# Hauptschnittstelle, mit dem der Server mit dem Switch verbunden ist
auto bond0
iface bond0 inet manual
    slaves eth0 eth1
    bond_mode 802.3ad


# VLAN 10 = internes Netz
auto vlan10
iface vlan10 inet manual
    vlan-raw-device bond0


# VLAN 20 = internes Netz - externes Segment
auto vlan20
iface vlan20 inet manual
    vlan-raw-device bond0


# VLAN 100 = öffentliches Netz
auto vlan100
iface vlan100 inet manual
    vlan-raw-device bond0


# Hier laueft saemtlicher interner Traffic zusammen
# Alle Netzwerkschnittstellen der KVM-Server sind hier angeschlossen
auto br0
iface br0 inet static
    address 10.0.12.1
    netmask 255.255.255.0
    gateway 10.0.12.254
    network 10.0.12.0
    broadcast 10.12.0.255
    bridge_ports vlan10
    bridge_fd 9
    bridge_maxage 12
    bridge_maxwait 0


# Hier laueft saemtlicher Traffic zusammen, vom internern Netz sowie externe Zugriffe etc.
# Hier sollte shorewall ein Auge drauf haben
auto br1
iface br1 inet manual
    bridge_ports br0 vlan20 vlan100
    bridge_fd 9
    bridge_maxage 12
    bridge_maxwait 0

/etc/shorewall/interfaces

Code: Alles auswählen

#Zone     Interface        Broadcast	Options
world	  br1		        detect		bridge
net	    br1:vlan100
loc    	br1:br0
ext       br1:vlan20
/etc/shorewall/zones

Code: Alles auswählen

fw		    firewall
world		 ipv4
net:world	bport4
loc:world	bport4
ext:world	bport4
/etc/shorewall/policy

Code: Alles auswählen

#SOURCE		DEST		POLICY		LOG LEVEL	LIMIT:BURST
loc    net      ACCEPT
loc    ext      REJECT
ext    loc      REJECT
ext    net      REJECT
net    loc      DROP
net    ext      DROP

all    all        REJECT		info
/etc/shorewall/rules

Code: Alles auswählen

# Firewall darf jeder pingen
ACCEPT    $FW    loc    icmp
ACCEPT    $FW    net    icmp
ACCEPT    $FW    ext    icmp

# drei Maschinen sollen von außen für alle per http(s) und ssh erreichbar sein
ACCEPT    all    loc:10.0.12.1    TCP    80
ACCEPT    all    loc:10.0.12.1    TCP    443
ACCEPT    all    loc:10.0.12.1    TCP    22
ACCEPT    all    loc:10.0.12.2    TCP    80
ACCEPT    all    loc:10.0.12.2    TCP    443
ACCEPT    all    loc:10.0.12.2    TCP    22
ACCEPT    all    loc:10.0.12.100    TCP    80
ACCEPT    all    loc:10.0.12.100    TCP    443
ACCEPT    all    loc:10.0.12.100    TCP    22

# Die Maschine im "Außenbereich" soll auch erreichbar sein
ACCEPT   all   ext:10.0.12.20   TCP
ACCEPT   all   ext:10.0.12.20   UDP

# Im Außenbereich nur bestimmte IPs erlauben
ACCEPT   ext:10.0.12.20   all  TCP
ACCEPT   ext:10.0.12.20   all  UDP
ACCEPT   ext:10.0.12.21   all  TCP
ACCEPT   ext:10.0.12.21   all  UDP
ACCEPT   net   ext:10.0.12.21   TCP
ACCEPT   net   ext:10.0.12.21   UDP
# Die 10.0.12.20 sollte bereits durch obige Regel komplett freigegeben sein
Was ich noch nicht so genau weiß ist wie ich mit der fw-Zone umgehen soll...

Würde das so in etwa passen? Kann das funktionieren? Habe ich etwas übersehen? Wäre echt toll wenn einer mit etwas Erfahrung drüber schauen kann und etwas Feedback gibt :) Auf jeden Fall schon mal Danke! :D

Viele Grüße
julianw
IOBlogger - mein kleiner privater Blog

dufty2
Beiträge: 1714
Registriert: 22.12.2013 16:41:16

Re: shorewall - Bridge Firewall mit VLANs

Beitrag von dufty2 » 19.12.2015 21:20:29

bridges of bridges.
Nö, sollte nicht funktionieren ;)
Ich jedenfalls konnte es in meinen Test-Lab nicht nachstellen, da sich das "Interface" br0 nicht an die "bridge" br1 binden lässt. Möglicherweise bräuchte man für die "Inter-switch"-Verbindung veths oder ähnliches.

Doch davon mal ab.
Wenn ein Interface mit IP .1 die .254 (seit Gateway) erreichen will, sendet es einen arp-request,
in Deinem fall über die "vlan10-Leitung".
Dein .254 steht aber im vlan100 und daher kommt der arp-request dort nie an.
Es sei denn, Du verwendest zusätzlich ein weiteres .254, jetzt im VLAN 10.

Auch wenn diese IP-Überlappungen erlaubt sind (bei getrennten VLANs) hätt ich an Deiner Stelle
192.168.0.0/24 für VLAN 10, 172.16.0.0/24 für VLAN 20 und 10.0.0.0/24 für VLAN 100
oder zuminderst
10.0.10.0/24 für VLAN 10, 10.0.20.0/24 für VLAN 20 und 10.0.100.0/24 für VLAN 100
genommen.

julianw
Beiträge: 10
Registriert: 07.07.2008 22:05:56
Kontaktdaten:

Re: shorewall - Bridge Firewall mit VLANs

Beitrag von julianw » 20.12.2015 13:16:50

Vielen Dank schon mal für die Antwort!
Okay das erklärt einiges, dann hab ich wohl vorerst ein Problem mit der doppelten Bridge daran hab ich gar nicht gedacht beim testen... :oops:

Wäre es denn möglich alles einfach über eine Bridge laufen zu lassen und die KVM-Server über einen "virtuellen Switch" an diese Bridge anzuschließen? Für die KVM-Server müsste ich dann zwar extra Regeln und Zonen definieren, das sollte aber wohl kein Problem sein.

Also alle VLANs an eine Bridge, und dann mit shorewall überwachen, dass nur "erlaubter" Traffic stattfindet. Dann dürfte es doch auch kein Problem sein das Gateway zu erreichen, dann kommt aus vlan10 die Anfrage und geht über die Bridge nach vlan100 (aktuell ist es quasi auch genau so).

Leider ist das Netz nun mal so aufgebaut und ich kann das auch nicht ändern. Aktuelle läuft z.B. eine alte Linux Maschine mit 2.6er Kernel als Bridge Firewall (mehrere Netzwerkkarten wo die verschiedene VLANs ankommen sind einfach an einer Bridge angeschlossen) mit firewallbuilder als Config-Tool, nur leider wird diese Software nicht mehr aktiv gepflegt und die Maschine gibt auch langsam den Geist auf, weshalb Ersatz her muss.

vlan10 und vlan20 gehören auch quasi "zusammen", nur an die LAN-Buchsen von vlan20 könnten "unbefugte" Unsinn machen, daher nur erlaubte IPs für "etwas" Schutz.
in vlan100 ist im Grunde nur der Gateway .254 interessant, alles andere spielt keine Rolle. Der Gateway steht halt logischerweise außerhalb unseres Netzes. Daher sehe ich aktuell auch keinen Sinn darin, das Netz intern in verschiedene Segmente zu unterteilen.
IOBlogger - mein kleiner privater Blog

Antworten