ProxMox Firewall-Konfiguration

blutv

New Member
Hallo,

ich benötige Hilfe bei der Firewall-Konfiguration meines ProxMox-Servers. Ich habe in den letzten Tagen schon verschiedenste Anleitungen (vor allem ProxMox mit shorewall) ausprobiert, komme aber irgendwie nicht zum Ziel.

Das Ziel ist, auf dem ProxMox-Server (AMD Athlon II X4 640, 16GB RAM, 2x1TB HDD) eine Firewall einzurichten, die
- den ProxMox-Server selbst schützt und nur Zugriff auf SSH und das Webinterface erlaubt (bzw. vielleicht nur SSH, und der Zugriff aufs Webinterface per SSH-Tunnel?)
- die virtuellen Maschinen (hauptsächlich OpenVZ, aber auch KVM) schützt
- die verschiedenen externen IPs den virtuellen Maschinen zuordnet

Die virtuellen Maschinen sollten wahrscheinlich in einem internen Netz (z.B. 10.0.0.0) laufen, sodass nur benötigte Ports durchgelassen werden, z.B. EXTERNE IP2, Port 80 auf 10.0.0.105, Port 80.

Könnte mir dabei jemand helfen, der sich mit Firewalls auskennt? Ich würde dafür natürlich auch bezahlen, wenn möglich mit Rechnung.
 
Ja, diese Kiste habe ich bei Euserv derzeit auch...

Ich habe es bei mir bisher so gelöst (auch auf einem anderen Setup bei Hetzner).

Maschinen hängen an venet mit einer selbst definierten IP 192.168.101.*
Auf dem Root selber habe ich per Init Skript ein paar iptables forwards ala ExterneIP1:Port -> InterneIP1:Port eingerichtet.

Auch wenn eine komplette Firewall Appliance noch etwas mehr mitbringen könnte (IDS z.B.) reicht iptables für ein einfaches Forward locker aus.
 
Hallo fbartels,

könntest du mir die iptables-Regeln mal genauer beschreiben? Ich habe es mit shorewall probiert (was ja auch nur iptables-Regeln erstellt) aber es nicht hinbekommen. Wie genau sieht so eine forward-Regel bei dir aus?

Und hast nutzt du auch KVM? Dort ist ja venet nicht nutzbar, sondern nutz veth. Geht das damit analog?
 
War da nicht was mit Rechnung ;-) Nein Spaß beiseite, hier ist mein Skript:

Code:
#!/bin/sh
# iptables suchen
iptables=`which iptables`

case "$1" in
start|restart)
echo "Starte Firewall..."

# alle Regeln loeschen
$iptables -t nat -F
$iptables -t filter -F
$iptables -X

# IP Weiterleitungen
IP1=x.x.x.x    # Zuordnung 1
IP1=x.x.x.x    # Zuordnung 2
IP1=x.x.x.x    # Zuordnung 3
IP1=x.x.x.x    # Zuordnung 4

# VMs
VM101=192.168.101.101     # Hostname zur Zuordnung
VM102=192.168.101.102     # Hostname zur Zuordnung
#
# Oeffnet alle Ports zur VM
# $iptables -t nat -I PREROUTING -d $IP-X -j DNAT --to VM-X
# Oeffnet nur einen bestimmten Port (z.B. Port 80)
# $iptables -A PREROUTING -t nat -p tcp -d $IP-X --dport 80 -j DNAT --to VM-X:80
# Ausgehende IP für für VM festlegen
# $iptables -t nat -I POSTROUTING -s $VM-X -j SNAT --to $IP2
#
# Start der Weiterleitungen

# Webserver
$iptables -A PREROUTING -t nat -p tcp -d $IP2 --dport 22 -j DNAT --to $VM101:22
$iptables -A PREROUTING -t nat -p tcp -d $IP2 --dport 80 -j DNAT --to $VM101:80
$iptables -t nat -I POSTROUTING -s $VM101 -j SNAT --to $IP2

;;
stop)
echo "Stoppe Firewall..."

# alle Regeln loeschen
$iptables -t nat -F
$iptables -t filter -F
$iptables -X
;;
esac

exit 0

Das ganze in /etc/init.d speichern (z.B. als firewall), ausführbar machen und mittels "update-rc.d firewall defaults" in den Autostart aufnehmen.

Ich benutzte dies bisher nur für OpenVZ Maschinen und bei venet besteht der Vorteil, dass du die IPs vom Root aus pingen kannst. KVM bietet hier die Option NAT an, die theoretisch das selbe zur Verfügung stellen sollte (bisher nicht getestet).
 
Vielen Dank für das Skript! Kannst du mir deine Netzwerkkonfiguration bitte noch zeigen? (/etc/network/interfaces)

Danke.
 
Ich setzte APF als frontend ein um den Proxmox Host zu schützen.
Und die VM´s schütze ich mit nem virtuellen pfsense router. So das alle vm´s hinter pfsense hängen.
Läuft 1A
 
ist die standard interfaces Datei. Habe natürlich die zusätzlichen ips mittels up "ip addr add" vmbr0 hinzugefügt.
 
ist die standard interfaces Datei. Habe natürlich die zusätzlichen ips mittels up "ip addr add" vmbr0 hinzugefügt.

Das heißt, vmbr0 hat bei dir auch die externe Haupt-IP als Adresse und du definierst nur in den VMs Adressen aus dem privaten Netz?
 
Die ist unverändert
Code:
#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additonal system variables
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 4 4 1 7

##############################################################3
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# This disables TCP Window Scaling (http://lkml.org/lkml/2008/2/5/167),
# and is not recommended.
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#net.ipv6.conf.all.forwarding=1

###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Ignore ICMP broadcasts
#net.ipv4.icmp_echo_ignore_broadcasts = 1
#
# Ignore bogus ICMP errors
#net.ipv4.icmp_ignore_bogus_error_responses = 1
# 
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
#net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1
#
# The contents of /proc/<pid>/maps and smaps files are only visible to 
# readers that are allowed to ptrace() the process
# kernel.maps_protect = 1

net.ipv6.conf.all.disable_ipv6=1

Auch wenn es so eigentlich nicht funktionieren sollte. Irgendwo ist wohl an dritter Stelle das Vorward der Ipv4 Pakete aktiviert worden.
 
Back
Top