Objectif minimal :
– permettre aux VMs de sortir sur Internet (utile pour les phases de setup/update)
– permettre aux VMs de rendre un service

1- permettre aux VM de sortir

Par défaut, l’hyperviseur proxmox chez OVH/SoYouStart posède une IP Publique sur vmbr0 mappé sur eth0 et c’est tout !

L’IP Forward n’est pas activé.

echo 1 > /proc/sys/net/ipv4/ip_forward

Deuxième chose a faire : configurer la seconde interface (ou une interface virtuelle si vous êtes pas chez OVH et que vous ne disposez que d’une interface physique).

Edition du fichier /etc/network/interfaces

address  192.168.0.254   ### IP interne classe A, B ou C
netmask  255.255.255.0   ### le masque en conformité
bridge_ports eth1      ### la patte physique associé a l'interface virutuelle 
bridge_stp off
bridge_fd 0
### post-up /etc/pve/kvm-networking.sh
### POSTROUTING vers l'interface virtuelle avec l'IP Publique de l'Hyperviseur
post-up /sbin/iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE</front>
post-down /sbin/iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE

Dans cet exemple, on va pouvoir faire jusqu’a 253 VM dans le réseau 192.168.0.0/24

2- permettre aux VM de rendre un service

On va devoir gérer des rêgles de filtrages pour indiquer que le Flux n’est pas destiné a l’hyperviseur mais a la VM qui est a l’intérieur.

Exemple a adapter :
Fichier : /etc/init.d/firewall

#!/bin/bash
 ### BEGIN INIT INFO
 # Provides:          firewall
 # Short-Description: Regles iptables
 # Required-Start:    $remote_fs $syslog
 # Required-Stop:     $remote_fs $syslog
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: start/stop firewall
 # Description:       Charge la configuration du pare-feu iptables
 ### END INIT INFO
 
 case "$1" in
 start)
 
 ## purge
 /sbin/iptables -F
 /sbin/iptables -X
 /sbin/iptables -t nat -F
 /sbin/iptables -t nat -X
 /sbin/iptables -t mangle -F
 /sbin/iptables -t mangle -X
 
 # NAT
 /sbin/iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE
 
 # Autorise les connexions deja etablies et localhost
 /sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 /sbin/iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 /sbin/iptables -t filter -A INPUT -i lo -j ACCEPT
 /sbin/iptables -t filter -A OUTPUT -o lo -j ACCEPT

 ### Conf FW
 # VM qui délivre du http/https
 /sbin/iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp -d 94.23.x.x --dport 80 -j DNAT --to 192.168.0.x:80
 /sbin/iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp -d 94.23.x.x --dport 443 -j DNAT --to 192.168.0.x:443

 # VM qui déivre un service DNS
 /sbin/iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp -d 94.23.x.x --dport 53 -j DNAT --to 192.168.x.x:53
 /sbin/iptables -t nat -A PREROUTING -i vmbr0 -p udp -m udp -d 94.23.x.x --dport 53 -j DNAT --to 192.168.x.x:53

 # WebGUI Proxmox (https) ### NE PAS ENLEVER
 /sbin/iptables -A INPUT -p tcp --dport 8006 -j ACCEPT

 # SSH
 #### Accès SSH sur l'Hyperviseur Proxmox #### NE PAS ENLEVER SINON PLUS D'ACCES
 /sbin/iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
 /sbin/iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
 #### VM ####
 /sbin/iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp -d 94.23.x.x --dport 22101 -j DNAT --to 192.168.x.x:22   # Si besoin / Accès SSH a VM101
 /sbin/iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp -d 94.23.x.x --dport 22102 -j DNAT --to 192.168.x.x:22   # Si besoin / Accès SSH a VM102
 /sbin/iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m tcp -d 94.23.x.x --dport 22103 -j DNAT --to 192.168.x.x:22   # Si besoin / Accès SSH a VM103

# HTTP
 /sbin/iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
 /sbin/iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT

 # INTERFACE GRAPHIQUE/WEB de PROXMOX##RTM et etc OVH
 /sbin/iptables -A INPUT -p icmp --source proxy.ovh.net -j ACCEPT
 /sbin/iptables -A INPUT -p icmp --source proxy.p19.ovh.net -j ACCEPT
 /sbin/iptables -A INPUT -p icmp --source proxy.rbx.ovh.net -j ACCEPT
 /sbin/iptables -A INPUT -p icmp --source proxy.rbx2.ovh.net -j ACCEPT
 /sbin/iptables -A INPUT -p icmp --source proxy.gra.ovh.net -j ACCEPT
 /sbin/iptables -A INPUT -p icmp --source a2.ovh.net -j ACCEPT
 /sbin/iptables -A INPUT -p icmp --source proxy.sbg.ovh.net -j ACCEPT
 /sbin/iptables -A INPUT -p icmp --source proxy.bhs.ovh.net -j ACCEPT
 /sbin/iptables -t filter -A INPUT -p icmp --source ping.ovh.net -j ACCEPT

# ICMP (Ping)
 /sbin/iptables -t filter -A INPUT -p icmp -j ACCEPT
 /sbin/iptables -t filter -A OUTPUT -p icmp -j ACCEPT

 ## ipv6
 /sbin/ip6tables -t filter -P INPUT DROP
 /sbin/ip6tables -t filter -P FORWARD ACCEPT
 /sbin/ip6tables -t filter -P OUTPUT DROP

 # Autorise les connexions ddeja etablies t localhost
 /sbin/ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 /sbin/ip6tables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 /sbin/ip6tables -t filter -A INPUT -i lo -j ACCEPT
 /sbin/ip6tables -t filter -A OUTPUT -o lo -j ACCEPT
 
 # ping ipv6
 /sbin/ip6tables -t filter -A INPUT -p ipv6-icmp -j ACCEPT
 /sbin/ip6tables -t filter -A OUTPUT -p ipv6-icmp -j ACCEPT
 
 #port 80 pour apt-get
 /sbin/ip6tables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
 #DNS en sortie
 /sbin/ip6tables -A OUTPUT -p tcp --dport domain -j ACCEPT
 /sbin/ip6tables -A OUTPUT -p udp --dport domain -j ACCEPT
 
 # NTP ipv6 (horloge du serveur) sortie uniquement
 /sbin/ip6tables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
 
 # Mail SMTP
 /sbin/iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT

 # on limite le nombre de demandes de connexions
 /sbin/iptables -A FORWARD -p tcp --syn -m limit --limit 4/second -j ACCEPT
 /sbin/iptables -A FORWARD -p udp -m limit --limit 4/second -j ACCEPT
 /sbin/iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 4/s -j ACCEPT

 # ICMP (Ping)
 /sbin/iptables -t filter -A INPUT -p icmp -j ACCEPT
 /sbin/iptables -t filter -A OUTPUT -p icmp -j ACCEPT
 
 ## ipv6
 /sbin/ip6tables -t filter -P INPUT DROP
 /sbin/ip6tables -t filter -P FORWARD ACCEPT
 /sbin/ip6tables -t filter -P OUTPUT DROP
 
 # Autorise les connexions ddeja etablies t localhost
 /sbin/ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 /sbin/ip6tables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
 /sbin/ip6tables -t filter -A INPUT -i lo -j ACCEPT
 /sbin/ip6tables -t filter -A OUTPUT -o lo -j ACCEPT
 
 # ping ipv6
 /sbin/ip6tables -t filter -A INPUT -p ipv6-icmp -j ACCEPT
 /sbin/ip6tables -t filter -A OUTPUT -p ipv6-icmp -j ACCEPT
 
 #port 80 pour apt-get
 /sbin/ip6tables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
 
 #DNS en sortie
 /sbin/ip6tables -A OUTPUT -p tcp --dport domain -j ACCEPT
 /sbin/ip6tables -A OUTPUT -p udp --dport domain -j ACCEPT
 
 # NTP ipv6 (horloge du serveur) sortie uniquement
 /sbin/ip6tables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
 
 # Bloque tout le trafic
 /sbin/iptables -A INPUT -j DROP
 
 exit 0
 ;;


 stop)
 /sbin/iptables -F
 /sbin/iptables -X
 /sbin/iptables -t nat -F
 /sbin/iptables -t nat -X
 /sbin/iptables -t mangle -F
 /sbin/iptables -t mangle -X
 exit 0
 ;;
 *)
 echo "Usage: /etc/init.d/firewall {start|stop}"
 exit 1
 ;;
 esac

Une fois exécutable,
/etc/init.d/firewall start

ou

/etc/init.d/firewall stop

,
Trackback

no comment untill now

Add your comment now