PF Firewall Ruleset für DNS Server

irie
Posts: 13
Joined: 2009-04-01 00:15

PF Firewall Ruleset für DNS Server

Post by irie »

Hallo Rootforum Community,

auf meiner FreeBSD Box kommt PF zum Einsatz und es werden grundsätzlich alle Zugriffe geblockt.
Demnach für alles was durchsoll muss explizit ein Regelsatz gesetzt werden.

Da ich noch Probleme habe die richtigen Regeln für meinen DNS Server (NSD) zu finden mal die Frage an euch wie ihr dies mit PF umsetzen würdet.

Ausgangssituation:

Interfaces:
# Gateway für Jails
$if_ext = bge0
$if_ext_ip = 91.211.1.1
$vif_ns1_ext_ip = 91.211.1.2

# Jail ns1
$vif_ns1 = lo1
$vif_ns1_int_ip = 127.0.10.10

ns1.domain.de schickt NOTIFYs an ns2.domain.de
ns1.domain.de akzeptiert AXFR-Zonetransfers von ns1.domain.de

auf meinem Server läuft ein Primärer authoritative Nameserver (NSD) ns1.domain.de in einer eigenen Jail (ns1 auf Port 5335)
Der Sekundäre Nameserver ns2.domain.de befindet sich bei einem externen Anbieter.
An diesen müssen sogenannte Notifys geschickt werden, sprich mein Primärer Nameserver (ns1.domain.de) schickt dem Sekundären externen Nameserver (ns2.domain.de) über Port 53 ein Signal, die neuen Zonefiles von meinem Nameserver abzuholen um diese auf den gleichen Stand zu bringen.

Anfrage von externen Nameservern (alles was über $vif_ns1_ext_ip Port 53 eingeht) u.a. auch ns2.domain.de werden per rdr pass regel an das interne Jail $vif_ns1 auf Port 5335 weitergereicht.

Es muss erlaubt werden das alles was über $vif_ns1 mit port 53 eingeht auf $vif_ns1_int_ip port 5335 zugreifen darf. Und das ganze auch umgekehrt.
$vif_ns1_int_ip darf externen Kontakt mit ns2.domain.de an Port 53 aufnehmen.
Top

User avatar
rudelgurke
Systemtester
Systemtester
Posts: 380
Joined: 2008-03-12 05:36

Re: PF Firewall Ruleset für DNS Server

Post by rudelgurke »

Hoffe ich habe das richtig verstanden - Jail mit dem NS soll nur mit einem externen DNS Kontakt aufnehmen dürfen ?

IP Forwarding ist an und wenn die NAT Regeln stehen:

Code: Select all

$externer_dns_bei_anderem_anbieter = ns2.domain.de

rdr ...

nat on interface $vif_ns1_int from $vif_ns1_int_ip to any -> $if_ext_ip

pass in quick on $if_ext proto udp from $externer_dns_bei_anderem_anbieter port 53 to $vif_ns1_in_ip
pass out quick on $if_ext proto udp from $vif_ns1_int_ip to $externer_dns_bei_anderem_anbieter port 53


Selbiges nochmal für TCP dann. Müsste es eigentlich sein
Top

irie
Posts: 13
Joined: 2009-04-01 00:15

Re: PF Firewall Ruleset für DNS Server

Post by irie »

Okay Super.

Mit ein paar Modifikationen hat es dann geklappt. Danke ;-)

Was ich bisher auch nicht hinbekommen habe ist vom Hostsystem aus, auf alle meine Jails eine Verbindung aufzubauen. Die Verbindung zwischen den Jails klappt einwandfrei.

Hostsystem
If_ext = bge0
Also Verbindungen von 127.0.0.1 aus auf die jeweilige Jail
Ext_IP: 91.x.x.1 (sollte unrelevant sein)

Jails:
if_ns1 = lo0
if_ns1_ip = 127.0.10.10
if_mail = lo1
if_mail_ip = 127.0.20.10
usw..
Top

User avatar
rudelgurke
Systemtester
Systemtester
Posts: 380
Joined: 2008-03-12 05:36

Re: PF Firewall Ruleset für DNS Server

Post by rudelgurke »

Wenn die Jails untereinander sollen, als Beispiel eine Mail und eine DB Jail:

Code: Select all

ext_int = em0 (oder was auch immer)
ext_ip = 255.255.255.254 (nur als Beispiel)
db_int = lo1
db_ip = 127.0.10.1
mail_int = lo2
mail_ip = 127.0.20.1
high = 1024:65535

# RDR
rdr on $ext_int proto tcp from any to $ext_ip port 25 -> $mail_ip port 25
rdr on $ext_int proto tcp from any to $ext_ip port 465 -> $mail_ip port 465

# NAT Regeln
nat on $ext_int from $db_int to any -> $ext_ip
nat on $ext_int from $mail_int to any -> $ext_ip

# Kommunikation zu und von Mail mit dem Rest der Welt
pass in quick on $ext_int proto tcp from any port $high to $mail_ip port { 25 465 }
pass out quick on $ext_int proto tcp from $mail_ip port { 25 465 } to any port $high

# Mail zu DB
pass in quick on { $db_int $mail_int } proto tcp from { $db_ip $mail_ip } to { $db_ip $mail_ip }
pass out quick on { $db_int $mail_int } proto tcp from { $db_ip $mail_ip } to { $db_ip $mail_ip }


Eventuell kann man noch die Kommunikation auf diverse Ports einschränken, soll nur ein Beispiel sein hier.

Wenn die Jails selbst angesprochen werden können und IP Forwarding aktiviert ist, via tcpdump auf pflog0 kann man recht schnell rausfinden wo es evtl. noch klemmt. :)
Top

irie
Posts: 13
Joined: 2009-04-01 00:15

Re: PF Firewall Ruleset für DNS Server

Post by irie »

Danke aber die Jails können bereits miteinander kommunzieren wie geschrieben.

Es geht eher darum, dass ich z.B. auf den FTP Server (JAIL) oder WWW Server (JAIL) über das Hostsystem zugreifen kann.

Ich hab Monitd am laufen der über TCP bzw. HTTP prüft ob die Serverdaemons erreichbar sind und das klappt nicht weil die Verbindung vom Hostsystem(also Hauptsystem unter den die Jails laufen) zu den Jails verweigert wird.
Top

User avatar
rudelgurke
Systemtester
Systemtester
Posts: 380
Joined: 2008-03-12 05:36

Re: PF Firewall Ruleset für DNS Server

Post by rudelgurke »

Wird auf "lo0" zufällig gefiltert ?

Alternativ könnte man via Monit auch die externen IP's überwachen lassen, so kann man auch gleich sehen ob mit PF alles in Ordnung ist. :)
Top

Who is online

Users browsing this forum: No registered users and 425 guests