Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/10/2009, à 23: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, à 08: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 smile)

Hors ligne

#3 Le 29/10/2009, à 11:34

paulnux

Re : Regles Iptables

Bonjour,
Merci pour l'aide smile
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 smile
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, à 16:02

paulnux

Re : Regles Iptables

Up smile


« 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, à 22:47

paulnux

Re : Regles Iptables

hummmmmmmmm personne n'utilise Iptables ? hmm


« 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, à 15: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, à 09: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, à 09:59)

Hors ligne