Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1528 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  réseaux et sécurité

  [iptables] un script de 2 ligne qui marche pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[iptables] un script de 2 ligne qui marche pas

n°210105
slvn
Posté le 11-01-2003 à 19:25:11  profilanswer
 

voici un script qui répond de maniere bizarre :  
passerelle : 192.168.0.1
1 pc  192.168.0.2
je veux autoriser le net qu'au pc du dessus. donc j'ai mis le script suivant.
 
(typement je lance ce script alors que tout le reseau local surf, joue sur le net, et/ou utilise mirc)  
quand je le script est lancé :
le pc en 192.168.0.2 continue d'avoir acces a tout normallement.
les autre pc n'ont pu acces aux pages web, mais ils peuvent utiliser Mirc, et même continuer la partie du jeu qu'ils ont en cours (DAOC pour ne pas le citer). C'est normal ca ??
..comment faire un script qui coupe tout brutalement ?
 
 
 
 
 

Code :
  1. LAN_IP=192.168.0.0/24
  2. LAN_IFACE=eth0
  3. LO_IP=127.0.0.1/32
  4. LO_IFACE=lo
  5. INET_IFACE=ppp0
  6. IPT=/sbin/iptables
  7. #ini
  8. echo '0' > /proc/sys/net/ipv4/ip_forward
  9. $IPT -F
  10. $IPT -X
  11. #default
  12. $IPT -P INPUT  DROP
  13. $IPT -P OUTPUT ACCEPT
  14. $IPT -P FORWARD ACCEPT
  15. #accept que mes connections / portable / localhost
  16. $IPT -A INPUT -i $INET_IFACE -j ACCEPT
  17. $IPT -A INPUT -i $LO_IFACE -j ACCEPT
  18. $IPT -A INPUT -i $LAN_IFACE -s 192.168.0.2 -j ACCEPT
  19. #activer le forwarding d ip
  20. echo '1' > /proc/sys/net/ipv4/ip_forward
  21. $IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

mood
Publicité
Posté le 11-01-2003 à 19:25:11  profilanswer
 

n°210137
le passant
Posté le 11-01-2003 à 20:24:42  profilanswer
 

Bon, tout d'abord, ton script tel qu'il est écrit la est très risqué pour tout ce qui ce trouve sur ton LAN : il est visible depuis Internet. C'est comme si tu n'avais aucune protection.
 
Ensuite, si tel que tu le mets, tu espère n'autoriser l'accès au net qu'a une machine... c'est bizarre que tu coupes le net (pages webs) aux autres avec ça.
 
Donc voici ci-dessous un script qui réponds à tes besoins, tout en te laissant la possibilité d'avoir une meilleur protection entre ton LAN et internet.
 
LAN_IP=192.168.0.0/24  
LAN_IFACE=eth0  
 
LO_IP=127.0.0.1/32  
LO_IFACE=lo  
 
INET_IFACE=ppp0  
 
IPT=/sbin/iptables  
 
#ini  
echo '0' > /proc/sys/net/ipv4/ip_forward  
$IPT -F  
$IPT -X  
 
#default  
$IPT -P INPUT  DROP  
$IPT -P OUTPUT ACCEPT  
$IPT -P FORWARD DROP  
 
#accept que mes connections / portable / localhost  
$IPT -A INPUT -i $INET_IFACE -j ACCEPT  
$IPT -A INPUT -i $LO_IFACE -j ACCEPT  
$IPT -A INPUT -i $LAN_IFACE -j ACCEPT
 
#Activation des règles de FORWARD (c'est cette section qui est testé pour les transfert de donnée entre le LAN et internet)
# Dans le cas ou tu ne veux autoriser internet qu'a 192.168.0.2
$IPT -A FORWARD -i $LAN_IFACE -s 192.168.0.2/32 \
   -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# Dans le cas ou tu veux autoriser le net à tout le monde
#$IPT -A FORWARD -i $LAN_IFACE \
   -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# Gère la réponse du net
$IPT -A FORWARD -i $INET_IFACE \
   -m state --state RELATED,ESTABLISHED -j ACCEPT
 
 
#activer le forwarding d ip  
echo '1' > /proc/sys/net/ipv4/ip_forward  
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
 
Je pense que ça répond amplement à tes souhaits.
 
Le passant.


Message édité par le passant le 11-01-2003 à 20:28:03
n°210170
slvn
Posté le 11-01-2003 à 20:50:15  profilanswer
 

oui, tout a fait le script que j'ai fourni ne faisait pas de "firewall", mais je capte pas pkoi il supprime pas les connections ...  
il laissait passer des paquet venant du Lan :(

n°210191
le passant
Posté le 11-01-2003 à 21:31:27  profilanswer
 

Et bien oui, exactement :
 
LAN <--> internet c'est FORWARD
 
LAN --> Passerelle et Internet --> passerelle c'est INPUT
 
passerelle --> LAN et passerelle --> Internet c'est OUTPUT
 
Donc comme tu avais FORWARD d'ouvert, tu ne filtrais rien. Donc la porte ouverte à tout type de connection.
 
Sauf pour internet. Là, je comprends pas.
Si ta passerelle est le serveur de nom, et que tu bloqie son accès à toute les machines sauf la 192.168.0.2, ça explique pourquoi aucune n'avait accès à internet.
 
Sauf que pour que ta passerelle devait avoir une possibilité de recevoir des réponses du net sur le port DNS (53), et ce n'est pas le cas.
 
Comprends po trop !
 
Ce que tu dois bien comprendre, c'est le schéma que j'ai mis plus haut.
 
Un petit site pour t'aider pour la suite :
http://christian.caleca.free.fr
 
Le passant.

n°210216
slvn
Posté le 11-01-2003 à 22:24:16  profilanswer
 

oui, ma passerelle est bien serveur de nom pour tout mon reseau local.
 
j'avias pas bien capté, le system pour le firewall :
je pensais que :  
 
lan <-> internet  
 
c'etait d'abord "input" puis "forward" et enfin "output" !!
 
tu viens de m'eclaircir le sujet et je t'en remercie :o)

n°210247
le passant
Posté le 11-01-2003 à 23:45:57  profilanswer
 

Arghh !!! Dans le script que je t'ai filé (et dans le tiens aussi) il y a une enorme bourde !!!!
 
Je ne comprennais pas d'où pouvait venir l'acceptation du DNS, mais je viens juste de tilter !!!
 
C'est ce truc :
 
$IPT -A INPUT -i $INET_IFACE -j ACCEPT
 
A virer absolument !!!
 
Désolé pour le temps de détante, mais ch'uis un eu claqué.
 
Donc cette ligne tu dois la virer absolument et la remplacer par un truc du style :
 
$IPT -A INPUT -i $INET_IFACE -p udp -sp 53 \
   -m state --state RELATED -j ACCEPT

 
Parce que la, dans l'état actuel des choses, tu as commis la même erreur que pour le FORWARD !!!!
 
A changer tout de suite !!!!
 
Sur le INPUT -i $INET_IFACE, fait bien attention au port qui sont ouvert, ET dans quels conditions tu dois les ouvrir !!
C'est vraiment très important !
 
Sinon, n'importe qui pourra accéder à ta passerelle, et donc au reste de ton LAN, même si tu as des règles FORWARD blindé.
 
Ah moins que ce ne soit qu'un script de test, mais même...
 
Le passant.

n°210250
slvn
Posté le 11-01-2003 à 23:50:33  profilanswer
 

euh la je capte pu ...
le forward est blindé ok.
 
le seul truc que ca peut faire c blocker les port de la machine
mais vu qu'aucun service ne tourne dessus :??:
 
(au passage dns, c tcp + udp il me semble)

n°210265
le passant
Posté le 12-01-2003 à 00:18:38  profilanswer
 

Slvn a écrit :

euh la je capte pu ...
le forward est blindé ok.
 
le seul truc que ca peut faire c blocker les port de la machine
mais vu qu'aucun service ne tourne dessus :??:
 
(au passage dns, c tcp + udp il me semble)


 
Il faut aussi fermer le INPUT dans le sens : internet --> passerelle.
Et ça c'est géré par les règles du style : INPUT -i $INET_IFACE.
 
Si tu la met en -j ACCEPT, ça veut dire que tu acceptes tout ET n'importe quoi dessus, or, ce n'est pas ce qu'on souhaite, surtout depuis internet !
 
Pour reprendre le sens de ton script tu dois voir que :
 
A/ Traffic LAN --> internet : FORWARD -i $LAN_IFACE
 
B/ Traffic internet --> LAN : FORWARD -i $INET_IFACE
 
C/ Traffic LAN --> passerelle : INPUT -i $LAN_IFACE
 
D/ Traffic passerelle --> LAN : OUTPUT -o $LAN_IFACE
 
E/ Traffic internet --> passerelle : INPUT -i $INET_IFACE
 
F/ Traffic passerelle --> internet : OUTPUT -o $INET_IFACE
 
Si tu ne fais pas extrèmement attention aux autorisations que tu donnes sur les points B et E, tu riques d'avoir pas mal de surprises (prises de contrôle de ta passerelle, de ton LAN à distance, etc...).
 
En effet, même si aucun service n'est actif chez toi, les "méchants" peuvent scanner les différents ports et voir lesquels sont ouverts.
Une fois ceci fais, j'imagine qu'ils peuvent s'en servir pour faire plein de choses pas sympathiques.
 
Dans ce cas, le plus simple est de fermer les ports, que des services soient actif ou pas !
Pas de portes ouvertes = moins de possibilité pour venir t'embèter !
 
J'espère avoir réussi à te convaincre.
 
Tiens, je pense une image :
 
Une porte ouverte est du type : -j ACCEPT, n'importe qui peut s'inviter chez toi avec ou sans invitation.
 
Une porte avec un protier qui filtre est : -m state --state ... -j ACCEPT, tu contrôle ce qui ce passe.
 
Une porte murée : -j DROP
 
Dans le cas B et E, seules les 2 dernières solutions sont indispensables, la première étant pour les suicidaires (ou certains autres cas particuliers).
 
Je t'invite fortement à lire le maximum de choses avant de poursuivre, tu évitera ainsi pas mal de soucis.
 
Le passant.
 
ps : DNS utilise PRINCIPALEMENT ET EXCLUSIVEMENT udp.

n°210267
slvn
Posté le 12-01-2003 à 00:32:51  profilanswer
 

un grand merci a toi Le passant :jap:
 
je vais ameliorer le script grace au manuel officiel

n°210272
le passant
Posté le 12-01-2003 à 01:27:30  profilanswer
 

De rien, bonne lecture.
 
Le passant.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  réseaux et sécurité

  [iptables] un script de 2 ligne qui marche pas

 

Sujets relatifs
IPTABLES c'est bien mais ...[debian] snif :( mon vncserver marche pu aidez-moi svp (pb adresse ip)
[iptables] et oui 1 de plus :) [RESOLU][SCRIPT] question sur "find"
regles iptables, vous en pensez koi ? (script...)[linux] pb SBLive qui playe en mono, volume xmms qui marche pas ...
[IPTABLES] discard daytime smtp time, à fermer ?[aide pour ptit script en bash!]
Lecteurs cd marche plus!configurer un firewall avec iptables
Plus de sujets relatifs à : [iptables] un script de 2 ligne qui marche pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR