Antiflood sshd avec Cygwin sur windows.

Antiflood sshd avec Cygwin sur windows. - Tutoriels - Windows & Software

Marsh Posté le 23-05-2006 à 01:49:54    

vous qui avez monté un serveur ssh (qu'il soit microsoftien ou linuxien), vous avez du vous rendre compte que les attaques par bruteforce sont tres frequente.
j'ai cherché un moyen de bannir une IP apres un certain nombre d'essai de login raté en ssh sur un serveur cygwin.
 
je pars du principe que vous avez deja installé sshd en service, sinon allez faire un saut ici : http://flr.free.fr/spip/article.php?id_article=24
 
par defaut, sshd ne log rien (le saligo).
on edite donc la conf (/etc/sshd_config ou C:\cygwin\etc\sshd_config)
et on decommente ces deux lignes :

Code :
  1. SyslogFacility AUTH
  2. LogLevel INFO


 
le probleme c'est que maintenant sshd log dans le journal des evenements windows et non pas dans /var/log/ comme on le souhaiterez...  :heink:  
on va donc installer un deuxieme service : syslogd
 
ouvrez un term cygwin et tapez syslogd-config
repondez "yes" a la creation du fichier de config (/etc/syslog.conf)
repondez "yes" pour installer le service.
pour le demarrer, il suffit de faire un net start syslogd
 
voila, maintenant sshd loggera tout dans /var/log/messages et non plus dans le journal des evenements windows.
 
pour empecher l'acces a un host il existe le fichier /etc/hosts.deny qui contient la liste des IP qui n'ont pas le droit de se connecter.
 
il ne reste plus qu'a faire un script qui lis le fichier /var/log/messages et qui recherche les tentative d'intrusion et qui ecrit dans le fichier /etc/hosts.deny les ip qui font du bruteforce.
 
voici le script que j'ai ecris (a l'arrache en 3 minutes) en perl :

Code :
  1. #!/bin/perl                                                                                                                 
  2. use strict;
  3. # limit before bann an IP.                                                                                                   
  4. my $limitcount = 10;
  5. my $listname = "/etc/hosts.deny";
  6. open(LOG, "/var/log/messages" ) || die ("Impossible de lire le fichier Log.\n" );
  7. my %list;
  8. while (<LOG> )
  9. {
  10.     /.*sshd:.*Failed.* (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*/gi;
  11.     if ($1 ne "" )
  12.     {
  13.         if (exists $list{$1})
  14.         {
  15.             $list{$1}++;
  16.         }
  17.         else
  18.         {
  19.             $list{$1} = 1;
  20.         }
  21.     }
  22. }
  23. close (LOG);
  24. `echo -n "" > $listname`;
  25. foreach my $key (keys %list)
  26. {
  27.     my $value = $list{$key};
  28.     if ($value > $limitcount)
  29.     {
  30.         `echo "sshd: $key" >> $listname`;
  31.     }
  32. }


 
il ne reste plus qu'a le scheduler :)


Message édité par azubal le 23-05-2006 à 01:56:56
Reply

Marsh Posté le 23-05-2006 à 01:49:54   

Reply

Marsh Posté le 26-10-2006 à 18:29:48    

Bonjour et merci de ce tutoriel ayant l'air très complet!
 
Euh ...Comment installer ce nouveau service : SYSLOGD?
 
Par ailleurs, je remarque que même étant l'admin sous windows et cygwin je ne peux pas écrire dans le fichier
C:\cygwin\etc\sshd_config. Je dois avoir préalablement certaines permissions sur ce repertoire?
 
Voilà j'en suis encore là.
 
Alors si qqu'un peut m'aider.
 
Merci.

Reply

Marsh Posté le 08-01-2007 à 21:45:36    

Bonjour,
Perso, je suis arrivé à démarrer le service syslogd, et tout se logue dans /var/log/messages.
J'ai aussi créé le fichier host.deny (première ligne vide)
Mais je ne parviens pas à faire fonctionner le script bien que j'ai installé active-perl ainsi qu'un schedduler(rien ne se copie dans hosts.deny), et le flood va toujours bon train.  
Si quelqu'un a une idée...
Merci.

Reply

Marsh Posté le 09-01-2007 à 13:21:36    

Il faudrait revoir le script. J'avais code ca en 3 minutes sur un coins de table. Je n'ai pas le temps de regarder pour le moment.. J'essairai plus tard.

Reply

Marsh Posté le 09-01-2007 à 13:52:36    

pourquoi se prendre la tete avec un script ?.

 

il suffit d'utiliser iptables avec les regles suivantes :

 

/sbin/iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
/sbin/iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 300 --hitcount 3 -j DROP

 

et le tour est joué (les attaques par brute force peuvent continuer mais on ne peut se connecter que 3 fois en 300 secondes....)

 

cf le sujet :

 

http://forum.hardware.fr/hfr/OSAlt [...] 8574_1.htm


Message édité par vrobaina le 09-01-2007 à 13:55:04
Reply

Marsh Posté le 09-01-2007 à 15:08:25    

Ca c'est cool ladidonc...
Et pour windows (cygwin) ? :(

Reply

Marsh Posté le 09-01-2007 à 15:15:34    

si tu installes cygwin, normalement tu peux installer iptables.
 
qd a une installation windows avec un serveur ssh (mais pas de type unix), là je pense qu'il faut filtrer via un firewall (genre outpost par exemple).

Reply

Marsh Posté le 09-01-2007 à 17:55:37    

euhh, ca me semble bizzare ce que tu dis là.
iptable agit sur le kernel. hors sur cygwin, il n'y en a pas :/

Reply

Marsh Posté le 14-01-2007 à 23:43:49    

Donc si je comprends bien, iptables ne peut être installé du fait que l'OS est windows et que Cygwin n'ait pas de kernel ; et quand au script, il ne fonctionne pas... Que faire?

Reply

Marsh Posté le 15-01-2007 à 21:27:53    

Coder un script qui marche...

Reply

Marsh Posté le 15-01-2007 à 21:27:53   

Reply

Marsh Posté le 30-01-2007 à 00:05:28    

Honneur à celui qui a proposé le dit script...

Reply

Marsh Posté le 30-01-2007 à 00:18:54    

au fait pourquoi se prendre la tete a empecher les tentatives par "brut forces" ?.
 
si je me rappelle bien, ssh pour fonctionner avec une authentification par clés public/privé  et dans ce cas il n'y a plus risque.
 


---------------
Les cons, ça ose tout, et c'est même à ça qu'on les reconnait....
Reply

Marsh Posté le 07-10-2008 à 11:33:36    


Hello petites infos de refresh pour les gens qui utilise Cygwin sous XP.
 
N'oubliez pas d'ajouter lors de l'install de cygwin : syslog
pour la version Cygwin 1.5.25 le nom exacte est syslog-ng
 
Après l'installation de cygwin :  
- installation du service syslog --> syslog-ng-config (répondre yes)
- net start syslog-ng (pour démarrer le service)
 
Et n'oubliez pas de dé-commentez les lignes dans sshd-config (comme préciser par psyjc :
SyslogFacility AUTH
LogLevel INFO
 
Chouette link pour installer Cygwin (en UK) fait par Nicholas Fong : il explique en détail la procédure d'install  
http://www.chinese-watercolor.com/ [...] -sshd.html
 
@++

Reply

Sujets relatifs:

Leave a Replay

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