Mais qui est ce unassigned.psychz.net ?

En regardant mes stats awstats je remarque une adresse qui me parait quelques peut louche. Le nombre de hits et de pages vues étant nettement au dessus de la normal. Je décide de lancer ma petite enquête

On commence par un bon

  1. /*
  2. whois psychz.net
  3. */

Cette commande sans grand succès on lance un

  1. /*
  2. host -t A unassigned.psychz.net
  3. Host unassigned.psychz.net not found: 3(NXDOMAIN)
  4. */

Vous l’aurez compris j’ai pas trouvé grand chose. Mais en regardant dans mon server-status je tombe sur une ip qui est connectée depuis relativement longtemps. Puis en relancant un bon .

  1. /*
  2. host -t PTR 173.224.218.223
  3. 223.218.224.173.in-addr.arpa domain name pointer unassigned.psychz.net.
  4. */

A bingo je viens de trouver une ip qui correspond à ce fameux domain. Je peux enfin regarder dans mes logs apache les requêtes http de cette fameuse ip . Mais avant de regarder les logs, je décide de voir si ils ont plusieurs ip . (leur plage ip)

  1. /*
  2. whois 173.224.218.223
  3. */

Leur plage ip est relativement grande 173.224.208.0/20 ce qui fait 4094 ip publique. En regardant dans les logs access d’apache on peut voir

  1. /*
  2. /var/log/apache2/access.log.2:173.224.218.223 – – [15/Sep/2010:21:32:42 +0200] « HEAD /post/2010/09/09/Nagios-3.2.2 HTTP/1.1 » 200« -«  « Ruby/1.8.7 »
  3. /var/log/apache2/access.log.2:173.224.218.223 – – [15/Sep/2010:22:23:39 +0200] « HEAD /post/2010/09/09/Nagios-3.2.2 HTTP/1.1 » 200« -«  « Ruby/1.8.7 »
  4. /var/log/apache2/access.log.2:173.224.218.223 – – [15/Sep/2010:22:32:34 +0200] « HEAD /post/2010/09/09/Nagios-3.2.2 HTTP/1.1 » 200« -«  « Ruby/1.8.7 »
  5. /var/log/apache2/access.log.2:173.224.218.223 – – [15/Sep/2010:23:31:54 +0200] « HEAD /post/2010/09/09/Nagios-3.2.2 HTTP/1.1 » 200« -«  « Ruby/1.8.7 »
  6. /var/log/apache2/access.log.2:173.224.218.224 – – [15/Sep/2010:13:51:01 +0200] « HEAD /post/2010/09/09/Nagios-3.2.2 HTTP/1.1 » 200« -«  « PostRank/2.0 (postrank.com) »
  7. /var/log/apache2/access.log.2:173.224.218.200 – – [15/Sep/2010:14:09:06 +0200] « HEAD /post/2010/09/09/Nagios-3.2.2 HTTP/1.1 » 200« -«  « PostRank/2.0 (postrank.com) »
  8. */

On voit que les requêtes c’est un peu n’importe quoi . Donc deux solutions pour bloquer ces IP. La méthode barbare avec iptables la méthodes souple avec mod_security mais qui demande un peu plus de ressources.

Voyons la méthode des barbares parfois il faut être un peu brutal (vous m’avez compris 🙂 ) .

  1. /*
  2. iptables -A INPUT -s 173.224.208.0/20 -p tcp -j LOG –log-prefix « psychz » –log-level 7
  3. iptables -A INPUT -s 173.224.208.0/20 -p tcp -j DROP
  4. */

J’ai juste rajouté les logs afin de valider le fonctionnement de ma régle. Les logs seront présents dans kern.log . Mais même si vous êtes un barbare vous êtes quand même propre. Dans le kern.log reçoit déjà pas mal de logs. Donc nos logs iptables nous allons les rediriger dans un autre fichier.

On rajoute les lignes suivantes dans le fichier rsyslog.conf

  1. /*
  2. vim /etc/rsyslog.conf
  3. kern.=debug –/var/log/iptables.log
  4. kern.*;kern.!=debug –/var/log/kern.log
  5. */

De plus on crée un fichier iptables dans /etc/rsyslog.d/iptables et on y ajoute :

  1. /*
  2. :msg, startswith, « psychz: « /var/log/iptables.log
  3. & ~
  4. */

On peut maintenant redémarrer rsyslog . Pour terminer on configure les logrotate :

  1. /*
  2. vim /etc/logrotate.d/iptables
  3. /var/log/iptables.log
  4. {
  5. rotate 7
  6. daily
  7. missingok
  8. notifempty
  9. delaycompress
  10. compress
  11. postrotate
  12. invoke-rc.d rsyslog reload > /dev/null
  13. endscript
  14. }
  15. */

Maintenant vous pouvez regarder le contenu de votre fichier iptables.log . Voila notre méthode façon barbare mais propre est enfin terminer. Voyons maintenant la méthode un peu plus soft. Nous allons pour cela utiliser le mod_security voir mon article ici.

Le user agent unassigned.psychz.net me parait un peu suspect donc nous allons le bloquer.

  1. /*
  2. #On édite le fichier suivant
  3. vim /etc/apache2/modsecurity/modsecurity_crs_40_generic_attacks.conf
  4. #Ajout des régles
  5. SecRule REQUEST_HEADERS:User-Agent « .*PycURL* » « log,deny »
  6. SecRule REQUEST_HEADERS:User-Agent « .*Ruby* » « log,deny »
  7. SecRule REQUEST_HEADERS:User-Agent « .*PostRank* » « log,deny »
  8. */

On peut maintenant faire un restart de notre apache. Voila c’est terminé , à vous de voir la méthode qui vous convient .

Related posts

Leave a Comment