From 0a97ad7166fd5cedca2079dbfa7d55697775d53c Mon Sep 17 00:00:00 2001 From: Jarod Pauchet Date: Mon, 8 Apr 2024 11:43:13 +0200 Subject: [PATCH] =?UTF-8?q?=09modifi=C3=A9=C2=A0:=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20siotp/sisr1/TP7/scriptsnft/current=5Fruleset.nft=20=09nouvea?= =?UTF-8?q?u=20fichier=C2=A0:=20siotp/sisr1/TP7/scriptsnft/fw=5Fpart7.nft?= =?UTF-8?q?=20=09nouveau=20fichier=C2=A0:=20siotp/sisr1/TP7/scriptsnft/old?= =?UTF-8?q?-current=5Fruleset.nft?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sisr1/TP7/scriptsnft/current_ruleset.nft | 195 +++++++++++++--- siotp/sisr1/TP7/scriptsnft/fw_part7.nft | 215 ++++++++++++++++++ .../TP7/scriptsnft/old-current_ruleset.nft | 106 +++++++++ 3 files changed, 479 insertions(+), 37 deletions(-) create mode 100644 siotp/sisr1/TP7/scriptsnft/fw_part7.nft create mode 100644 siotp/sisr1/TP7/scriptsnft/old-current_ruleset.nft diff --git a/siotp/sisr1/TP7/scriptsnft/current_ruleset.nft b/siotp/sisr1/TP7/scriptsnft/current_ruleset.nft index a2377ea..dbd0eb9 100644 --- a/siotp/sisr1/TP7/scriptsnft/current_ruleset.nft +++ b/siotp/sisr1/TP7/scriptsnft/current_ruleset.nft @@ -1,94 +1,215 @@ +# Définition des interfaces avec un nom define netif = enp0s3 define dmzif = enp0s8 define lanif = enp0s9 -define firewall = 192.168.0.140 +# Définition de l'IP du serveur web +define srv = 172.16.0.1 + +# Définition du réseau LAN +define lan-ntw = 10.0.0.0/24 + +# Définition de l'IP du proxy, du DNS, du port du proxy et du réseau DMZ pour ne pas à tout retaper +define proxy = 10.121.38.1 +define dns = {10.121.38.7 , 10.121.38.8} +define proxyport = 8080 +define dmznet = 172.16.0.1-172.16.0.254 + +# Définition des IPs des cartes de la machine firewall +define firewall = 192.168.0.120 define ipdmz = 172.16.0.254 define iplan = 10.0.0.254 -define lan-ntw = 10.0.0.0/24 - -define dns-server = {10.121.38.7 , 10.121.38.8} - -define proxy-lyc = 10.121.38.1 -define proxy-port = 8080 - table ip ipfilter{ + chain prerouting { type filter hook prerouting priority filter; policy drop; - icmp type echo-reply accept + + #Permet le passage des réponses aux requêtes acceptées ct state established, related accept - icmp type echo-request iif {$lanif} ip daddr 172.16.0.1-172.16.0.254 accept + + #Accepte les réponses ping + icmp type echo-reply accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ + icmp type echo-request iif {$lanif} ip daddr $dmznet accept + + #Même chose que plus haut, mais à destination de l'IP de la carte LAN du firewall icmp type echo-request iif {$lanif} ip daddr {$iplan} accept - tcp dport 20 accept + + #Autorise les requêtes ayant pour port de destination les ports FTP + tcp dport 20 accept tcp dport 21 accept - tcp dport {80, 443} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN + tcp dport {80, 443} ip saddr $lan-ntw accept + tcp sport {80, 443} ip saddr $lan-ntw accept + + #Autorise le SSH tcp dport 22 accept - ip saddr $proxy-lyc tcp dport {80, 443} accept - ct state {established,related} accept - tcp sport {80,443} ip saddr $lan-ntw accept - tcp dport {80,443} ip saddr $lan-ntw accept + + #Autorise les requêtes DNS depuis la DMZ et le LAN + udp sport 53 iif {$dmzif, $lanif} accept + udp dport 53 accept + + #Autorise les requêtes provenant du proxy avec ports HTTP/HTTPS + ip saddr $proxy tcp dport {80, 443} accept + + #Autorise les requêtes qui vont vers le serveur DNS + ip daddr $dns accept } chain system_in { type filter hook input priority filter; policy drop; - icmp type echo-reply accept - icmp type echo-request iif {$lanif} accept + + #Permet le passage des réponses aux requêtes acceptées ct state established, related accept + + #Accepte les réponses ping + icmp type echo-reply accept + + #Accepte les requêtes de ping si elles viennent du LAN + icmp type echo-request iif {$lanif} accept + + #Autorise les requêtes ayant pour port de destination les ports FTP tcp dport 20 accept tcp dport 21 accept + + #Autorise les requêtes HTTP/HTTPS tcp dport {80, 443} accept + + #Autorise le SSH tcp dport 22 accept - ip saddr $proxy-lyc tcp dport {80, 443} accept + + #Autorise les requêtes DNS + udp sport 53 accept + udp dport 53 accept + + #Autorise les requêtes provenant du proxy avec ports HTTP/HTTPS + ip saddr $proxy tcp dport {80, 443} 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 + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Même chose que plus haut, mais à destination de l'IP de la carte LAN du firewall icmp type echo-reply iif {$dmzif} oif {$lanif} accept - ct state {established,related} accept - tcp sport {80,443} ip saddr $lan-ntw accept - tcp dport {80,443} ip saddr $lan-ntw accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN + tcp dport {80, 443} ip saddr $lan-ntw accept + tcp sport {80, 443} ip saddr $lan-ntw accept + + #Autorise le port forwarding pour la DMZ pour HTTP/HTTPS + tcp dport {80, 443} ip saddr $srv accept + + #Autorise les requêtes DNS depuis la DMZ et le LAN + udp sport 53 iif {$lanif, $dmzif} accept + udp dport 53 accept + + #Autorise les requêtes qui vont vers le serveur DNS + ip daddr $dns accept } chain system_out { type filter hook output priority filter; policy drop; - ip daddr $dns-server accept - ip daddr $proxy-lyc tcp dport $proxy-port accept + + #Autorise les requêtes qui vont vers le serveur DNS + ip daddr $dns accept + + #Autorise les requêtes provenant du proxy, depuis le port 8080 + ip daddr $proxy tcp dport $proxyport accept + + #Accepte les requêtes de ping si elles viennent du LAN icmp type echo-reply oif {$lanif} accept + + #Accepte les requêtes ping icmp type echo-request accept + + #Autorise les requêtes ayant pour port de destination les ports FTP tcp dport 20 accept tcp sport 20 accept tcp dport 21 accept tcp sport 21 accept + + #Autorise les requêtes provenant des ports HTTP/HTTPS tcp dport {80, 443} accept tcp sport {80, 443} accept + + #Autorise le SSH tcp sport 22 accept + + #Autorise les requêtes DNS + udp sport 53 accept + udp dport 53 accept } + chain postrouting { type filter hook postrouting priority filter; policy drop; - ip daddr $dns-server accept - ip daddr $proxy-lyc tcp dport $proxy-port accept + + #Permet le passage des réponses aux requêtes acceptées + ct state established, related accept + + #Autorise les requêtes qui vont vers le serveur DNS + ip daddr $dns accept + + #Autorise les requêtes allant vers le proxy avec le port 8080 + ip daddr $proxy tcp dport $proxyport accept + + #Autorise les requêtes ping venant des cartes LAN, DMZ et la carte en pont du firewall icmp type echo-request ip saddr {$iplan, $ipdmz, $firewall} accept + + #Autorise les réponses ping si elles viennent de la DMZ à destination du LAN icmp type echo-reply iif {$dmzif} oif {$lanif} accept + + #Autorise les requêtes ping venant de la LAN à destination de la DMZ icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise les requêtes ping ayant le LAN pour origine, à destination de la carte LAN du firewall icmp type echo-request ip saddr $iplan oif $lanif accept + + #Autorise les requêtes FTP tcp dport 20 accept tcp sport 20 accept tcp dport 21 accept tcp sport 21 accept + + #Autorise les requêtes ayant pour ports HTTP et HTTPS comme ports de destination et de source tcp dport {80, 443} accept - tcp sport {80, 443} accept + tcp sport {80, 443} accept + + #Autorise le SSH tcp sport 22 accept - ct state {established,related} accept - } -} -table ip nat { - chain prerouting { - type nat hook prerouting priority filter; policy accept; + + #Autorise les requêtes DNS + udp sport 53 accept + udp dport 53 accept + + #Autorise les requêtes provenant du DNS + ip daddr $dns accept } - chain postrouting { - type nat hook postrouting priority filter; policy accept; - ip saddr $lan-ntw oif $netif snat $firewall + chain pre_nat { + type nat hook prerouting priority filter; policy accept; + + #Autorise les requêtes HTTP vers la carte LAN du firewall + tcp dport 80 ip daddr $firewall dnat $srv:80 + #Même chose mais pour HTTPS + tcp dport 443 ip daddr $firewall dnat $srv:443 } -} + + chain post_nat { + type nat hook postrouting priority filter; policy accept; + + #Autorise la NAT à destination du firewall si la requête vient du LAN et part vers Internet + ip saddr $lan-ntw oif $netif snat $firewall + + #Même chose, mais si la requête provient de la DMZ + ip saddr $dmznet oif $netif snat $firewall + } + } diff --git a/siotp/sisr1/TP7/scriptsnft/fw_part7.nft b/siotp/sisr1/TP7/scriptsnft/fw_part7.nft new file mode 100644 index 0000000..dbd0eb9 --- /dev/null +++ b/siotp/sisr1/TP7/scriptsnft/fw_part7.nft @@ -0,0 +1,215 @@ +# Définition des interfaces avec un nom +define netif = enp0s3 +define dmzif = enp0s8 +define lanif = enp0s9 + +# Définition de l'IP du serveur web +define srv = 172.16.0.1 + +# Définition du réseau LAN +define lan-ntw = 10.0.0.0/24 + +# Définition de l'IP du proxy, du DNS, du port du proxy et du réseau DMZ pour ne pas à tout retaper +define proxy = 10.121.38.1 +define dns = {10.121.38.7 , 10.121.38.8} +define proxyport = 8080 +define dmznet = 172.16.0.1-172.16.0.254 + +# Définition des IPs des cartes de la machine firewall +define firewall = 192.168.0.120 +define ipdmz = 172.16.0.254 +define iplan = 10.0.0.254 + +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 + + #Accepte les réponses ping + icmp type echo-reply accept + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ + icmp type echo-request iif {$lanif} ip daddr $dmznet accept + + #Même chose que plus haut, mais à destination de l'IP de la carte LAN du firewall + icmp type echo-request iif {$lanif} ip daddr {$iplan} accept + + #Autorise les requêtes ayant pour port de destination les ports FTP + tcp dport 20 accept + tcp dport 21 accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN + tcp dport {80, 443} ip saddr $lan-ntw accept + tcp sport {80, 443} ip saddr $lan-ntw accept + + #Autorise le SSH + tcp dport 22 accept + + #Autorise les requêtes DNS depuis la DMZ et le LAN + udp sport 53 iif {$dmzif, $lanif} accept + udp dport 53 accept + + #Autorise les requêtes provenant du proxy avec ports HTTP/HTTPS + ip saddr $proxy tcp dport {80, 443} accept + + #Autorise les requêtes qui vont vers le serveur DNS + ip daddr $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 + + #Accepte les réponses ping + icmp type echo-reply accept + + #Accepte les requêtes de ping si elles viennent du LAN + icmp type echo-request iif {$lanif} accept + + #Autorise les requêtes ayant pour port de destination les ports FTP + tcp dport 20 accept + tcp dport 21 accept + + #Autorise les requêtes HTTP/HTTPS + tcp dport {80, 443} accept + + #Autorise le SSH + tcp dport 22 accept + + #Autorise les requêtes DNS + udp sport 53 accept + udp dport 53 accept + + #Autorise les requêtes provenant du proxy avec ports HTTP/HTTPS + ip saddr $proxy tcp dport {80, 443} 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 + + #Accepte les requêtes de ping si elles viennent du LAN, à destination de la DMZ + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Même chose que plus haut, mais à destination de l'IP de la carte LAN du firewall + icmp type echo-reply iif {$dmzif} oif {$lanif} accept + + #Autorise les requêtes HTTP/HTTPS venant de la LAN + tcp dport {80, 443} ip saddr $lan-ntw accept + tcp sport {80, 443} ip saddr $lan-ntw accept + + #Autorise le port forwarding pour la DMZ pour HTTP/HTTPS + tcp dport {80, 443} ip saddr $srv accept + + #Autorise les requêtes DNS depuis la DMZ et le LAN + udp sport 53 iif {$lanif, $dmzif} accept + udp dport 53 accept + + #Autorise les requêtes qui vont vers le serveur DNS + ip daddr $dns accept + } + + chain system_out { + type filter hook output priority filter; policy drop; + + #Autorise les requêtes qui vont vers le serveur DNS + ip daddr $dns accept + + #Autorise les requêtes provenant du proxy, depuis le port 8080 + ip daddr $proxy tcp dport $proxyport accept + + #Accepte les requêtes de ping si elles viennent du LAN + icmp type echo-reply oif {$lanif} accept + + #Accepte les requêtes ping + icmp type echo-request accept + + #Autorise les requêtes ayant pour port de destination les ports FTP + tcp dport 20 accept + tcp sport 20 accept + tcp dport 21 accept + tcp sport 21 accept + + #Autorise les requêtes provenant des ports HTTP/HTTPS + tcp dport {80, 443} accept + tcp sport {80, 443} accept + + #Autorise le SSH + tcp sport 22 accept + + #Autorise les requêtes DNS + udp sport 53 accept + udp dport 53 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 + + #Autorise les requêtes qui vont vers le serveur DNS + ip daddr $dns accept + + #Autorise les requêtes allant vers le proxy avec le port 8080 + ip daddr $proxy tcp dport $proxyport accept + + #Autorise les requêtes ping venant des cartes LAN, DMZ et la carte en pont du firewall + icmp type echo-request ip saddr {$iplan, $ipdmz, $firewall} accept + + #Autorise les réponses ping si elles viennent de la DMZ à destination du LAN + icmp type echo-reply iif {$dmzif} oif {$lanif} accept + + #Autorise les requêtes ping venant de la LAN à destination de la DMZ + icmp type echo-request iif {$lanif} oif {$dmzif} accept + + #Autorise les requêtes ping ayant le LAN pour origine, à destination de la carte LAN du firewall + icmp type echo-request ip saddr $iplan oif $lanif accept + + #Autorise les requêtes FTP + tcp dport 20 accept + tcp sport 20 accept + tcp dport 21 accept + tcp sport 21 accept + + #Autorise les requêtes ayant pour ports HTTP et HTTPS comme ports de destination et de source + tcp dport {80, 443} accept + tcp sport {80, 443} accept + + #Autorise le SSH + tcp sport 22 accept + + #Autorise les requêtes DNS + udp sport 53 accept + udp dport 53 accept + + #Autorise les requêtes provenant du DNS + ip daddr $dns accept + } + + chain pre_nat { + type nat hook prerouting priority filter; policy accept; + + #Autorise les requêtes HTTP vers la carte LAN du firewall + tcp dport 80 ip daddr $firewall dnat $srv:80 + #Même chose mais pour HTTPS + tcp dport 443 ip daddr $firewall dnat $srv:443 + } + + chain post_nat { + type nat hook postrouting priority filter; policy accept; + + #Autorise la NAT à destination du firewall si la requête vient du LAN et part vers Internet + ip saddr $lan-ntw oif $netif snat $firewall + + #Même chose, mais si la requête provient de la DMZ + ip saddr $dmznet oif $netif snat $firewall + } + } diff --git a/siotp/sisr1/TP7/scriptsnft/old-current_ruleset.nft b/siotp/sisr1/TP7/scriptsnft/old-current_ruleset.nft new file mode 100644 index 0000000..c17b11c --- /dev/null +++ b/siotp/sisr1/TP7/scriptsnft/old-current_ruleset.nft @@ -0,0 +1,106 @@ +define netif = enp0s3 +define dmzif = enp0s8 +define lanif = enp0s9 + +define firewall = 192.168.0.140 +define ipdmz = 172.16.0.254 +define iplan = 10.0.0.254 +define ipsrvweb = 172.16.0.1 + +define dmznet = 172.16.0.1-172.16.0.254 +define lan-ntw = 10.0.0.0/24 + +define dns-server = {10.121.38.7 , 10.121.38.8} + +define proxy-lyc = 10.121.38.1 +define proxy-port = 8080 + +table ip ipfilter{ + chain prerouting { + type filter hook prerouting priority filter; policy drop; + icmp type echo-reply accept + ct state established, related accept + icmp type echo-request iif {$lanif} ip daddr 172.16.0.1-172.16.0.254 accept + icmp type echo-request iif {$lanif} ip daddr {$iplan} accept + tcp dport 20 accept + tcp dport 21 accept + tcp dport {80, 443} accept + tcp dport 22 accept + ip saddr $proxy-lyc tcp dport {80, 443} accept + ct state {established,related} accept + tcp sport {80,443} ip saddr $lan-ntw accept + tcp dport {80,443} ip saddr $lan-ntw accept + udp dport 53 accept + } + + chain system_in { + type filter hook input priority filter; policy drop; + icmp type echo-reply accept + icmp type echo-request iif {$lanif} accept + ct state established, related accept + tcp dport 20 accept + tcp dport 21 accept + tcp dport {80, 443} accept + tcp dport 22 accept + ip saddr $proxy-lyc tcp dport {80, 443} accept + } + chain routing { + type filter hook forward priority filter; policy drop; + icmp type echo-request iif {$lanif} oif {$dmzif} accept + icmp type echo-reply iif {$dmzif} oif {$lanif} accept + ct state {established,related} accept + tcp sport {80,443} ip saddr $lan-ntw accept + tcp dport {80,443} ip saddr $lan-ntw accept + udp dport 53 iif {$lanif, $dmzif} accept + # http et https vers srvweb + tcp dport {80, 443} ip daddr $ipsrvweb accept + } + + chain system_out { + type filter hook output priority filter; policy drop; + ip daddr $dns-server accept + ip daddr $proxy-lyc tcp dport $proxy-port accept + icmp type echo-reply oif {$lanif} accept + icmp type echo-request accept + tcp dport 20 accept + tcp sport 20 accept + tcp dport 21 accept + tcp sport 21 accept + tcp dport {80, 443} accept + tcp sport {80, 443} accept + tcp sport 22 accept + udp dport 53 accept + } + chain postrouting { + type filter hook postrouting priority filter; policy drop; + ip daddr $dns-server accept + ip daddr $proxy-lyc tcp dport $proxy-port accept + icmp type echo-request ip saddr {$iplan, $ipdmz, $firewall} accept + icmp type echo-reply iif {$dmzif} oif {$lanif} accept + icmp type echo-request iif {$lanif} oif {$dmzif} accept + icmp type echo-request ip saddr $iplan oif $lanif accept + tcp dport 20 accept + tcp sport 20 accept + tcp dport 21 accept + tcp sport 21 accept + tcp dport {80, 443} accept + tcp sport {80, 443} accept + tcp sport 22 accept + ct state {established,related} accept + udp dport 53 accept + } +} +table ip nat { + chain prerouting { + type nat hook prerouting priority filter; policy accept; + # http et https du firewall vers srvweb + tcp dport 80 ip daddr $firewall dnat $ipsrvweb:80 + tcp dport 443 ip daddr $firewall dnat $ipsrvweb:443 + } + + chain postrouting { + type nat hook postrouting priority filter; policy accept; + ip saddr $lan-ntw oif $netif snat $firewall + ip saddr $dmznet oif $netif snat $firewall + } +}