Pages : 1
#1 Le 29/10/2009, à 00:13
- paulnux
Regles Iptables
Bonjour,
Je viens de potasser les règles Iptables pendant 2 heures et je voudrais sur un Serveur WEB à la maison accepter HTTP pour tout le monde Et n'accepter SSH que pour mon adresse IP du boulot et mon adresse IP de ma workstation à la maison.
j'ai rajouter aussi quelque règle antiflodd et antispoofing.
Merci de me dire si ce script convient à mes attentes ou si j'ai écrit des bêtises et/ou si j'ai oublier quelque choses.
#!/bin/sh
# RAZ DES TABLES
iptables -t filter -F
iptables -t filter -X
# Ne pas casser les connexions établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Interdire tous les paquets
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
###########
## INPUT ##
###########
# HTTP
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
# SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -s 82.238.xxx.xxx -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -s 192.168.xxx.xxx -j ACCEPT
# LOOPBACK
iptables -t filter -A INPUT -i lo -j ACCEPT
############
## OUTPUT ##
############
# HTTP
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
# SSH
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
# LOOPBACK
iptables -t filter -A OUTPUT -o lo -j ACCEPT
############
## DIVERS ##
############
# Syn Flood
iptables -N syn-flood
iptables -A INPUT -i $NET -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 10 -j RETURN
iptables -A syn-flood -j DROP
# Spoofing
iptables -N SPOOFED
iptables -A SPOOFED -s 127.0.0.0/8 -j DROP
iptables -A SPOOFED -s 169.254.0.0/12 -j DROP
iptables -A SPOOFED -s 172.16.0.0/12 -j DROP
iptables -A SPOOFED -s 192.168.0.0/16 -j DROP
iptables -A SPOOFED -s 10.0.0.0/8 -j DROP
# LOG des paquets rejetés
iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP]:'
iptables -A LOG_DROP -j DROP
iptables -t filter -A INPUT -j LOG_DROP
iptables -t filter -A OUTPUT -j LOG_DROP
iptables -t filter -A FORWARD -j LOG_DROP
Salutations
« Il y a beaucoup de causes pour lesquelles je suis prêt à mourir mais aucune cause pour laquelle je suis prêt à tuer. » Gandhi
Hors ligne
#2 Le 29/10/2009, à 09:23
- _Raum_
Re : Regles Iptables
moui... ehm...
Déjà dans ton script, il ne te faut pas mettre
iptables <code>
mais plutôt
$IPTABLES <code>
en définissant $IPTABLES="/bin/iptables", comme cela si tu lances ton script au démarrage, il fonctionnera (question de variables d'envrionnement).
Ensuite il ne me semble pas que l'option "-t filter" soit pertinente, voire nécessaire.
Enfin tu as :
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
et
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
Dis moi pourquoi cela pose un problème de sens ? (au sens que cela n'en a pas... de sens )
Hors ligne
#3 Le 29/10/2009, à 12:34
- paulnux
Re : Regles Iptables
Bonjour,
Merci pour l'aide
Après vos remarques voici mon nouveau script:
#!/bin/sh
#Variables
$iptables="/bin/iptables"
# RAZ DES TABLES
$iptables -F
$iptables -X
# Ne pas casser les connexions établies
$iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Interdire tous les paquets
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptables -P OUTPUT DROP
###########
## INPUT ##
###########
# HTTP
$iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# SSH
$iptables -A INPUT -i eth0 -p tcp --dport 22 -s 82.238.xxx.xxx -j ACCEPT
$iptables -A INPUT -i eth0 -p tcp --dport 22 -s 192.168.xxx.xxx -j ACCEPT
# LOOPBACK
$iptables -A INPUT -i lo -j ACCEPT
############
## OUTPUT ##
############
# HTTP
$iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
# SSH
$iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
# LOOPBACK
$iptables -A OUTPUT -o lo -j ACCEPT
############
## DIVERS ##
############
# Syn Flood
$iptables -N syn-flood
$iptables -A INPUT -i $NET -p tcp --syn -j syn-flood
$iptables -A syn-flood -m limit --limit 1/s --limit-burst 10 -j RETURN
$iptables -A syn-flood -j DROP
# Spoofing
$iptables -N SPOOFED
$iptables -A SPOOFED -s 127.0.0.0/8 -j DROP
$iptables -A SPOOFED -s 169.254.0.0/12 -j DROP
$iptables -A SPOOFED -s 172.16.0.0/12 -j DROP
$iptables -A SPOOFED -s 192.168.0.0/16 -j DROP
$iptables -A SPOOFED -s 10.0.0.0/8 -j DROP
# LOG des paquets rejetés
$iptables -N LOG_DROP
$iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP]:'
$iptables -A LOG_DROP -j DROP
$iptables -A INPUT -j LOG_DROP
$iptables -A OUTPUT -j LOG_DROP
$iptables -A FORWARD -j LOG_DROP
Pour le problème de sens je ne vois pas ou vous voulez en venir ?
Je me suis basé sur des scripts vu sur Internet et ils avaient pratiquement tous:
# Ne pas casser les connexions établies
$iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Mais si vous me dite que cela ne sert a rien dans mon cas je vous croit sur parole
Si vous pouvez m'en dire un peu plus j'en serai très heureux, merci
« Il y a beaucoup de causes pour lesquelles je suis prêt à mourir mais aucune cause pour laquelle je suis prêt à tuer. » Gandhi
Hors ligne
#4 Le 29/10/2009, à 17:02
- paulnux
Re : Regles Iptables
Up
« Il y a beaucoup de causes pour lesquelles je suis prêt à mourir mais aucune cause pour laquelle je suis prêt à tuer. » Gandhi
Hors ligne
#5 Le 29/10/2009, à 23:47
- paulnux
Re : Regles Iptables
hummmmmmmmm personne n'utilise Iptables ?
« Il y a beaucoup de causes pour lesquelles je suis prêt à mourir mais aucune cause pour laquelle je suis prêt à tuer. » Gandhi
Hors ligne
#6 Le 30/10/2009, à 16:11
- paulnux
Re : Regles Iptables
SVP une petite aide:)
« Il y a beaucoup de causes pour lesquelles je suis prêt à mourir mais aucune cause pour laquelle je suis prêt à tuer. » Gandhi
Hors ligne
#7 Le 20/11/2009, à 10:59
- _Raum_
Re : Regles Iptables
Re !
Alors pour en revenir à ce que je voulais dire. Je vais présenter les choses autrement... Quels sont les services que tu veux proposer sur ta passerelle ?
Si je comprends bien tu veux pouvoir :
- te connecter en SSH sur un poste distant
- permettre à certains postes de pouvoir se connecter sur ta machine en SSH
- pouvoir te connecter en HTTP sur un serveur distant
- permettre à tous de se connecter sur le service HTTP qui est hébergé sur ta machine
Si c'est exact, alors ton script me semble correct mais cela ne correspond pas à ce que tu as décrit dans ton post initial :
je voudrais sur un Serveur WEB à la maison accepter HTTP pour tout le monde Et n'accepter SSH que pour mon adresse IP du boulot et mon adresse IP de ma workstation à la maison.
En gros, si tu ne veux QUE des connexions entrantes.... tu n'as pas à autoriser les connexions sortantes....
De fait les lignes suivantes ne te servent pas :
$iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
$iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
Ensuite tu as :
$iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
et
$iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$iptables -A INPUT -i eth0 -p tcp --dport 22 -s 82.238.xxx.xxx -j ACCEPT
$iptables -A INPUT -i eth0 -p tcp --dport 22 -s 192.168.xxx.xxx -j ACCEPT
La seconde déclaration autorise les trames à entrer quelques soient leur état (new, established, related), du coup la première déclaration est inutile.
Ton script devrait plus ressembler à :
#!/bin/sh
#Variables
$iptables="/bin/iptables"
# RAZ DES TABLES
$iptables -F
$iptables -X
# Ne pas casser les connexions établies
$iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Interdire tous les paquets
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
$iptables -P OUTPUT DROP
###########
## INPUT ##
###########
# HTTP
$iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# SSH
$iptables -A INPUT -i eth0 -p tcp --dport 22 -s 82.238.xxx.xxx -j ACCEPT
$iptables -A INPUT -i eth0 -p tcp --dport 22 -s 192.168.xxx.xxx -j ACCEPT
# LOOPBACK
$iptables -A INPUT -i lo -j ACCEPT
$iptables -A OUTPUT -o lo -j ACCEPT
Les autres chaînes me semblent pas utiles puisque tu ne les utilises pas.
Dernière modification par _Raum_ (Le 20/11/2009, à 10:59)
Hors ligne
Pages : 1