iptable+dyndns

iptable+dyndns - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 19-04-2006 à 11:51:59    

Bonjour tout le monde,

 

Je m'interesse à iptable en ce moment
voila ma question :

 
Code :
  1. iptables -t filter -A INPUT -s mondyndns.org -p tcp --dport 5900 -j ACCEPT
 

est ce possible de faire une regle de ce genre(dsl si y a des fautes),
pour que je puisse
acceder à mon server vnc de partout dans le monde
juste en changeant l
adresse ip dans la base de donnees de DynDns.org

 

cordialement

 


[size=2]winzo
 

 

[/size][size=2][/size]

Reply

Marsh Posté le 19-04-2006 à 11:51:59   

Reply

Marsh Posté le 19-04-2006 à 13:34:44    

up :bounce:
oulala elle est pas belle la mise en forme

 

je voulais marquer ca en fait :

 

iptables -t filter -A INPUT -s mondyndns.org -p tcp --dport 5900 -j ACCEPT

 

merki

 

winzo

 

Reply

Marsh Posté le 19-04-2006 à 14:25:46    

iptables ne prend que les adresses IP donc avant d'ajouter cette règle, tu récupères l'adresse IP de ton dyndns.

adr_ip=`host mondyndns.org | awk '{print($4);}'`;


Message édité par jlighty le 19-04-2006 à 17:25:50
Reply

Marsh Posté le 19-04-2006 à 17:20:35    

merki beaucoup jlighty
 
j ai vu que tu participes bcp sur ce forum
donc ca doit etre une superbe info que tu me donnes ;)  
je regarde ca des que je rentre car la je suis au taff :)  
 
merki encore
 
winzo

Reply

Marsh Posté le 19-04-2006 à 17:36:20    

en fait j ai pas pu attendre de rentrer chez moi...
 
c une bonne piste mais ya un hic  
 
car la variable va prendre la valeur retournée par le awk lorsque je lance mon script iptable
c est a dire au demarrage du serveur ma variable prendra la valeur de l'ip du Pc a mon taff par exemple
mais si je veux y aller de chez un ami....le probleme se pose
 
il faudrait que mon script resolve les noms presque "a la volee"
 
pas trop confu ttes mes betises ?
 
merki
winzo

Reply

Marsh Posté le 19-04-2006 à 18:03:50    

Il suffit de lancer régulierement le firewall ou mieux encore de ne le lancer uniquement si le dynDNS à changer
Un script appeler par cron

Code :
  1. #!/bin/sh
  2. #on récupère l'IP
  3. host=`host mon_dyndns`
  4. f=`echo "$host" | grep "ost"`
  5. f1=`echo "$host" | grep "found"`
  6. #on verifie si la connexion est ok
  7. if [ -n "$f" -o  -n "$f1" ];then
  8. echo "echec resolve de lhost"
  9. exit 1
  10. fi
  11. host=`echo "$host" | awk '{print($4);}'`;
  12. maj=0;
  13. if [ ! -e /tmp/dyn_dns ]; then
  14. maj=1;
  15. elif [  "$host" != `cat /tmp/dyn_dns` ]; then
  16. maj=1;
  17. fi
  18. if [ "$maj" = 1 ]; then
  19. echo "relance firewall"
  20. /usr/local/bin/firewall.sh
  21. fi
  22. echo "$host" > /tmp/dyn_dns


Message édité par jlighty le 19-04-2006 à 18:04:11
Reply

Marsh Posté le 19-04-2006 à 19:04:55    

Merki jlighty
Merci Mr Papi pour m avoir enseigner le C
 
j avais pensé a ca sur la route en rentrant chez moi
mais il faut que mon code soit clean pour que ce ne soit trop lourd pour le serveur
aussi il faut trouver une bonne frequence pour mon cron : 15 minutes
 
Une autre tite question :
le script iptable, il "s execute" 1 fois au démarrage  
puis a chaque connexion on le "lit" ou il "s execute" encore
 
car dans le 2ieme cas la variable serait mise a jour comme il faut
mais peut etre un peu long le script a cause de la resolution de nom
 
merki jlighty
 
winzo

Reply

Marsh Posté le 19-04-2006 à 19:31:37    

Citation :


le script iptable, il "s execute" 1 fois au démarrage  
puis a chaque connexion on le "lit" ou il "s execute" encore


à chaque changement d'adresse IP, il faut purger les règles iptables puis rajouter les nouvelles règles.
Cependant il sera possible de détruire uniquement la règle contenant le dyndns puis d'en réinsérer une avec la nouvelle adresse IP (iptables -I)
 
Concernant le script, il n'est pas encore optimal, j'ai encore d'autre modif à faire.

Reply

Marsh Posté le 20-04-2006 à 08:31:00    

Bon matin a tous
 
jlighty, a chaque fois qu une trame veut entrer sur mon reseau par mon serveur
le script iptable est lu et on execute "adr_ip=`host mondyndns.org | awk '{print($4);}'`;" ou pas ?
 
....euuuhh desole je me reveille : tu veux que je mette cette commande dans un batch en tete des commandes qui reinitialisent  
mes regles iptables...OK (moi je pensais qu il fallait mettre tt ca directement ds un fichier genre iptable.conf)
mais non tt ca se fait grace au batch
 
dc c 'est clair que ma variable n est pas remplie a chaque "lecture" du fichier
 
dc le cron est la meilleur méthode pour le moment
 
et toi t utilises cette methode,personellement, jlighty ?
 
merki beaucoup
 
winzo

Reply

Marsh Posté le 20-04-2006 à 08:38:37    

lol c encore moi je viens de trouver une autre idee :
 
mon serveur iptable a aussi un serveur apache qui tourne,
je n ai qu a coder une petite page protegee pour entrer la nouvelle adresse
et quand je valide ca me lance un batch ou un cgi qui lance mon script qui charge mes regles iptable
avec ma nouvelle ip
 
pas mal non ?
a part le serveur web sur le meme pc que le firewall, mais bon g pas assez de carcasse de pc pour tt separer(pas encore)
 
merki
 
winzo

Reply

Marsh Posté le 20-04-2006 à 08:38:37   

Reply

Marsh Posté le 20-04-2006 à 08:39:26    

winzo a écrit :

a chaque fois qu une trame veut entrer sur mon reseau par mon serveur
le script iptable est lu et on execute "adr_ip=`host mondyndns.org | awk '{print($4);}'`;" ou pas ?


Non, iptables sert a ajouter des regles de filtrage dans le firewall intégré au kernel (ie: netfilter).
Donc ton script est exécuté une seule fois au démarrage dans le but de "remplir" netfilter.
Toutes les commandes de ton script ne sont exécutées qu'une seule et unique fois. Ensuite les regles sont statiques.
 
A chaque packet qui rentre sur ton firewall, netfilter va confronter les informations du paquets aux informations qu'il a en sa possession. A la premiere regle qui matches, il s'arrete et prend une  decision.
 

Reply

Marsh Posté le 20-04-2006 à 10:04:47    

Bonjour tt le monde
 
un question de resolu merki l0ky et jlighty
maintenant reste a choisir entre le batch/cron ou phpcgi/apache
pour recharger mes regles iptables
 
merki les amis
 
winzo

Reply

Marsh Posté le 20-04-2006 à 10:10:58    

Citation :

maintenant reste a choisir entre le batch/cron ou phpcgi/apache
pour recharger mes regles iptables


batch/cron c'est ce qu'il y a de plus efficace et de léger.

Reply

Marsh Posté le 20-04-2006 à 10:11:46    

Personnellement je prendrais la solution du cron.
D'autre solution existe également. Quand ton interface change d'adresse IP tu peux lui faire exécuter des scripts dès que l'interface est de nouveau "up". A ta place j'exécuterais ces scripts de cette manière.
 
- mise a jour de dyndns.org
- mise a jour de la regle de firewalling

Reply

Marsh Posté le 20-04-2006 à 10:17:00    

Citation :

Quand ton interface change d'adresse IP tu peux lui faire exécuter des scripts dès que l'interface est de nouveau "up".


je pense que l'IP de son serveur ne change pas mais  celle du client est dynamique.
Dans mon cas, j'ai optimisé le script de détection de changement d'adresse IP (qui a buggué hiers d'ailleur ;) )
Comment il fonctionne :
1- on récupère l'IP donné par host mondyndns
2- on récupère l'IP donné dans iptable (pour ma part c'est celle qui peut accéder au port ssh )

ip_iptables=` /sbin/iptables -L INPUT -n -v |grep dpt:22 |awk  '{print $8}'`


3- on compare simplement les 2 : si différent on relance le firewall avec la nouvelle IP.

Reply

Marsh Posté le 20-04-2006 à 10:19:39    

jlighty a écrit :

je pense que l'IP de son serveur ne change pas mais  celle du client est dynamique.


Ah oui effectivement... [:fing fang fung]

Reply

Marsh Posté le 20-04-2006 à 10:54:02    

merki bcp les gars, je me rapproche du but
 
avec la methode cron, on bouffe tant de ressources que ca : juste une petite requete http, 1 ouverture de fichier + un test
 
cependant avec la methode cron, il y a une etape de + qu avec la methode phpcgi/apache : le fait d attendre 5 ou 15 minutes que le cron s execute
alors qu avec la methode phpcgi/apache, on envoie l ip et le script s'execute directement et seulement a ce moment la en +
 
mais bon encore faut il avoir un serveur apache qui tourne(moi je v en mettre un c oblige car faut que j heberge mon site)...
 
mais pour ceux qui hebergent pas leur site :
le serveur apache prendra peut etre plus de ressources qu un cron et je suis pas a 5 minutes pres(si j execute mon cron ttes els 5 minutes)
 
dilem a resoudre, choix personnel...
 
merki les gars pour votre aide
je vous tiens au courant de mon choix
 
winzo

Reply

Marsh Posté le 20-04-2006 à 11:06:10    

En même temps tu essayes de déployer une solution de bourrain pour tenter de filtrer une sessions SSH.
Il y a des solutions tout aussi efficace qu'une règle de brute avec iptables/netfilter : ne serait que restreindre l'acces a ton serveur seulement pour un compte, et de mettre seulement une identification par clé.

Reply

Marsh Posté le 20-04-2006 à 11:08:50    

niveau charge CPU/mémoire, Cron est largement plus léger qu'Apache.
De plus niveau sécurité, on n'a pas besoin d'ajouter un serveur Web qui devra être accessible depuis Internet.

Citation :

alors qu avec la methode phpcgi/apache, on envoie l ip et le script s'execute directement et seulement a ce moment la en +


tu saisies ton adresse IP depuis le site web ? cela voudrait dire que tu as ajouté une authentification supplémentaire pour éviter qu'une personne saisisse son adresse IP à la place de la tienne ?
Ou c'est simplement un bouton qui fera la relation entre tondyndns<->ton IP et qui lancera, le cas écheant, le firewall.

Reply

Marsh Posté le 20-04-2006 à 11:11:51    

l0ky a écrit :

En même temps tu essayes de déployer une solution de bourrain pour tenter de filtrer une sessions SSH.
Il y a des solutions tout aussi efficace qu'une règle de brute avec iptables/netfilter : ne serait que restreindre l'acces a ton serveur seulement pour un compte, et de mettre seulement une identification par clé.


c'était juste par fainéantise, j'en avais marre de logguer les tentatives d'accès SSH depuis la Chine... :D

Reply

Marsh Posté le 20-04-2006 à 12:28:10    

Bientot l heure du dejeuner, ptit tour sur HFr avant d aller manger :)
 

tu saisies ton adresse IP depuis le site web ? cela voudrait dire que tu as ajouté une authentification supplémentaire pour éviter qu'une personne saisisse son adresse IP à la place de la tienne ?
Ou c'est simplement un bouton qui fera la relation entre tondyndns<->ton IP et qui lancera, le cas écheant, le firewall.


 
Oui oui biensur si je choisis la methode phpcgi/apache,je coderais un form dans la page admin de mon site, securisee par un MDP
1 je rentre MDP pour rentrer sur al apge admin
2 je saisis l adresse ip wan du poste sur lequel je suis
3 je valide  
4 ca envoie sur mon serveur web, php le traduit et lance le script
5 ma table iptable est mise a jour juste en temps voulu :p
 

De plus niveau sécurité, on n'a pas besoin d'ajouter un serveur Web qui devra être accessible depuis Internet.


 
J heberge mon site web mais j ai pas 30 000 Pc pour tt separer alors pour le moment le firewall et le serveur web sont sur la meme bécane
(vont etre sur al meme becane, c aps encore fait tt ca)
 
merki les copains
et bon appétit
 
winzo
et  
 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed