# Définition des interfaces avec un nom define netif = enp0s3 # Interface avec accès internet extérieur define dmzif = enp0s8 # Interface branchée à la DMZ define lanif = enp0s9 # Interface branchée au LAN # Définition des réseaux define dmz-ntw = 172.17.0.0/24 # Plage réseau de la DMZ define lan-ntw = 172.16.0.0/24 # Plage réseau du LAN define net-ntw = 192.168.0.0/24 # Plage réseau, accès internet # 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 } }