problème iptables output

[quote=“helid”]Je viens de relire ton message, et en fait tu as fait:

[code]# iptables -A OUTPUT -s 127.0.0.1 -j DROP

ping 127.0.0.1[/code]

et le ping a répondu c’est bien ça ? C’est
pour clarifier déjà.

oui c’est bien ça.

Ensuite, au final c’est quel script que tu utilises, le premier, le deuxième ou encore un autre entre temps ? Pour clarifier aussi.

j’ai essayer avec plusieurs script même un minimaliste mais j’utilise principalement celui que j’ai mis en premier avec les modifications ci-dessus que j’ai essayer d’apporté

Jérémy
[/quote]

Là tu as un problème: ces 2 instructions devraient te bloquer une bonne partie des fonctions de l’ordi, donc entre autre le ping.
Surtout que c’est le loopback.
Un bug ?

[quote=“helid”]Là tu as un problème: ces 2 instructions devraient te bloquer une bonne partie des fonctions de l’ordi, donc entre autre le ping.
Surtout que c’est le loopback.
Un bug ?[/quote]
re,

j’ai pas essayer avec 127.0.0.1 je penser que c’était juste pour l’example

mais j’ai essayer avec une IP distante au lieux de 127.0.0.1 et j’accède tout de même a la machine distante …

Jérémy

Bah, essayes avec le lo, cela va t’enlever le doute du bug.
Au pire t’es bon pour rebooter alors, ya rien de catastrophique à le faire.

Attends, t’as essayé avec une “IP distante” ?!?

Oulà, je sens venir le faux-vrai débutant là:
Donnes-nous exactement la manip que tu as faite en précisant ton IP de ta machine et celle que tu as voulu tester.

[quote=“helid”]Bah, essayes avec le lo, cela va t’enlever le doute du bug.
Au pire t’es bon pour rebooter alors, ya rien de catastrophique à le faire.

Attends, t’as essayé avec une “IP distante” ?!?

Oulà, je sens venir le faux-vrai débutant là:
Donnes-nous exactement la manip que tu as faite en précisant ton IP de ta machine et celle que tu as voulu tester.[/quote]

bon j’ai une machine sur internet avec une IP A.A.A.A
de cette machine je veux dropé en sorti les tentative de connections a B.B.B.B

donc j’ai essayer
iptables -A OUTPUT -s B.B.B.B -j DROP
ou
iptables -A OUTPUT -d B.B.B.B -j DROP

mais depuis A.A.A.A je peux toujours pingué B.B.B.B et me connecter en http a B.B.B.B

c’est plus claire ?

Jérémy

P.S merci pour le faux vrai débutant

iptables -t filter -A OUTPUT -o interface_de_sortie -d B.B.B.B -j DROP

Si ca marche pas, c’est que t’as peut être une autre règle, ou un résidu de règles précédentes qui contredit celle là, et qui traite le paquet sortant en question AVANT. L’ordre des règles à une importance, dans ton script : la première règle rencontrée et qui matche sera celle qui traitera le paquet en question.

Je ne sais pas ce que tu appelles “relancer le service” mais si tu as un script avec tes règles dedans, si ce script à les droits d’execution, c’est lui qu’il faut exécuter en root. Puis tu fais un “iptables -L -n” pour t’assurer que les modif ont été prises en comptes.
Car pour moi, ce sont tes dernieres lignes en “output / accept” qui font que ta machine continue à laisser passer les paquets à destination de B.B.B.B (et qui font que ta règle par défaut à DROP ne sert à rien, autant mettre un OUTPUT -P ACCEPT et virer toutes les autres exceptions sur OUTPUT en fin de fichier, au moins c’est plus clair)

bon vala un script que j’ai fait il y a un moment…

#!/bin/bash
if [ -n "$*" ] ;then
	if [ "$*" = "clean" ] ;then
	iptables --zero
	iptables -F
	iptables -X
	iptables -t nat -F
	iptables -t nat -X
	iptables -t mangle -F
	iptables -t mangle -X

	iptables -P INPUT ACCEPT
	iptables -P FORWARD ACCEPT
	iptables -P OUTPUT ACCEPT
	tc qdisc del dev eth0 root 2> /dev/null
	tc qdisc del dev eth0 ingress 2> /dev/null > /dev/null
	tc qdisc del dev eth0 root
	tc qdisc del dev eth0 ingress
	exit
	fi
fi
if [ -n "$*" ] ;then
	if [ "$*" = "stat" ] ;then
		echo "==================== table filter ==================="  
		tc -s -d filter ls dev eth0 
		echo "====================  Les class   ==================="
		tc -s -d class ls dev eth0 
		echo "====================  Iptables    ===================" 
		iptables -L -n -v -x --line-numbers
		exit
	fi
fi

t’aura surment des message d’erreur lier a ip route mai c est pas bien grave :slight_smile:
donc clean efface ,et stats donne les infos

ensuite:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -A INPUT  -p 0 -m iprange --src-range 0.0.0.0-255.255.255.255 --dst-range  0.0.0.0-255.255.255.255 -j ACCEPT
iptables -A OUTPUT  -p 0 -m iprange --src-range  0.0.0.0-255.255.255.255 --dst-range  0.0.0.0-255.255.255.255 -j ACCEPT

-p 0 =tout les protocole, note que certain module ne marche pas avec ,genre la spécification des port avec multiport :slight_smile:
docn si besoin est -p udp ,tcp, icmp (0,1,2,3)

le gag verifie que t’a pas inverser la source de la destination

Bonjour,

[quote]donc j’ai essayer
iptables -A OUTPUT -s B.B.B.B -j DROP
ou
iptables -A OUTPUT -d B.B.B.B -j DROP [/quote]

Petite question, tu as pris un script quelque part et tu essayes de comprendre sur le tas, ou bien, tu connais la syntaxe des règles iptables ?

Faut pas essayer tout et dans tout les sens :018

[code]
#! /bin/sh

MAISON="xxx.xxx.xxx.xxx"
SERVEUR=“A.A.A.A”

iptables -X
iptables -F

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Accès SSH depuis ton domicile à la machine A.A.A.A

iptables -A INPUT -s $MAISON -d $SERVEUR -p tcp --dport ssh -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d $SERVEUR -s $MAISON -p tcp --sport ssh -m state --state ESTABLISHED -j ACCEPT[/code]

Seul l’accès SSH est disponible à destination de ta machine A.A.A.A. Elle ne pourra rien faire d’autre ! Le ping de A.A.A.A vers B.B.B.B devrait être droppé.

Après on peut activer la journalisation pour voir ce qui se passe si toute fois le ping passe.

Dernière chose, combien d’interface réseau as-tu sur ton serveur ?

Bon courage
A+

[quote=“jaax”]Bonjour,

[quote]donc j’ai essayer
iptables -A OUTPUT -s B.B.B.B -j DROP
ou
iptables -A OUTPUT -d B.B.B.B -j DROP [/quote]

Petite question, tu as pris un script quelque part et tu essayes de comprendre sur le tas, ou bien, tu connais la syntaxe des règles iptables ?

Faut pas essayer tout et dans tout les sens :018

[code]
#! /bin/sh

MAISON="xxx.xxx.xxx.xxx"
SERVEUR=“A.A.A.A”

iptables -X
iptables -F

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Accès SSH depuis ton domicile à la machine A.A.A.A

iptables -A INPUT -s $MAISON -d $SERVEUR -p tcp --dport ssh -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d $SERVEUR -s $MAISON -p tcp --sport ssh -m state --state ESTABLISHED -j ACCEPT[/code]

Seul l’accès SSH est disponible à destination de ta machine A.A.A.A. Elle ne pourra rien faire d’autre ! Le ping de A.A.A.A vers B.B.B.B devrait être droppé.

Après on peut activer la journalisation pour voir ce qui se passe si toute fois le ping passe.

Dernière chose, combien d’interface réseau as-tu sur ton serveur ?

Bon courage
A+[/quote]
donc j’ai 4 interface

désolé, je comprends pas votre script …

le script iptables c’est un amis qui me la passé et je l’ai adapter

Jérémy

Heum,

Une question là, ça fait plusieurs fois que j’en vois écrire:

Bref, c’est la syntaxe qui compte.
Vous omettez l’option “-j”.
C’est parce que cela n’est plus nécessaire dans les nouvelles versions d’iptables ?
Parce que si je tape une de ces commandes j’obtiens:

EDIT: erreur: ce que je dis est correct mais n’a pas de rapport car il n’y a pas de ligne avec “-A” n’ayant pas “-j”, seulement des lignes “-P” ce qui est correct.

EDIT: @jeremyp3: Et si tu nous passais le script de ton copain, en camouflant les IP par 1.2.3.4, etc, et que tu nous disais ce que tu veux en faire, et comment tu comptes le faire. Là franchement ce serait plus facile de t’aider. :wink:

Petite erreur de ma part.

J’ai pas de Debian sous la main, donc directement dans la réponse au post :unamused:

Je viens de relire les règles du début du post, et le problème ne viendrait pas tu fait que le forward est autorisé ainsi que les paquets natés ?

Si le routage IP est actif, et que le forward est accept, les paquets ne sont pas sensés passer ???

[quote=“jaax”]Je viens de relire les règles du début du post, et le problème ne viendrait pas tu fait que le forward est autorisé ainsi que les paquets natés ?

Si le routage IP est actif, et que le forward est accept, les paquets ne sont pas sensés passer ???[/quote]
Il me semble que les paquets sortant de la machine elle même passent par la chaine OUTPUT, et non FORWARD

bonjour,

j’en demandais pas tant mais si ça mais proposé je vais m’en servir :slight_smile:

ce que je souhaite faire

tout bloqué en imput sauf les règles proposé
tout autoriser en output sauf les règles proposées ((autant coté LAN que dirrectement depuis le serveur)
les interfaces qui ont une sortie vers internet
eth0 eth2 et PPP0

mon script complet

#! /bin/sh
# Description: configuration de firewall netfilter/iptables
#
# Initialization de la table FILTER
#
iptables -F
iptables -X
iptables -P INPUT   DROP
iptables -P OUTPUT  DROP
iptables -P FORWARD DROP # les 3 cmd = debranchement des cables

iptables -P FORWARD ACCEPT

# Initialization de la table NAT
#
iptables -t nat -F
iptables -t nat -X
iptables -P OUTPUT        ACCEPT
iptables -t nat -P PREROUTING    ACCEPT
iptables -t nat -P POSTROUTING   ACCEPT
iptables -t nat -P OUTPUT        ACCEPT
#
# Initialisation de la table MANGLE
#
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -P PREROUTING    ACCEPT
iptables -t mangle -P INPUT         ACCEPT
iptables -t mangle -P OUTPUT        ACCEPT
iptables -t mangle -P FORWARD       ACCEPT
iptables -t mangle -P POSTROUTING   ACCEPT


# interface lo
iptables -A INPUT -i lo -s '0.0.0.0/0' -d '0.0.0.0/0' -j ACCEPT
iptables -A OUTPUT -o lo -s '0.0.0.0/0' -d '0.0.0.0/0' -j ACCEPT


###partage de conexion masquerade###
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o eth0 --clamp-mss-to-pmtu
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o ppp0 --clamp-mss-to-pmtu

#                            table FILTER
#
# chaque commande est sur une seule ligne
#
# remplace eth0 avec ton interface
# et xxx.xxx.xxx.xxx avec IP de ton serveur
###garder les sessions établie###
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i tap0 -m state --state ESTABLISHED,RELATED -j ACCEPT


###vpn pptp###
iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT

###ftp###
modprobe ip_conntrack_ftp
iptables -A INPUT -p tcp --dport 21 -m recent --update --seconds 999999 --hitcount 5 --name ftp -j DROP
iptables -A INPUT -p tcp --dport 21 -m recent --set --name ftp
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
###ssh###
iptables -t filter -A INPUT -p tcp --dport 12345 -j ACCEPT
###smtp###
iptables -t filter -A INPUT -p tcp --dport 587 -j ACCEPT

###shoutcast###
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT

iptables -A INPUT -p udp --dport 4000 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT

###ouverture de port partiel###
iptables -t filter -A INPUT -s 192.168.0.0/16 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 139 -s 1.2.3.4 -j ACCEPT

###accepter les paquet invalide###
iptables -A OUTPUT -o eth0 -m state --state ! INVALID -j ACCEPT
iptables -A OUTPUT -o eth1 -m state --state ! INVALID -j ACCEPT
iptables -A OUTPUT -o eth2 -m state --state ! INVALID -j ACCEPT
iptables -A OUTPUT -o ppp0 -m state --state ! INVALID -j ACCEPT
iptables -A OUTPUT -o tap0 -m state --state ! INVALID -j ACCEPT


###redirection de port###
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 30003 -j DNAT --to-destination 192.168.80.2:30003  
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 30013 -j DNAT --to-destination 192.168.80.2:30013  
iptables -t nat -A PREROUTING -p tcp --dport 40000 -i eth0 -j DNAT --to-destination 192.168.80.2:40000
iptables -t nat -A PREROUTING -p udp --dport 45000 -i eth0 -j DNAT --to-destination 192.168.80.2:45000
# FIN des règles de PORT FORWARDING

vu que j’ai comanter le script réssament il ce peux qu’il y ai des commentaires innexacte

merci a vous

Celle la, elle autorise TOUT en sortie de table filter (car pas de -t, donc par défaut, c’est la table filter) :

et elle se contredit avec la précédente qui est à DROP :

Exactement.

En fait c’est le script qui est incohérent:

Déjà, d’un point de vue sécurité, étant donné que tu ne peut pas savoir si un jour tu ne sera pas “wormé”, il faut bloquer par défaut aussi ce qui sort, et n’ouvrir que ce qu’il faut. :wink:

EDIT: tant qu’à faire j’ai écris la même erreur ici:Ensuite, d’après la page de manuel d’iptables, le fait de ne pas mettre le saut vers la cible (le “-j”) rend la commande seulement bonne à incrémenter un compteur … pas à s’exécuter. Donc, au final, si tu regardes ton script … t’as QUE des “accept” … :wink:

Pour détendre: [mode parano de l’admin sécurité activé]Et t’as confiance en la personne qui t’as filé le script parce qu’elle te mettait en ouvert complet là ![mode désactivé] :118

Donc vu ce qu’on t’as dis, fait les changement et montres-nous, voir si tu as compris ou si on s’est raté, etc.
Et prévenir la personne, si elle s’en sert: elle a optimisé son gruyère. :slightly_smiling:

[quote=“helid”]Exactement.

En fait c’est le script qui est incohérent:

Déjà, d’un point de vue sécurité, étant donné que tu ne peut pas savoir si un jour tu ne sera pas “wormé”, il faut bloquer par défaut aussi ce qui sort, et n’ouvrir que ce qu’il faut. :wink:

Ensuite, d’après la page de manuel d’iptables, le fait de ne pas mettre le saut vers la cible (le “-j”) rend la commande seulement bonne à incrémenter un compteur … pas à s’exécuter. Donc, au final, si tu regardes ton script … t’as QUE des “accept” … :wink:

Pour détendre: [mode parano de l’admin sécurité activé]Et t’as confiance en la personne qui t’as filé le script parce qu’elle te mettait en ouvert complet là ![mode désactivé] :118

Donc vu ce qu’on t’as dis, fait les changement et montres-nous, voir si tu as compris ou si on s’est raté, etc.
Et prévenir la personne, si elle s’en sert: elle a optimisé son gruyère. :slightly_smiling:[/quote]

je vais dire que j’ai pas compris grand chose …

pour moi le script est bon mais aparament pour vous pas

et un script bon dans le même style que le mien ça donne quoi ? :stuck_out_tongue:

que je puisse comparré éventuellement…

parcontre vu que j’utilise des logiciels avec des port aléatoire en sortie c’est pas très bon de bloqué tout en sortie…

Ne tiens pas compte de ce que j’ai écris sur “-j”, c’est un emmellage de neurone. Pfff. :unamused:
Désolé.

Ce qu’a dit dric64 est la solution de ton problème:
Ton deuxième “-P OUTPUT”, avec “ACCEPT” caché au milieu de la table nat, il ouvre tout car il remplace le précédent “DROP”.
C’est un script, donc une série de commande. Donc la dernière commande d’un type écrase la précédente.

C’est plus clair ?

Donc ton script:

[code]…

Initialization de la table NAT

iptables -t nat -F
iptables -t nat -X
iptables -P OUTPUT ACCEPT <- effaces cette ligne
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
…[/code]

Pour les ports aléatoires, aucune idée, jamais eu besoin de le faire.

bonjour,

vous me dite que la ligne output pose problème mais si je la retire … plus rien ne sort ce qui est logique en sois

puisque je ferme tout en haut du script avant de réouvrir

iptables -P INPUT   DROP
iptables -P OUTPUT  DROP
iptables -P FORWARD DROP # les 3 cmd = debranchement des cables

et une autre question en sus

lorsque je supprime la ligne

iptables -A INPUT -i eth0 (et les autres lignes dans ce style) -m state --state ESTABLISHED,RELATED -j ACCEPT

il me résout( plus les dns … normal ?
Jérémy

Oui, car en enlevant cette ligne, tu empêches le trafic retour des connexions que tu as initié depuis ta machine (donc celui de tes requêtes dns entre autres). En gros, le serveur dns recoit la requête, y répond, mais quand les paquets arrivent sur ton serveur, le pare feu les drope car la règle par défaut sur INPUT est DROP, et qu’il n’y a pas de règle d’exception.

L’avantage de cette ligne, c’est qu’elle va autoriser le trafic en “retour” de n’importe qu’elle connexion que tu as établi depuis ton serveur : C’est plutôt sécure, et ca évite d’avoir à gérer au cas par cas ces fameuses règles de retour de trafic.