Root Server bei Hetzner mit Proxmox virtualisieren.

Da ich nur 1 offizielle IP-Adresse hab (ok, man kann weitere bestellen, brauch ich aber nicht!) möchte ich hinter dem Hostsystem mehrere interne Netzwerke aufbauen, die untereinander nicht/oder schon miteinander "sprechen" können. Dafür würde ich gerne pfSense verwenden, denn damit hab ich schon ein wenig Erfahrung sammeln können.

So soll das dann aussehen:

Internet <-> Hostsystem (Proxmox und Shorewall) <-> (DMZ) pfSense <-> Net1
                                                                   <-> Net2...

 und so hab ich es gemacht:

 Installation von Proxmox

 über Hetzner Robot eine Rescue Session starten und mittels

 installimage Proxmox installieren

 reboot

 passwd

 dazu noch folgende Links:
http://wiki.hetzner.de/index.php/Proxmox_VE

Einstellungen für die Proxmox Installation

DRIVE1 /dev/sda
DRIVE2 /dev/sdb
SWRAID 1
SWRAIDLEVEL 1
BOOTLOADER grub
HOSTNAME xxxx
PART /boot ext3 512M
PART lvm vg0 all
LV vg0 root / ext4 128G
# für swap doppelter Speicherplatz zu RAM
LV vg0 swap swap swap 32G
LV vg0 vz /var/lib/vz ext4 2560G
IMAGE /root/.oldroot/nfs/install/../images/Debian-60-squeeze-64-minimal.tar.gz

seit zumindest Oktober 2013 kann man das jetzt auch mit wheezy installieren! -> somit IMAGE wheezy

seit Version 2 findet man dann unter https://myip:8006 und vorher unter Port 443 die AdminOberfläche
und dann passe ich noch die source.list an
deb http://download.proxmox.com/debian wheezy pve-non-subscription
und in /etc/apt/sources.list.d/pve-enterprise.list kommentiere ich alles aus (ich hab kein enterprise)


mittels pveversion -v prüfe ich noch ob die richtige version vorhanden ist, dabei fällt mir auf:
vzprocps: not correctly installed
ksm-control-daemon: not correctly installed

daher apt-get install vzprocps ksm-control-daemon

jetzt noch, weil bei apt-get update ich mich dumm und dämlich warte (siehe auch hier)
nano /etc/gai.conf

precedence ::ffff:0:0/96  100
 
 

Netzwerkkonfiguration

/etc/network/interfaces

### Hetzner Online AG - installimage
# Loopback device:
auto lo
iface lo inet loopback

 # device: eth0
auto  eth0
iface eth0 inet static
address   xxx.yyy.zzz.239
netmask   255.255.255.224
broadcast xxx.yyy.zzz.255
gateway   xxx.yyy.zzz.225
#folgender Eintrag brauchte EQ6
#post-up mii-tool -F 100baseTx-FD eth0

 auto vmbr0
iface vmbr0 inet static
address 192.168.50.1
netmask 255.255.255.252
broadcast 192.168.50.3
bridge_ports none
bridge_stp off
bridge_fd 0

 auto vmbr1
iface vmbr1 inet static
address 192.168.51.254
netmask 255.255.255.0
broadcast 192.168.51.255
bridge_ports none
bridge_stp off
bridge_fd 0

#für Testzwecke mache ich mir noch folgende Bridges
auto vmbr2
iface vmbr2 inet static
address 192.168.52.1
netmask 255.255.255.0
broadcast 192.168.52.255
brdige_ports none
brdige_stp off
bridge_fd 0

auto vmbr3
iface vmbr3 inet static
address 192.168.53.1
netmask 255.255.255.0
broadcast 192.168.53.255
brdige_ports none
brdige_stp off
bridge_fd 0

# default route to access subnet
up route add -net xxx.yy.zzz.96 netmask 255.255.255.224 gw xxx.yyy.zzz.97 eth0

 

Firewall Konfiguration

 dann muss noch dafür gesorgt werden, dass die Pakete richtig geforwardet werden - einstweilen hab ich diese Beschreibung verwendet (mittels Shorewall)

 apt-get install shorewall

 /etc/shorewall/shorewall.conf

 

DISABLE_IPV6=Yes  # ich verwende das nicht
IP_FORWARDING=On

 

 

 

/etc/shorewall/zones

 

#ZONE   Type            Options         IN              Out
#                                       Options         Options
fw      firewall
net     ipv4
dmz     ipv4

 

 

 

 

 

/etc/shorewall/interfaces

 

 

 

#Zone   Interface       Broadcast       Options
net     eth0            detect          blacklist,nosmurfs
dmz     venet0          detect          routeback
dmz     vmbr0           detect          routeback,bridge

 

 

 

/etc/shorewall/policy

 

#SOURCE DEST    POLICY          LOG     LIMIT:          CONNLIMIT:
#                               LEVEL   BURST           MASK

 

# From Firewall Policy
fw      fw      ACCEPT
fw      net     ACCEPT
fw      dmz     ACCEPT

 

# From DMZ Policy
dmz     dmz     ACCEPT
dmz     net     ACCEPT
dmz     fw      DROP            info

 

# From Net Policy
net     fw      DROP            info
net     dmz     DROP            info

 

# THE FOLLOWING POLICY MUST BE LAST
#
all     all     REJECT          info

 

 

 



 

/etc/shorewall/rules

 


#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE
SSH/ACCEPT      net     fw      -       -       -       -       6/min:5
# Permit acces to Proxmox Manager and Consol
ACCEPT          net     fw      tcp     22,443,8006,5900:5999

#Ping Rules
Ping/ACCEPT     all     all

#incoming traffic
#alles was rein kommt an die DMZ weiterleiten 1:1
DNAT            net     dmz:192.168.50.2        tcp     1:21
DNAT            net     dmz:192.168.50.2        tcp     23:442
DNAT            net     dmz:192.168.50.2        tcp     444:5899
DNAT            net     dmz:192.168.50.2        tcp     6000:8005
DNAT            net     dmz:192.168.50.2        tcp     8007:65535
DNAT            net     dmz:192.168.50.2        udp     1:65535

 

# LAST LINE -- DO NOT REMOVE

 

 

 

 

 

shorewall try /etc/shorewall 60

 

auf anderer Konsole mittels SSH versuchen sich anzumelden - wenn das geht, dann ist vorerst alles in Ordnung

 

 

 

/etc/default/shorewall

 

 

 

startup=1

 

 

 

 

 

 

 

shorewall start

 

 

 

bzw. shorewall restart

 

 

 

/etc/shorewall/masq

 

 

 

#INTERFACE      SOURCE          ADDRESS         PROTO   PORT(S) IPSEC   MARK

 

# alles von 192.168.50.0/24 wird an eth0 gereicht und bekommt ip von eth0
eth0            192.168.50.0/24
# LAST LINE -- DO NOT REMOVE

 

 

 

 

 

Dann pfSense in einer virtuellen Maschine installieren, wobei hier folgende Netzwerkeinstellungen gemacht werden müssen:

 



 

auto eth0

 

iface eth0 inet static
address 192.168.50.2
netmask 255.255.255.252
gateway 192.168.50.1

 



 

Ich stelle dann im Proxmox noch ein, dass diese virtuelle Maschine auch autom. mitgestartet wird.
Bootreihenfolge = 1 (bedeutet, diese VM wird als 1. gestartet).

 

 

 

Und weiter geht's

 

Was noch zu machen ist (via ssh am Hostsystem) - unter Anlehnung an diesen oder diesen Link:

 

aptitude update && aptitude full-upgrade
dpkg-reconfigure tzdata
reboot

 

 

 

SSH-Login als root unterbinden und nur mittels Key

 

 

 

damit man vom unpriviligierten User zum root wechseln kann benötige ich noch sudo, also nachinstallieren

 

aptitude install sudo

 

 

 

und jetzt lege ich meinen unpriviligierten User an:

 

adduser xyz
adduser xyz sudo
su xyz
sudo -s
exit

 

wenn das klappt, dann bin ich eine Schritt weiter; jetzt geht es darum, dass der private key auf den Server kommt (siehe dazu diesen Link):

 

cd
mkdir .ssh
nano .ssh/authorized_keys2

 

jetzt hier den private key hineinkopieren

 

chmod -R og-rwx .ssh
exit

 

wichtig! es muss sichergestellt sein, dass die Anmeldung mit dem neuen User und sudo funktioniert, sonst ist man ausgesperrt!

 

So jetzt schalte ich den Login als root ab:

 

sudo -s
nano /etc/ssh/sshd_config

 

ändern von PermitRootLogin yes auf

 

PermitRootLogin no

 

speichern

 

/etc/init.d/ssh restart

 

jetzt kann man sich mittels ssh root@localhost nicht mehr anmelden. - Und nun noch Einstellung, dass man sich nur mehr mittels key anmelden kann:

 

sudo -s
nano /etc/ssh/sshd_config
PasswordAuthentication no