pf-Regeln für Jails

Benedikt

Well-Known Member
Hallo,
Ich krieg es leider nicht hin. Ich habe die letzten Tage damit verbracht meine pf-Firewall einzurichten um verschiedene Jails für das Internet verfügbar zu machen.

Folgendes ist mein Plan:

Ich habe ein Hostsystem, welches lediglich SSH-Zugang bietet. Die anderen Dienste wie Web- und Mailserver sollen jeweils in einer eigenen Jail laufen.

nox (?) aus dem Chat hat mir schon einiges geholfen, aber ich kriege es nicht hin. Ich möchte erreichen, dass meine Jails, die auf IP-Adressen wie 10.0.0.1 bis x erreichbar sind, auf Anfragen auf bestimmten Ports reagieren.

Beispiel:
Anfrage auf Port 80 für Webserver wird an meine Jail 10.0.0.2 auf Port 80 weitergeleitet. Ich kriege aber die Firewall-Regeln nicht hin.

Meine pf.conf sieht wie folgt aus:

Code:
### INTERFACES ###
if = "{ rl0 }"

### TABLES ###
table <intranet>   { 192.168.21.0/24 }
table <bruteforce> persist

### OFFENE TCP/UDP-PORTS ###
tcp_pass = "{ 21 25 22 }"
udp_pass = "{ 53 25  123 >1032 22 }"
icmp_types = "echoreq"

### SETTINGS ###
set block-policy drop
set skip on lo0

### NORMALISATION ###
scrub in all

### RULES ###
block all
block quick from <bruteforce>
antispoof for $if

# IN #
pass in quick from <intranet> to any keep state
pass in on $if proto tcp from any to any port $tcp_pass flags S/SA keep state (max-src-conn 100, max-src-conn-rate 15/5, overload <bruteforce> flush global)
pass in on $if proto udp from any to any port $udp_pass keep state

# OUT #
pass out quick all keep state

# PING #
pass in on $if inet proto icmp all icmp-type $icmp_types keep state
# TRACEROUTE #
pass in on $if inet proto udp from any to any port 33433 >< 33626 keep state

Wäre toll wenn mir einer eine Beispiel-Regeln schreiben könnte, die ich dann immer wieder verwenden kann.
Muss ich eigentlich in den Jails auch pf-Regeln installieren?

Danke für eure Hilfe!
 
Hi Benedikt,

hier mal eine Beispielregel, für die von Dir gewünschte www-Jail mit http und https, also port 80 und 443.

Code:
web=10.0.0.2
rdr pass on $if proto tcp from any to $if port { http, https } -> $web

Hoffe, das hilft Dir weiter.

Achja, pf in der Jail brauchst Du nicht.

Gruß,

Ice
 
Danke, werd das mal testen :-)

Wie ist das mit Diensten die auch nach außen Zugriff brauchen? Wie sieht das dann aus?

Ich hab irgendwo gelesen, dass ich mit NAT arbeiten muss, stimmt das?

EDIT: Ok, jetzt funktioniert es. Allerdings friert er bei der einen Jail nach der Eingabe des Benutzernamens per SSH ein.
 
Zuletzt bearbeitet:
Wen es interessiert, die entsprechende nat-Regel lautet (in meinem Fall):
Code:
nat on $if proto {tcp udp icmp} from $jails to any -> $ext_ip

Statt $ext_ip habe ich $if stehen gehabt.
 
Zurück
Oben