LINUX:Installation et configuration du LAN 192.168.2.0/24
But
Pour les besoins du projet, on ajoute une machine Linux sur le LAN n°2.
Nous donnons l'exemple d'une machine Linux ayant une adresse IP fixe.
Installation
Dans le projet, second schéma, nous utilisons un serveur WEB Linux. Son adresse IP est 192.168.2.2/24.
Nous aborderons les couches réseau et firewall.
Configuration de l'interface réseau
En utilisant l'utilitaire GUI "nmtui", sous le menu "Modifier une connexion", on voit la seule interface présente, la carte réseau de la carte mère, nommée "enp0s25".
On accède à l'écran suivant via le bouton "Modifier".
On adapte les paramètres comme décrit dans cet écran. On spécifie:
- l'adresse IP de la machine; ici "192.168.2.2" avec le masque de sous-réseau "24", c'est à dire "255.255.255.0".
- l'adresse IP de la passerelle par défaut la plus proche; c'est à dire celle du routeur que nous venons de créer sur la LAN n°2.: "192.168.2.1"
- l'adresse IP d'un serveur DNS, ici celui de Proximus: "195.238.2.21"
- le nom de domaine correspond à celui de votre machine
- on désactive l'IPV6
On vérifie que l'interface est active. Attention, si vous la désactivez vous perdez la connexion réseau si vous êtes connecté via une console SSH. Il vous restera à aller la réactiver via une console directement connectée à la machine.
On peut vérifier la configuration avec les commandes suivante.
Pour l'adressage:
ifconfig
qui donne:
enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.2.2 netmask 255.255.255.0 broadcast 192.168.2.255 ether 00:1c:c0:30:2a:38 txqueuelen 1000 (Ethernet) RX packets 113339 bytes 160301720 (152.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 59268 bytes 5115242 (4.8 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 20 memory 0x93200000-93220000 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Boucle locale) RX packets 222 bytes 29780 (29.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 222 bytes 29780 (29.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Pour la route:
route -n
qui donne:
Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 100 0 0 enp0s25 192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s25
Pour le DNS, faire une recherche:
nslookup www.google.be
qui donne:
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: www.google.be Address: 172.217.168.195 Name: www.google.be Address: 2a00:1450:4007:81a::2003
Firewall
Nous utilisons Iptables. Comme nous ne sommes pas dans le contexte d'un routeur, la table NAT n'est pas utilisée et dans la table FILTER, la chaîne FORWARD ne l'est pas non plus. Seules les chaînes INPUT et OUTPUT de la table FILTER sont utilisées en dehors des conseils donnés pour le mur de feu du routeur.
Pour les contraintes, nous avons:
- le serveur WEB (port 80) est accessible de tous (INPUT)
- l'accès SSH n'est accessible que par la machine du LAN n°1 ayant l'adresse IP 192.168.1.2 (INPUT)
- la machine peut faire ses mises à jour des logficiels et de l'heure, et les résolutions DNS vers Internet (OUTPUT)
La configuration se fait dans le fichier "/etc/sysconfig/iptables".
La structure de base se présente comme suit:
*filter :OUTPUT ACCEPT [0:0] :INPUT ACCEPT [0:0] # Commentaires # # Bloc des règles personnelles # COMMIT
On accepte au préalable tout trafic venant d'un interface sur lui-même; c'est spécialement le cas de l'interface "lo".
-A INPUT -p ALL -i lo -j ACCEPT -A OUTPUT -p ALL -o lo -j ACCEPT
En début de chaîne, il faut toujours traiter les réponses données aux requêtes par analyse du statut.
-A INPUT -p icmp -j ACCEPT -A OUTPUT -p icmp -j ACCEPT -A INPUT -p tcp -m conntrack --ctstate ESTABLISHED -j ACCEPT -A OUTPUT -p tcp -m conntrack --ctstate ESTABLISHED -j ACCEPT -A INPUT -p udp -m conntrack --ctstate ESTABLISHED -j ACCEPT -A OUTPUT -p udp -m conntrack --ctstate ESTABLISHED -j ACCEPT
On peut compléter cette première étape par un refus de ce qui n'a pas été établi par le passé:
-A INPUT -m conntrack --ctstate INVALID -j REJECT -A OUTPUT -m conntrack --ctstate INVALID -j REJECT
Ensuite vient le traitement de filtrage proprement dit des nouvelles requêtes.
# OUTPUT # Accès vers Internet # DNS: résolution de noms de machines -A OUTPUT -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT -A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT # NTP: mise à l'heure -A OUTPUT -p tcp -m tcp --dport 123 -m conntrack --ctstate NEW -j ACCEPT -A OUTPUT -p udp -m udp --dport 123 -m conntrack --ctstate NEW -j ACCEPT # DNF: mises à jour des logiciels -A OUTPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT # le reste du trafic est bloqué -A OUTPUT -j LOG --log-level debug --log-prefix "OUTPUT-REFUS" #-A OUTPUT -j REJECT --reject-with icmp-host-prohibited #-A OUTPUT -j REJECT --reject-with icmp-port-unreachable -A OUTPUT -j DROP # INPUT # HTTP (serveur WEB) -A INPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT # SSH : seule une machine du LAN n°1 peut accéder au routeur via SSH -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -s 192.168.1.2 -j ACCEPT # le reste du trafic interne est bloqué -A INPUT -j LOG --log-level debug --log-prefix "INPUT-REFUS" #-A INPUT -j REJECT --reject-with icmp-host-prohibited #-A INPUT -j REJECT --reject-with icmp-port-unreachable -A INPUT -j DROP
Pour des explications plus détaillées, reportez-vous à l'article du firewall du routeur. Nous n'avons pas besoin de spécifier l'interface réseau car il n'y en a qu'un.