iptables.sh 3.7 KB
#!/bin/sh
#########################################################
# Création : Sebastien Le Moal <sebastien@calexium.com>
# Fonction : Autorisé calexium à se connecter au port 22 et 8006 du serveur proxmox
#            Rediriger le reste du trafic vers la VM OPNSense
# Date : Janvier 2018
#########################################################
# ---------
# VARIABLES
# ---------

# Bridge Wan Public
ProxIntPubWAN="eth0" ## Proxmox bridge IP Public
ProxIpPubWAN="163.172.94.226" ## Proxmox IP Public

# Bridge Wan OPNSense
ProxIntOpnsWAN="vmbr1" ## Proxmox bridge WAN OPNsense
NetVmWan="10.10.9.0/24" ## Reseau entre proxmox et OPNsense
ProxIpVmWan="10.10.9.1"  ## Proxmox IP du Reseau entre proxmox et OPNsense
OpnsIPVmWan="10.10.9.2" ## OPNsense wan ip adresse

# Bridge LAN OPNSense
#IntVMLan="vmbr2" ## Proxmox bridge IP Public
#NetVmLan="10.10.10.0/24" ## Réseau VMNET

# Network/Mmask of VpnNET
#VpnNET="10.20.0.0/24"

# ---------------------
# Pré config
# ---------------------
### Supprime les routes existantes
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

### désactiver IPv6
ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP

### Bloquer tout
iptables -P INPUT DROP
iptables -P FORWARD DROP

### On crée des chaines personnalisées pour éviter la répétition des options.
iptables -N TCP
iptables -N UDP
iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP # UDP = ACCEPT / SEND TO THIS CHAIN
iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP # TCP = ACCEPT / SEND TO THIS CHAIN

# ------------
# Regle de base
# ------------
iptables -A INPUT -i lo -j ACCEPT #  permet les communications from/to  de l’interface locale
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # préserve les connections déjà actives
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # préserve les connections déjà actives
iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT #autorise la réponse au ping.

# --------------------
# Regle pour Proxmox bridge IP Public ( ProxIntPubWAN)
# --------------------
### Regle entrante
iptables -A TCP -i $ProxIntPubWAN -d $ProxIpPubWAN -p tcp --dport 22 -s 109.190.201.236/32 -j ACCEPT # Accepte acces SSH server venant de calexium Avon
iptables -A TCP -i $ProxIntPubWAN -d $ProxIpPubWAN -p tcp --dport 8006 -s 109.190.201.236/32 -j ACCEPT # Accepte acces Proxmox WebUI venant de calexium Avon

### Regle de Routage
iptables -A FORWARD -i $ProxIntPubWAN -d $OpnsIPVmWan -o $ProxIntOpnsWAN -j ACCEPT # Autoriser le transfert tcp vers l'interface WAN OPNsense
iptables -A FORWARD -i $ProxIntOpnsWAN -s $NetVmWan -j ACCEPT # Autoriser le transfert de requête à partir du réseau local

### Natter le trafic sortant versInternet (SNAT)
iptables -A POSTROUTING -t nat -s $ProxIpVmWan -j SNAT --to-source $ProxIpPubWAN
iptables -A POSTROUTING -t nat -s $OpnsIPVmWan -j SNAT --to-source $ProxIpPubWAN

### Rediriger le trafic venant d'Internet (NAT)
iptables -A PREROUTING -t nat -i $ProxIntPubWAN -d $ProxIpPubWAN -p tcp --match multiport ! --dports 22,8006 -j DNAT --to $OpnsIPVmWan # tout tcp vers WAN OPNsense WAN sauf le 22 et 8006


# ----------------------
# Regles pour bridge WAN OPNsense (PrxVmWanVBR)
# ----------------------
### Regle entrante
iptables -A TCP -i $ProxIntOpnsWAN -d $ProxIpVmWan -p tcp --dport 22 -s 109.190.201.236/32 -j ACCEPT # Accepte acces SSH server venant de calexium Avon
iptables -A TCP -i $ProxIntOpnsWAN -d $ProxIpVmWan -p tcp --dport 8006 -s 109.190.201.236/32 -j ACCEPT # Accepte acces Proxmox WebUI venant de calexium Avon

# -----------------------
# Regle pour Proxmox bridge LAN VM (PrxVmPrivVBR)
# -----------------------
# NO RULES => Tout est bloqué !!!