modifié : siotp/sisr1/TP7/scriptsnft/current_ruleset.nft

nouveau fichier : siotp/sisr1/TP7/scriptsnft/fw_part7.nft
	nouveau fichier : siotp/sisr1/TP7/scriptsnft/old-current_ruleset.nft
This commit is contained in:
Jarod Pauchet 2024-04-08 11:43:13 +02:00
parent 715fcd3ded
commit 0a97ad7166
3 changed files with 479 additions and 37 deletions

View File

@ -1,94 +1,215 @@
# Définition des interfaces avec un nom
define netif = enp0s3 define netif = enp0s3
define dmzif = enp0s8 define dmzif = enp0s8
define lanif = enp0s9 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 ipdmz = 172.16.0.254
define iplan = 10.0.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{ table ip ipfilter{
chain prerouting { chain prerouting {
type filter hook prerouting priority filter; policy drop; 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 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 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 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 tcp dport 22 accept
ip saddr $proxy-lyc tcp dport {80, 443} accept
ct state {established,related} accept #Autorise les requêtes DNS depuis la DMZ et le LAN
tcp sport {80,443} ip saddr $lan-ntw accept udp sport 53 iif {$dmzif, $lanif} accept
tcp dport {80,443} ip saddr $lan-ntw 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 { chain system_in {
type filter hook input priority filter; policy drop; 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 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 20 accept
tcp dport 21 accept tcp dport 21 accept
#Autorise les requêtes HTTP/HTTPS
tcp dport {80, 443} accept tcp dport {80, 443} accept
#Autorise le SSH
tcp dport 22 accept 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 { chain routing {
type filter hook forward priority filter; policy drop; 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 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 icmp type echo-reply iif {$dmzif} oif {$lanif} accept
ct state {established,related} accept
tcp sport {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 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 { chain system_out {
type filter hook output priority filter; policy drop; 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 icmp type echo-reply oif {$lanif} accept
#Accepte les requêtes ping
icmp type echo-request accept icmp type echo-request accept
#Autorise les requêtes ayant pour port de destination les ports FTP
tcp dport 20 accept tcp dport 20 accept
tcp sport 20 accept tcp sport 20 accept
tcp dport 21 accept tcp dport 21 accept
tcp sport 21 accept tcp sport 21 accept
#Autorise les requêtes provenant des ports HTTP/HTTPS
tcp dport {80, 443} accept tcp dport {80, 443} accept
tcp sport {80, 443} accept tcp sport {80, 443} accept
#Autorise le SSH
tcp sport 22 accept tcp sport 22 accept
#Autorise les requêtes DNS
udp sport 53 accept
udp dport 53 accept
} }
chain postrouting { chain postrouting {
type filter hook postrouting priority filter; policy drop; 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 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 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 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 icmp type echo-request ip saddr $iplan oif $lanif accept
#Autorise les requêtes FTP
tcp dport 20 accept tcp dport 20 accept
tcp sport 20 accept tcp sport 20 accept
tcp dport 21 accept tcp dport 21 accept
tcp sport 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 dport {80, 443} accept
tcp sport {80, 443} accept tcp sport {80, 443} accept
#Autorise le SSH
tcp sport 22 accept tcp sport 22 accept
ct state {established,related} accept
} #Autorise les requêtes DNS
} udp sport 53 accept
table ip nat { udp dport 53 accept
chain prerouting {
type nat hook prerouting priority filter; policy accept; #Autorise les requêtes provenant du DNS
ip daddr $dns accept
} }
chain postrouting { chain pre_nat {
type nat hook postrouting priority filter; policy accept; type nat hook prerouting priority filter; policy accept;
ip saddr $lan-ntw oif $netif snat $firewall
#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
}
}

View File

@ -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
}
}

View File

@ -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
}
}