Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
debian:iptables [2020/04/16 15:50] – erreur32 | debian:iptables [2022/11/08 16:43] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | http://www.kultur-frankreich.de/wiki/doku.php? | + | ====== Firewall IpTables ====== |
- | Firewall IpTables | + | |
- | <div class=" | + | **Configuration** |
+ | |||
+ | Exemple de configuration d' | ||
+ | Créer le dossier **/etc/firewall** dans lequel on placera un fichier | ||
- | </ | + | servant à la configuration du firewall, et un fichier flush_iptables.sh , servant à vider les règles (flush).\\ |
- | Configuration | + | Exemple de fichier init_iptables.sh |
- | <div class=" | + | |
- | Exemple de configuration d' | + | |
- | Exemple de fichier **init_iptables.sh** (commenter les règles inutiles) : | ||
- | ``` | + | < |
#!/bin/bash | #!/bin/bash | ||
# IP réservées | # IP réservées | ||
- | |||
RESERVED_NET=" | RESERVED_NET=" | ||
23.0.0.0/8 27.0.0.0/8 31.0.0.0/8 36.0.0.0/8 37.0.0.0/8 39.0.0.0/8 41.0.0.0/8 42.0.0.0/8 58.0.0.0/8 59.0.0.0/8 | 23.0.0.0/8 27.0.0.0/8 31.0.0.0/8 36.0.0.0/8 37.0.0.0/8 39.0.0.0/8 41.0.0.0/8 42.0.0.0/8 58.0.0.0/8 59.0.0.0/8 | ||
Ligne 30: | Ligne 29: | ||
183.0.0.0/8 184.0.0.0/8 185.0.0.0/8 186.0.0.0/8 187.0.0.0/8 189.0.0.0/8 190.0.0.0/ | 183.0.0.0/8 184.0.0.0/8 185.0.0.0/8 186.0.0.0/8 187.0.0.0/8 189.0.0.0/8 190.0.0.0/ | ||
echo " | echo " | ||
- | |||
#### Initialisation | #### Initialisation | ||
# Ignore les ping envoyés par broadcasts ou multicasts | # Ignore les ping envoyés par broadcasts ou multicasts | ||
- | | + | echo 1 > / |
# Interdit toute connexion entrante ou sortante | # Interdit toute connexion entrante ou sortante | ||
iptables -P INPUT DROP | iptables -P INPUT DROP | ||
Ligne 40: | Ligne 37: | ||
iptables -P OUTPUT DROP | iptables -P OUTPUT DROP | ||
echo "- Interdire toute connexion entrante ou sortante : [OK]" | echo "- Interdire toute connexion entrante ou sortante : [OK]" | ||
- | |||
# Vide toutes les règles et tables | # Vide toutes les règles et tables | ||
iptables -F | iptables -F | ||
Ligne 52: | Ligne 48: | ||
iptables -t mangle -X | iptables -t mangle -X | ||
echo "- Vider toutes les règles et tables : [OK]" | echo "- Vider toutes les règles et tables : [OK]" | ||
- | |||
# Création de nouvelles chaines pour loguer et droper | # Création de nouvelles chaines pour loguer et droper | ||
iptables -N LOG_DROP_INPUT | iptables -N LOG_DROP_INPUT | ||
Ligne 67: | Ligne 62: | ||
iptables -A INPUT -p tcp ! --syn -m state --state NEW,INVALID -j REJECT | iptables -A INPUT -p tcp ! --syn -m state --state NEW,INVALID -j REJECT | ||
echo "- Rejeter les connexions sans bit SYN : [OK]" | echo "- Rejeter les connexions sans bit SYN : [OK]" | ||
- | |||
# Ne casse pas les connexions établies | # Ne casse pas les connexions établies | ||
iptables -A INPUT -m state --state RELATED, | iptables -A INPUT -m state --state RELATED, | ||
iptables -A OUTPUT -m state --state RELATED, | iptables -A OUTPUT -m state --state RELATED, | ||
echo "- Ne pas casser les connexions établies : [OK]" | echo "- Ne pas casser les connexions établies : [OK]" | ||
- | |||
##### Règles d' | ##### Règles d' | ||
- | |||
# Autorise loopback | # Autorise loopback | ||
iptables -A INPUT -i lo -j ACCEPT | iptables -A INPUT -i lo -j ACCEPT | ||
iptables -A OUTPUT -o lo -j ACCEPT | iptables -A OUTPUT -o lo -j ACCEPT | ||
echo "- Autoriser loopback : [OK]" | echo "- Autoriser loopback : [OK]" | ||
- | |||
# SSH | # SSH | ||
iptables -A INPUT -p tcp --dport 22 -m limit --limit 5/hour -j ACCEPT | iptables -A INPUT -p tcp --dport 22 -m limit --limit 5/hour -j ACCEPT | ||
Ligne 85: | Ligne 76: | ||
iptables -A INPUT -p tcp --dport 32 -j ACCEPT | iptables -A INPUT -p tcp --dport 32 -j ACCEPT | ||
echo "- Autoriser SSH entrant : [OK]" | echo "- Autoriser SSH entrant : [OK]" | ||
- | |||
# Ping | # Ping | ||
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT | iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT | ||
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT | iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT | ||
echo "- Autoriser PING entrant/ | echo "- Autoriser PING entrant/ | ||
- | |||
# NTP | # NTP | ||
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT | iptables -A OUTPUT -p udp --dport 123 -j ACCEPT | ||
echo "- Autoriser NTP sortant : [OK]" | echo "- Autoriser NTP sortant : [OK]" | ||
- | |||
# DNS | # DNS | ||
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT | iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT | ||
Ligne 101: | Ligne 89: | ||
iptables -A INPUT -p udp --dport 53 -j ACCEPT | iptables -A INPUT -p udp --dport 53 -j ACCEPT | ||
echo "- Autoriser DNS entrant/ | echo "- Autoriser DNS entrant/ | ||
- | |||
# HTTP | # HTTP | ||
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT | iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT | ||
iptables -A INPUT -p tcp --dport 80 -j ACCEPT | iptables -A INPUT -p tcp --dport 80 -j ACCEPT | ||
echo "- Autoriser HTTP entrant/ | echo "- Autoriser HTTP entrant/ | ||
- | |||
# HTTPS | # HTTPS | ||
iptables -A INPUT -p tcp --dport 443 -j ACCEPT | iptables -A INPUT -p tcp --dport 443 -j ACCEPT | ||
iptables -A INPUT -p tcp --dport 8443 -j ACCEPT | iptables -A INPUT -p tcp --dport 8443 -j ACCEPT | ||
echo "- Autoriser HTTPS entrant : [OK]" | echo "- Autoriser HTTPS entrant : [OK]" | ||
- | |||
# FTP | # FTP | ||
- | ```modprobe ip_conntrack_ftp | + | modprobe ip_conntrack_ftp |
iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT | iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT | ||
iptables -A INPUT -p tcp --dport 20 -j ACCEPT | iptables -A INPUT -p tcp --dport 20 -j ACCEPT | ||
Ligne 119: | Ligne 104: | ||
iptables -A INPUT -m state --state ESTABLISHED, | iptables -A INPUT -m state --state ESTABLISHED, | ||
echo "- Autoriser FTP entrant/ | echo "- Autoriser FTP entrant/ | ||
- | |||
iptables -A INPUT -p tcp --dport 25 -j ACCEPT | iptables -A INPUT -p tcp --dport 25 -j ACCEPT | ||
Ligne 164: | Ligne 148: | ||
iptables -A OUTPUT -j LOG_DROP_OUTPUT | iptables -A OUTPUT -j LOG_DROP_OUTPUT | ||
echo " | echo " | ||
- | ``` | + | </ |
- | Fichier | + | Fichier |
- | ``` | + | <code> |
#!/bin/bash | #!/bin/bash | ||
echo -n " | echo -n " | ||
Ligne 189: | Ligne 173: | ||
iptables -t mangle -X | iptables -t mangle -X | ||
echo " [OK]" | echo " [OK]" | ||
- | ``` | + | </ |
- | Créer le fichier de chargement du firewall | + | Créer le fichier de chargement du firewall |
- | + | <code> | |
- | ``` | + | |
#!/bin/bash | #!/bin/bash | ||
# Lancement du script de Firewall | # Lancement du script de Firewall | ||
Ligne 228: | Ligne 211: | ||
exit | exit | ||
- | ``` | + | </ |
**Rendre ces 3 fichiers exécutable :** | **Rendre ces 3 fichiers exécutable :** | ||
- | ``` | + | < |
chmod +x / | chmod +x / | ||
chmod +x / | chmod +x / | ||
chmod +x / | chmod +x / | ||
- | ``` | + | </ |
- Ajouter ce script au démarrage : **update-rc.d firewall defaults** | - Ajouter ce script au démarrage : **update-rc.d firewall defaults** | ||
Ligne 242: | Ligne 225: | ||
====== Vérifier la configuration ====== | ====== Vérifier la configuration ====== | ||
- | <div class=" | + | Pour tester, on peut utiliser |
- | Pour tester, on peut utiliser | + | |
- | ``` apt-get update | + | |
- | apt-get install nmap | + | |
- | ``` | + | |
- | + | ||
- | | + | |
- | Les logs sont placés dans le fichier | + | |
- | + | ||
- | **Ressources** | + | - Sous Debian : Installer |
- | < | + | |
- | <div class=" | + | <code> |
- | <ul> | + | apt-get update |
- | <li class=" | + | apt-get install nmap |
- | </li> | + | </code> |
- | <li class=" | + | |
- | </li> | + | - Tester |
- | <li class=" | + | |
- | </li> | + | Les logs sont placés dans le fichier **/var/log/messages**. |
- | <li class=" | + | |
- | </ | + | >> |
- | <li class=" | + | |
- | </ | + | |
- | <li class=" | + | |
- | </ | + | |
- | <li class=" | + | |
- | </ | + | |
- | <li class=" | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | {{tag> | + | {{tag> |