#!/bin/bash 
##############################################################
#															 #
# Auteurs : Néhémie Barkia & Ilan Marrache & Dorian Rastello #
#															 #
# Date : 11/11/2020 à 17h07									 #
#											                 #
##############################################################

# NOTE : enp2s0 = Carte réseau public
# 		 enp3s2 = Carte réseau privé


# Activer le routage
echo 1 > /proc/sys/net/ipv4/ip_forward

# Nettoyage des règles
# Supprime toutes les règles sur les tables Filter, Nat et Mangle,
# option -F est définie pour flush
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F

# Supprime toutes les chaînes existantes sur les tables Filter, Nat
# et Mangle, option -X pour delete -chain
iptables -t filter -X
iptables -t nat -X
iptables -t mangle -X
# remise à zéro du compteur de paquets, Option -Z
iptables -Z

#---------------------------------#
# Ecriture des règles par défaut  #
#---------------------------------#

#----------
# Table NAT
#----------
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT


#--------------
# Table FILTER
#--------------
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

#---------------------------------------
# Autorisation des communications locales
#---------------------------------------
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT

# Interdiction des prcessus du firewall avec internet
#---------------------------------------
iptables -A INPUT -i enp3s2 -p icmp -j ACCEPT
iptables -A OUTPUT -o enp3s2 -p icmp -j ACCEPT

# Mise en place du NAT
iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE

#Autorisation de suivi de connexions pour tous les ports
#---------------------
# Sur routage laisser sortir
iptables -t filter -A FORWARD -i enp2s0 -o enp3s2 -s 0.0.0.0/0 -d 172.31.0.0/16 -p all -m state -–state RELATED, ESTABLISHED -j ACCEPT	
iptables -t filter -A FORWARD -i enp3s2 -o enp2s0 -s 172.31.0.0/16 -d 0.0.0.0/0 -p all -m state ! -–state INVALID -j ACCEPT

# -------------------------------------------------------------------
# Redirection de port (port forwarding) pour notre serveur Web
# Une requête à destination de l'adresse 10.104.0.2 sur le port 80 sera
# redirigée par le biais du NAT vers le serveur web.
# -------------------------------------------------------------------
#iptables -t nat -A PREROUTING -i enp2s0 -s 0.0.0.0/0 -d 10.104.0.2 -p tcp --dport 80 -m conntrack ! --ctstate INVALID -j DNAT --to-destination 172.31.4.3:80
# Redirection des réponses :
#iptables -t nat -A POSTROUTING -o enp3s2 -s 0.0.0.0/0 -d 172.31.4.3 -p tcp --dport 80 -m conntrack ! --ctstate INVALID -j SNAT --to-source 172.31.4.254

#iptables -t nat -A PREROUTING -i enp2s0 -s 0.0.0.0/0 -d 10.104.0.2 -p tcp --dport 3389 -m conntrack ! --ctstate INVALID -j DNAT --to-destination 10.44.1.100:3389
# Redirection des réponses :
#iptables -t nat -A POSTROUTING -o enp3s2 -s 0.0.0.0/0 -d 10.104.0.2 -p tcp --dport 3389 -m conntrack ! --ctstate INVALID -j SNAT --to-source 10.44.1.100
