diff --git a/sisr1/tp08/firewall_regles.txt b/sisr1/tp08/Original rules/firewall_compiled.txt similarity index 100% rename from sisr1/tp08/firewall_regles.txt rename to sisr1/tp08/Original rules/firewall_compiled.txt diff --git a/sisr1/tp08/Progressive Rules/firewall_1-2 b/sisr1/tp08/Progressive Rules/firewall_1-2 new file mode 100644 index 0000000..2bcdc78 --- /dev/null +++ b/sisr1/tp08/Progressive Rules/firewall_1-2 @@ -0,0 +1,76 @@ +# Définition des interfaces avec un nom +define netif = enp0s3 +define dmzif = enp0s8 +define lanif = enp0s9 + +# Définition des réseaux +define dmz-ntw = 172.17.0.0/24 +define lan-ntw = 172.16.0.0/24 +define net-ntw = 192.168.0.0/24 + +# Définition des IPs du pare-feu +define firewall-net = 192.168.0.120 +define firewall-lan = 172.16.0.254 +define firewall-dmz = 172.17.0.254 + +# Définition des choses importantes - Vérifier comment les commentaires en fin de ligne fonctionnent +define proxy-dns = 172.17.0.1 # IP de srv-dmz +define dns-school = {10.121.38.7 , 10.121.38.8} # Serveurs DNS du lycée +define portproxy = 1080 # Port utilisé par le proxy qu'on va configurer +define dhcp = 172.16.0.1 # IP de srv-service +define pcsecure = 172.16.0.10 # IP de pc-secure +define router = 192.168.0.1 # IP de GWSIO +define lan-dhcp = 172.16.0.100-172.16.0.200 # IPs utilisées en plage DHCP + +# Début des tables et des chaînes + +table ip ipfilter { + + chain prerouting { + type filter hook prerouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + } + + chain system_in { + type filter hook input priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + } + + chain routing { + type filter hook forward priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + } + + chain system_out { + type filter hook output priority filter; policy drop; + } + + chain postrouting { + type filter hook postrouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + } +} \ No newline at end of file diff --git a/sisr1/tp08/Progressive Rules/firewall_3 b/sisr1/tp08/Progressive Rules/firewall_3 new file mode 100644 index 0000000..b4a8a59 --- /dev/null +++ b/sisr1/tp08/Progressive Rules/firewall_3 @@ -0,0 +1,82 @@ +# Définition des interfaces avec un nom +define netif = enp0s3 +define dmzif = enp0s8 +define lanif = enp0s9 + +# Définition des réseaux +define dmz-ntw = 172.17.0.0/24 +define lan-ntw = 172.16.0.0/24 +define net-ntw = 192.168.0.0/24 + +# Définition des IPs du pare-feu +define firewall-net = 192.168.0.120 +define firewall-lan = 172.16.0.254 +define firewall-dmz = 172.17.0.254 + +# Définition des choses importantes - Vérifier comment les commentaires en fin de ligne fonctionnent +define proxy-dns = 172.17.0.1 # IP de srv-dmz +define dns-school = {10.121.38.7 , 10.121.38.8} # Serveurs DNS du lycée +define portproxy = 1080 # Port utilisé par le proxy qu'on va configurer +define dhcp = 172.16.0.1 # IP de srv-service +define pcsecure = 172.16.0.10 # IP de pc-secure +define router = 192.168.0.1 # IP de GWSIO +define lan-dhcp = 172.16.0.100-172.16.0.200 # IPs utilisées en plage DHCP + +# Début des tables et des chaînes + +table ip ipfilter { + + chain prerouting { + type filter hook prerouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + } + + chain system_in { + type filter hook input priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + } + + chain routing { + type filter hook forward priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + } + + chain system_out { + type filter hook output priority filter; policy drop; + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + } + + chain postrouting { + type filter hook postrouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + } +} \ No newline at end of file diff --git a/sisr1/tp08/Progressive Rules/firewall_4 b/sisr1/tp08/Progressive Rules/firewall_4 new file mode 100644 index 0000000..3c6a6a5 --- /dev/null +++ b/sisr1/tp08/Progressive Rules/firewall_4 @@ -0,0 +1,107 @@ +# Définition des interfaces avec un nom +define netif = enp0s3 +define dmzif = enp0s8 +define lanif = enp0s9 + +# Définition des réseaux +define dmz-ntw = 172.17.0.0/24 +define lan-ntw = 172.16.0.0/24 +define net-ntw = 192.168.0.0/24 + +# Définition des IPs du pare-feu +define firewall-net = 192.168.0.120 +define firewall-lan = 172.16.0.254 +define firewall-dmz = 172.17.0.254 + +# Définition des choses importantes - Vérifier comment les commentaires en fin de ligne fonctionnent +define proxy-dns = 172.17.0.1 # IP de srv-dmz +define dns-school = {10.121.38.7 , 10.121.38.8} # Serveurs DNS du lycée +define portproxy = 1080 # Port utilisé par le proxy qu'on va configurer +define dhcp = 172.16.0.1 # IP de srv-service +define pcsecure = 172.16.0.10 # IP de pc-secure +define router = 192.168.0.1 # IP de GWSIO +define lan-dhcp = 172.16.0.100-172.16.0.200 # IPs utilisées en plage DHCP + +# Début des tables et des chaînes + +table ip ipfilter { + + chain prerouting { + type filter hook prerouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Accepte les réponses ping pour l'étape 4 + icmp type echo-reply accept + + + } + + chain system_in { + type filter hook input priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Accepte les réponses ping pour l'étape 4 + icmp type echo-reply accept + } + + chain routing { + type filter hook forward priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + } + + chain system_out { + type filter hook output priority filter; policy drop; + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + + #Autorise le pare-feu à faire des pings vers toutes les machines, étape 4 - A vérifier + icmp type echo-request ip saddr {$firewall-net, $firewall-lan, $firewall-dmz} accept + } + + chain postrouting { + type filter hook postrouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise le pare-feu à faire des pings vers toutes les machines, étape 4 - A vérifier + icmp type echo-request ip saddr {$firewall-net, $firewall-lan, $firewall-dmz} accept + } +} \ No newline at end of file diff --git a/sisr1/tp08/Progressive Rules/firewall_5 b/sisr1/tp08/Progressive Rules/firewall_5 new file mode 100644 index 0000000..ab3418d --- /dev/null +++ b/sisr1/tp08/Progressive Rules/firewall_5 @@ -0,0 +1,162 @@ +# Définition des interfaces avec un nom +define netif = enp0s3 +define dmzif = enp0s8 +define lanif = enp0s9 + +# Définition des réseaux +define dmz-ntw = 172.17.0.0/24 +define lan-ntw = 172.16.0.0/24 +define net-ntw = 192.168.0.0/24 + +# Définition des IPs du pare-feu +define firewall-net = 192.168.0.120 +define firewall-lan = 172.16.0.254 +define firewall-dmz = 172.17.0.254 + +# Définition des choses importantes - Vérifier comment les commentaires en fin de ligne fonctionnent +define proxy-dns = 172.17.0.1 # IP de srv-dmz +define dns-school = {10.121.38.7 , 10.121.38.8} # Serveurs DNS du lycée +define portproxy = 1080 # Port utilisé par le proxy qu'on va configurer +define dhcp = 172.16.0.1 # IP de srv-service +define pcsecure = 172.16.0.10 # IP de pc-secure +define router = 192.168.0.1 # IP de GWSIO +define lan-dhcp = 172.16.0.100-172.16.0.200 # IPs utilisées en plage DHCP + +# Début des tables et des chaînes + +table ip ipfilter { + + chain prerouting { + type filter hook prerouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Accepte les réponses ping pour l'étape 4 + icmp type echo-reply accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + } + + chain system_in { + type filter hook input priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Accepte les réponses ping pour l'étape 4 + icmp type echo-reply accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + } + + chain routing { + type filter hook forward priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + } + + chain system_out { + type filter hook output priority filter; policy drop; + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + + #Autorise le pare-feu à faire des pings vers toutes les machines, étape 4 - A vérifier + icmp type echo-request ip saddr {$firewall-net, $firewall-lan, $firewall-dmz} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + } + + chain postrouting { + type filter hook postrouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise le pare-feu à faire des pings vers toutes les machines, étape 4 - A vérifier + icmp type echo-request ip saddr {$firewall-net, $firewall-lan, $firewall-dmz} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + } +} \ No newline at end of file diff --git a/sisr1/tp08/Progressive Rules/firewall_6 b/sisr1/tp08/Progressive Rules/firewall_6 new file mode 100644 index 0000000..44897a6 --- /dev/null +++ b/sisr1/tp08/Progressive Rules/firewall_6 @@ -0,0 +1,169 @@ +# Définition des interfaces avec un nom +define netif = enp0s3 +define dmzif = enp0s8 +define lanif = enp0s9 + +# Définition des réseaux +define dmz-ntw = 172.17.0.0/24 +define lan-ntw = 172.16.0.0/24 +define net-ntw = 192.168.0.0/24 + +# Définition des IPs du pare-feu +define firewall-net = 192.168.0.120 +define firewall-lan = 172.16.0.254 +define firewall-dmz = 172.17.0.254 + +# Définition des choses importantes - Vérifier comment les commentaires en fin de ligne fonctionnent +define proxy-dns = 172.17.0.1 # IP de srv-dmz +define dns-school = {10.121.38.7 , 10.121.38.8} # Serveurs DNS du lycée +define portproxy = 1080 # Port utilisé par le proxy qu'on va configurer +define dhcp = 172.16.0.1 # IP de srv-service +define pcsecure = 172.16.0.10 # IP de pc-secure +define router = 192.168.0.1 # IP de GWSIO +define lan-dhcp = 172.16.0.100-172.16.0.200 # IPs utilisées en plage DHCP + +# Début des tables et des chaînes + +table ip ipfilter { + + chain prerouting { + type filter hook prerouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Accepte les réponses ping pour l'étape 4 + icmp type echo-reply accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes DNS depuis le serveur proxy vers sio.lan (gwsio) (étape 6) + tcp dport 53 ip saddr $proxy-dns ip daddr $router accept + } + + chain system_in { + type filter hook input priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Accepte les réponses ping pour l'étape 4 + icmp type echo-reply accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + } + + chain routing { + type filter hook forward priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes DNS depuis le serveur proxy vers sio.lan (gwsio) (étape 6) + tcp dport 53 ip saddr $proxy-dns ip daddr $router accept + } + + chain system_out { + type filter hook output priority filter; policy drop; + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + + #Autorise le pare-feu à faire des pings vers toutes les machines, étape 4 - A vérifier + icmp type echo-request ip saddr {$firewall-net, $firewall-lan, $firewall-dmz} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + } + + chain postrouting { + type filter hook postrouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise le pare-feu à faire des pings vers toutes les machines, étape 4 - A vérifier + icmp type echo-request ip saddr {$firewall-net, $firewall-lan, $firewall-dmz} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes DNS depuis le serveur proxy vers sio.lan (gwsio) (étape 6) + tcp dport 53 ip saddr $proxy-dns ip daddr $router accept + } +} \ No newline at end of file diff --git a/sisr1/tp08/Progressive Rules/firewall_7 b/sisr1/tp08/Progressive Rules/firewall_7 new file mode 100644 index 0000000..0394de0 --- /dev/null +++ b/sisr1/tp08/Progressive Rules/firewall_7 @@ -0,0 +1,181 @@ +# Définition des interfaces avec un nom +define netif = enp0s3 +define dmzif = enp0s8 +define lanif = enp0s9 + +# Définition des réseaux +define dmz-ntw = 172.17.0.0/24 +define lan-ntw = 172.16.0.0/24 +define net-ntw = 192.168.0.0/24 + +# Définition des IPs du pare-feu +define firewall-net = 192.168.0.120 +define firewall-lan = 172.16.0.254 +define firewall-dmz = 172.17.0.254 + +# Définition des choses importantes - Vérifier comment les commentaires en fin de ligne fonctionnent +define proxy-dns = 172.17.0.1 # IP de srv-dmz +define dns-school = {10.121.38.7 , 10.121.38.8} # Serveurs DNS du lycée +define portproxy = 1080 # Port utilisé par le proxy qu'on va configurer +define dhcp = 172.16.0.1 # IP de srv-service +define pcsecure = 172.16.0.10 # IP de pc-secure +define router = 192.168.0.1 # IP de GWSIO +define lan-dhcp = 172.16.0.100-172.16.0.200 # IPs utilisées en plage DHCP + +# Début des tables et des chaînes + +table ip ipfilter { + + chain prerouting { + type filter hook prerouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Accepte les réponses ping pour l'étape 4 + icmp type echo-reply accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes DNS depuis le serveur proxy vers sio.lan (gwsio) (étape 6) + tcp dport 53 ip saddr $proxy-dns ip daddr $router accept + + #Autorise les requêtes vers internet si elles viennent du serveur proxy (étape 7) - A vérifier + ip saddr $proxy-dns daddr $router accept + } + + chain system_in { + type filter hook input priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Accepte les réponses ping pour l'étape 4 + icmp type echo-reply accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes vers internet si elles viennent du serveur proxy (étape 7) - A vérifier + ip saddr $proxy-dns daddr $router accept + } + + chain routing { + type filter hook forward priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes DNS depuis le serveur proxy vers sio.lan (gwsio) (étape 6) + tcp dport 53 ip saddr $proxy-dns ip daddr $router accept + + #Autorise les requêtes vers internet si elles viennent du serveur proxy (étape 7) - A vérifier + ip saddr $proxy-dns daddr $router accept + } + + chain system_out { + type filter hook output priority filter; policy drop; + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + + #Autorise le pare-feu à faire des pings vers toutes les machines, étape 4 - A vérifier + icmp type echo-request ip saddr {$firewall-net, $firewall-lan, $firewall-dmz} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + } + + chain postrouting { + type filter hook postrouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise le pare-feu à faire des pings vers toutes les machines, étape 4 - A vérifier + icmp type echo-request ip saddr {$firewall-net, $firewall-lan, $firewall-dmz} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes DNS depuis le serveur proxy vers sio.lan (gwsio) (étape 6) + tcp dport 53 ip saddr $proxy-dns ip daddr $router accept + + #Autorise les requêtes vers internet si elles viennent du serveur proxy (étape 7) - A vérifier + ip saddr $proxy-dns daddr $router accept + } +} \ No newline at end of file diff --git a/sisr1/tp08/Progressive Rules/firewall_8-9 b/sisr1/tp08/Progressive Rules/firewall_8-9 new file mode 100644 index 0000000..9e18da3 --- /dev/null +++ b/sisr1/tp08/Progressive Rules/firewall_8-9 @@ -0,0 +1,201 @@ +# Définition des interfaces avec un nom +define netif = enp0s3 +define dmzif = enp0s8 +define lanif = enp0s9 + +# Définition des réseaux +define dmz-ntw = 172.17.0.0/24 +define lan-ntw = 172.16.0.0/24 +define net-ntw = 192.168.0.0/24 + +# Définition des IPs du pare-feu +define firewall-net = 192.168.0.120 +define firewall-lan = 172.16.0.254 +define firewall-dmz = 172.17.0.254 + +# Définition des choses importantes - Vérifier comment les commentaires en fin de ligne fonctionnent +define proxy-dns = 172.17.0.1 # IP de srv-dmz +define dns-school = {10.121.38.7 , 10.121.38.8} # Serveurs DNS du lycée +define portproxy = 1080 # Port utilisé par le proxy qu'on va configurer +define dhcp = 172.16.0.1 # IP de srv-service +define pcsecure = 172.16.0.10 # IP de pc-secure +define router = 192.168.0.1 # IP de GWSIO +define lan-dhcp = 172.16.0.100-172.16.0.200 # IPs utilisées en plage DHCP + +# Début des tables et des chaînes + +table ip ipfilter { + + chain prerouting { + type filter hook prerouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Accepte les réponses ping pour l'étape 4 + icmp type echo-reply accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes DNS depuis le serveur proxy vers sio.lan (gwsio) (étape 6) + tcp dport 53 ip saddr $proxy-dns ip daddr $router accept + + #Autorise les requêtes vers internet si elles viennent du serveur proxy (étape 7) - A vérifier + ip saddr $proxy-dns daddr $router accept + } + + chain system_in { + type filter hook input priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH, étape 2 + tcp dport 22 iif $firewall-net accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Accepte les réponses ping pour l'étape 4 + icmp type echo-reply accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes vers internet si elles viennent du serveur proxy (étape 7) - A vérifier + ip saddr $proxy-dns daddr $router accept + } + + chain routing { + type filter hook forward priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes DNS depuis le serveur proxy vers sio.lan (gwsio) (étape 6) + tcp dport 53 ip saddr $proxy-dns ip daddr $router accept + + #Autorise les requêtes vers internet si elles viennent du serveur proxy (étape 7) - A vérifier + ip saddr $proxy-dns daddr $router accept + } + + chain system_out { + type filter hook output priority filter; policy drop; + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + + #Autorise le pare-feu à faire des pings vers toutes les machines, étape 4 - A vérifier + icmp type echo-request ip saddr {$firewall-net, $firewall-lan, $firewall-dmz} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + } + + chain postrouting { + type filter hook postrouting priority filter; policy drop; + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Refuse les paquets sans états/qui viennent d'une connexion inconnue + ct state invalid, untracked drop + + #Autorise le SSH à destination de srv-dmz et srv-service si la requête vient du firewall, étape 3 - A vérifier + tcp sport 22 ip saddr {$firewall-dmz, $firewall-lan} ip daddr {$proxy-dns, $dhcp} accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ, étape 4 + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise le pare-feu à faire des pings vers toutes les machines, étape 4 - A vérifier + icmp type echo-request ip saddr {$firewall-net, $firewall-lan, $firewall-dmz} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN (étape 5) - A vérifier + tcp dport {$portproxy} ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les requêtes DNS venant de la LAN (étape 5) - A vérifier + udp dport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + udp sport 53 ip saddr $lan-ntw ip daddr $proxy-dns accept + + #Autorise les réponses DNS allant vers la LAN (étape 5) - A vérifier, expérimental + udp dport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + udp sport 53 ip daddr $lan-ntw ip saddr $proxy-dns accept + + #Autorise les requêtes DNS depuis le serveur proxy vers sio.lan (gwsio) (étape 6) + tcp dport 53 ip saddr $proxy-dns ip daddr $router accept + + #Autorise les requêtes vers internet si elles viennent du serveur proxy (étape 7) - A vérifier + ip saddr $proxy-dns daddr $router accept + } + + +# Chaînes pour la NAT - étape 8 et 9. + + chain nat_prerouting { + type nat hook prerouting priority filter; policy accept;* + + # Port Forwarding pour le DNS, entre pare-feu et DMZ (étape 9) + iif eth0 udp dport 53 dnat to $proxy-dns + iif eth0 tcp dport 53 dnat to $proxy-dns + + } + + chain nat_postrouting { + type nat hook postrouting priority filter; policy accept; + + # Masquage des adresses IP de la DMZ via NAT (étape 8) + ip saddr $dmz-ntw snat $firewall-net + + } +} \ No newline at end of file