Firewall, TCP wrapper, et IP dynamiques...

Firewall, TCP wrapper, et IP dynamiques... - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 20-07-2003 à 16:49:21    

Bonjour,
 
J'ai un serveur sous Linux auquel l'accès est limité à seulement quelques machines sur Internet (filtrage par firewall et xinetd)
Parmi ces machines autorisées, certaines ont une IP fixe : ce qui ne pose pas de problème dans mon script iptables et dans le fichier hosts.allow.
En revanche, d'autres ont une IP dynamique (et un nom chez dyndns.org) et là ça bloque pour le script iptables et le hosts.allow car seule l'IP enregistrée au moment du boot du PC et du lancement de xinetd est prise en compte. Lorsque le client change d'IP, il perd l'accès...
 
Pour le firewall, je compte faire un script qui vérifie l'IP des clients chez dyndns toutes les x minutes et modifie les règles iptables en conséquence en cas de changement.
Pour le hosts.allow, il faudrait utiliser le même principe mais c'est carrément le fichier hosts.allow qu'il faut éditer voire réécrire avec l'ip modifiée.
 
Quelqu'un a t'il déjà mis en place une solution à ce genre de problème ? des scripts ? ou d'autres idées ?
 
Merci d'avance.

Reply

Marsh Posté le 20-07-2003 à 16:49:21   

Reply

Marsh Posté le 20-07-2003 à 17:44:46    

JBM a écrit :

Bonjour,
 
J'ai un serveur sous Linux auquel l'accès est limité à seulement quelques machines sur Internet (filtrage par firewall et xinetd)
Parmi ces machines autorisées, certaines ont une IP fixe : ce qui ne pose pas de problème dans mon script iptables et dans le fichier hosts.allow.
En revanche, d'autres ont une IP dynamique (et un nom chez dyndns.org) et là ça bloque pour le script iptables et le hosts.allow car seule l'IP enregistrée au moment du boot du PC et du lancement de xinetd est prise en compte. Lorsque le client change d'IP, il perd l'accès...
 
Pour le firewall, je compte faire un script qui vérifie l'IP des clients chez dyndns toutes les x minutes et modifie les règles iptables en conséquence en cas de changement.
Pour le hosts.allow, il faudrait utiliser le même principe mais c'est carrément le fichier hosts.allow qu'il faut éditer voire réécrire avec l'ip modifiée.
 
Quelqu'un a t'il déjà mis en place une solution à ce genre de problème ? des scripts ? ou d'autres idées ?
 
Merci d'avance.

si tu met directe les noms dns ca marche pas ?


Message édité par HuGoBioS le 20-07-2003 à 17:44:56

---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 20-07-2003 à 17:52:11    

HuGoBioS a écrit :

si tu met directe les noms dns ca marche pas ?


 
non, ça prend en compte l'ip enregistrée à l'instant de l'execution mais comme elle change par la suite, le client n'a plus accès...

Reply

Marsh Posté le 20-07-2003 à 18:23:15    

en fait le pb c'est que la resolution du nom dns ne se fait qu'au lancement du prog et pas durant toute la session...


---------------
-= In Kik00 101 I trust :o =-
Reply

Marsh Posté le 20-07-2003 à 19:50:29    

JBM a écrit :

Bonjour,
 
J'ai un serveur sous Linux auquel l'accès est limité à seulement quelques machines sur Internet (filtrage par firewall et xinetd)
Parmi ces machines autorisées, certaines ont une IP fixe : ce qui ne pose pas de problème dans mon script iptables et dans le fichier hosts.allow.
En revanche, d'autres ont une IP dynamique (et un nom chez dyndns.org) et là ça bloque pour le script iptables et le hosts.allow car seule l'IP enregistrée au moment du boot du PC et du lancement de xinetd est prise en compte. Lorsque le client change d'IP, il perd l'accès...
 
Pour le firewall, je compte faire un script qui vérifie l'IP des clients chez dyndns toutes les x minutes et modifie les règles iptables en conséquence en cas de changement.
Pour le hosts.allow, il faudrait utiliser le même principe mais c'est carrément le fichier hosts.allow qu'il faut éditer voire réécrire avec l'ip modifiée.
 
Quelqu'un a t'il déjà mis en place une solution à ce genre de problème ? des scripts ? ou d'autres idées ?
 
Merci d'avance.


 
Tiens j'ai le meme probleme :)
Pour iptables je n'est pas trouver encore la solution.  
Mais pour xinetd je te propose d'envoyer un signal SIGHUP a xinetd a l'aide de cron

Code :
  1. #killall -HUP xinetd


 
Cela oublige xinetd de relire le fichier de configuration d'apres le man :

   
SIGHUP         causes a hard reconfiguration, which means that xinetd re-reads the configuration file  and  terminates
                      the  servers  for  services  that are no longer available. Access control is performed again on running
                      servers by checking the remote location, access times and server instances. If  the  number  of  server
                      instances  is  lowered,  some arbitrarily picked servers will be killed to satisfy the limit; this will
                      happen after any servers are terminated because of failing the remote location or access  time  checks.
                      Also,  if  the INTERCEPT flag was clear and is set, any running servers for that service will be termi-
                      nated; the purpose of this is to ensure that after a hard reconfiguration  there  will  be  no  running
                      servers that can accept packets from addresses that do not meet the access control criteria.


Reply

Marsh Posté le 20-07-2003 à 20:01:18    

Je suis en train de préparer un script pour iptables. Je le poste si ça marche ;)
 
Et pour xinetd, pas besoin de lui envoyer un signal, il prend en compte automatiquement chaque modification dans le fichier hosts.allow

Reply

Marsh Posté le 20-07-2003 à 23:40:18    

Voilà, si ça intéresse quelqu'un, j'ai fait un petit script.
Y a plus qu'à tester et améliorer :)
 
Le nom de l'hôte est passé en paramètre. Il faut également un fichier du nom de l'hôte dans /root qui contient son IP.
 

Code :
  1. #!/bin/sh
  2. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
  3. HOSTNAME="$1"
  4. IPREF=`cat /root/$HOSTNAME`
  5. iptables -D INPUT -j ACCEPT -s $IPREF 2>/dev/null 1>&2
  6. iptables -I INPUT -j ACCEPT -s $IPREF 2>/dev/null 1>&2
  7. while true; do
  8. sleep 300
  9. IP=`host $HOSTNAME | awk '{print $4}'`
  10. if [ "$IPREF" != "$IP" ]; then
  11.         # Mise à jour firewall
  12.         iptables -D INPUT -j ACCEPT -s $IPREF 2>/dev/null 1>&2
  13.         iptables -I INPUT -j ACCEPT -s $IP 2>/dev/null 1>&2
  14.         # Remplacement dans hosts.allow
  15.         sed "s/$IPREF/$IP/g" /etc/hosts.allow >/root/hosts.allow.tmp
  16.         mv -f /root/hosts.allow.tmp /etc/hosts.allow
  17.         echo $IP >/root/$HOSTNAME
  18.         IPREF="$IP"
  19. fi
  20. done

Reply

Marsh Posté le 21-07-2003 à 05:01:22    

un petit
 

Code :
  1. if [ ! -e "$1" ] ; then
  2.   echo "$1: No such file or directory"
  3.   exit 1
  4. fi

 
 
au début du script serait mieux.


Message édité par deviant le 21-07-2003 à 05:01:56
Reply

Sujets relatifs:

Leave a Replay

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