|
|
(8 versions intermédiaires par 2 utilisateurs non affichées) |
Ligne 1 : |
Ligne 1 : |
| = Configuration du pare-feu Shorewall =
| |
| == Installation des paquets ==
| |
| Sur la machine virtuelle ''vmlb'', installez les paquets nécessaires :
| |
| <syntaxhighlight lang="bash"> | | <syntaxhighlight lang="bash"> |
| apt install shorewall tcpdump nmap
| | #!/bin/bash |
| </syntaxhighlight>
| |
| == Configuration des fichiers Shorewall ==
| |
| === Zones (zones) ===
| |
| Le fichier ''/etc/shorewall/zones'' définit les différentes zones du réseau :
| |
| <syntaxhighlight lang="text">
| |
| fw firewall
| |
| net ipv4
| |
| lan ipv4
| |
| </syntaxhighlight>
| |
| '''Explication des zones :'''
| |
|
| |
|
| '''fw''' : Représente le pare-feu lui-même
| | # Vérification des privilèges root |
| '''net''' : Zone pour le réseau externe (Internet)
| | if [ "$EUID" -ne 0 ]; then |
| '''lan''' : Zone pour le réseau local interne
| | echo "Ce script doit être exécuté en tant que root" |
| | exit 1 |
| | fi |
|
| |
|
| === Interfaces (interfaces) ===
| | # Installation des outils nécessaires |
| Le fichier ''/etc/shorewall/interfaces'' associe les interfaces physiques aux zones :
| | apt-get update |
| <syntaxhighlight lang="text">
| | apt-get install -y parted fdisk |
| ?FORMAT 2
| |
| net enp0s3 dhcp,tcpflags,nosmurfs,sourceroute=0
| |
| lan enp0s8 tcpflags,nosmurfs,sourceroute=0
| |
| </syntaxhighlight>
| |
| '''Paramètres des interfaces :'''
| |
|
| |
|
| '''enp0s3''' : Interface réseau externe avec DHCP | | # Afficher l'état actuel |
| '''enp0s8''' : Interface réseau locale
| | echo "État actuel du disque :" |
| '''Options de sécurité''' :
| | fdisk -l /dev/sda |
| ** tcpflags : Active la vérification des drapeaux TCP
| | echo "-------------------" |
| ** nosmurfs : Protection contre les attaques smurf
| | df -h /dev/sda2 |
| ** sourceroute=0 : Désactive le source routing
| | echo "-------------------" |
|
| |
|
| === Politique (policy) ===
| | # Calculer la taille maximale disponible (juste avant la partition swap) |
| Le fichier ''/etc/shorewall/policy'' définit les règles par défaut :
| | SWAP_START=$(fdisk -l /dev/sda | grep "sda3" | awk '{print $2}') |
| <syntaxhighlight lang="text">
| | echo "Début de la partition SWAP : $SWAP_START" |
| lan net ACCEPT
| |
| lan $FW ACCEPT
| |
| $FW net ACCEPT
| |
| $FW lan ACCEPT | |
| net all DROP info
| |
| all all REJECT info
| |
| </syntaxhighlight>
| |
| '''Explication des politiques :'''
| |
| | |
| Trafic du LAN vers Internet : Autorisé
| |
| Trafic du LAN vers le pare-feu : Autorisé
| |
| Trafic du pare-feu vers Internet : Autorisé
| |
| Trafic du pare-feu vers le LAN : Autorisé
| |
| Trafic d'Internet vers toute destination : Bloqué avec journalisation
| |
| Tout autre trafic : Rejeté avec journalisation
| |
| | |
| === Translation d'adresses (snat) ===
| |
| Le fichier ''/etc/shorewall/snat'' configure le masquerading :
| |
| <syntaxhighlight lang="text">
| |
| MASQUERADE 192.168.72.0/24 enp0s3
| |
| </syntaxhighlight>
| |
| '''Explication :'''
| |
|
| |
|
| Masque le réseau 192.168.72.0/24 derrière l'interface enp0s3
| | # Redimensionner avec fdisk |
| | ( |
| | echo "d" # Supprimer partition |
| | echo "2" # Partition numéro 2 |
| | echo "n" # Nouvelle partition |
| | echo "p" # Type primaire |
| | echo "2" # Partition numéro 2 |
| | echo # Premier secteur (par défaut) |
| | echo "$((SWAP_START - 1))" # Dernier secteur (juste avant le swap) |
| | echo "N" # Ne pas supprimer la signature |
| | echo "w" # Écrire les changements |
| | ) | fdisk /dev/sda |
|
| |
|
| === Paramètres (params) ===
| | # Recharger la table des partitions |
| Le fichier ''/etc/shorewall/params'' définit les variables :
| | partprobe /dev/sda |
| <syntaxhighlight lang="text">
| |
| IP_GCH=192.168.1.18
| |
| </syntaxhighlight>
| |
| === Règles (rules) ===
| |
| Le fichier ''/etc/shorewall/rules'' contient les règles spécifiques :
| |
| <syntaxhighlight lang="text">
| |
| ACCEPT all all icmp 8
| |
| ACCEPT net:$IP_GCH $FW tcp 22
| |
| ACCEPT net $FW tcp 80
| |
| ACCEPT net:$IP_GCH $FW tcp 8282
| |
| DNAT
| |
| DNAT net:$IP_GCH lan:192.168.72.11:22 tcp 2221
| |
| DNAT net:$IP_GCH lan:192.168.72.12:22 tcp 2222
| |
| </syntaxhighlight>
| |
| '''Explication des règles :'''
| |
|
| |
|
| Autorise le ping (ICMP type 8) depuis toutes les sources
| | # Redimensionner le système de fichiers |
| Autorise SSH (port 22) depuis l'IP spécifiée vers le pare-feu
| | resize2fs /dev/sda2 |
| Autorise HTTP (port 80) depuis Internet vers le pare-feu
| |
| Autorise le port 8282 depuis l'IP spécifiée vers le pare-feu
| |
| Redirige le port 2221 vers SSH (port 22) sur 192.168.72.11
| |
| Redirige le port 2222 vers SSH (port 22) sur 192.168.72.12
| |
|
| |
|
| == Activation et test ==
| | # Afficher le résultat |
| === Démarrage de Shorewall ===
| | echo "Nouvel état du disque :" |
| Exécutez les commandes suivantes :
| | df -h /dev/sda2 |
| <syntaxhighlight lang="bash">
| |
| shorewall check
| |
| shorewall safe-start
| |
| systemctl enable shorewall
| |
| </syntaxhighlight> | | </syntaxhighlight> |
| === Test de la configuration ===
| |
| Depuis une machine externe, testez avec nmap :
| |
| <syntaxhighlight lang="bash">
| |
| $ nmap -p 22,80,8282,2221,2222 IP_FIREWALL
| |
| </syntaxhighlight>
| |
| '''Ports testés :'''
| |
|
| |
| 22 : SSH vers le pare-feu
| |
| 80 : HTTP vers le pare-feu
| |
| 8282 : Port personnalisé vers le pare-feu
| |
| 2221 : Redirection SSH vers 192.168.72.11
| |
| 2222 : Redirection SSH vers 192.168.72.12
| |
|
| |
| [[Catégorie:Sécurité]]
| |
| [[Catégorie:Pare-feu]]
| |
| [[Catégorie:Shorewall]]
| |
#!/bin/bash
# Vérification des privilèges root
if [ "$EUID" -ne 0 ]; then
echo "Ce script doit être exécuté en tant que root"
exit 1
fi
# Installation des outils nécessaires
apt-get update
apt-get install -y parted fdisk
# Afficher l'état actuel
echo "État actuel du disque :"
fdisk -l /dev/sda
echo "-------------------"
df -h /dev/sda2
echo "-------------------"
# Calculer la taille maximale disponible (juste avant la partition swap)
SWAP_START=$(fdisk -l /dev/sda | grep "sda3" | awk '{print $2}')
echo "Début de la partition SWAP : $SWAP_START"
# Redimensionner avec fdisk
(
echo "d" # Supprimer partition
echo "2" # Partition numéro 2
echo "n" # Nouvelle partition
echo "p" # Type primaire
echo "2" # Partition numéro 2
echo # Premier secteur (par défaut)
echo "$((SWAP_START - 1))" # Dernier secteur (juste avant le swap)
echo "N" # Ne pas supprimer la signature
echo "w" # Écrire les changements
) | fdisk /dev/sda
# Recharger la table des partitions
partprobe /dev/sda
# Redimensionner le système de fichiers
resize2fs /dev/sda2
# Afficher le résultat
echo "Nouvel état du disque :"
df -h /dev/sda2