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:55] – erreur32 | debian:iptables [2022/11/08 16:43] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | | ||
- | |||
====== Firewall IpTables ====== | ====== Firewall IpTables ====== | ||
Ligne 7: | Ligne 5: | ||
Exemple de configuration d' | Exemple de configuration d' | ||
Créer le dossier **/ | Créer le dossier **/ | ||
+ | |||
servant à la configuration du firewall, et un fichier flush_iptables.sh , servant à vider les règles (flush).\\ | servant à la configuration du firewall, et un fichier flush_iptables.sh , servant à vider les règles (flush).\\ | ||
- | Exemple de fichier **init_iptables.sh** (commenter les règles inutiles) :\\ | ||
- | ``` | + | Exemple de fichier init_iptables.sh (commenter les règles inutiles): \\ |
+ | < | ||
#!/bin/bash | #!/bin/bash | ||
# IP réservées | # IP réservées | ||
Ligne 29: | 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 | ||
Ligne 38: | 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 50: | 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 65: | 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 83: | 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 99: | 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 117: | 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 162: | 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 187: | 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 226: | 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 240: | 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 | + | |
- | + | ||
- | tutoriel Dedibox | + | - Sous Debian |
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | - Tester : nmap -vv xxx.xxx.xxx.xxx | ||
+ | |||
+ | Les logs sont placés dans le fichier **/ | ||
+ | |||
+ | >> | ||
- | {{tag> | + | {{tag> |