« Feuille classe » : différence entre les versions

De Travail-ivan
Aucun résumé des modifications
Aucun résumé des modifications
 
(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]]

Dernière version du 28 novembre 2024 à 11:28

#!/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