Contourner les restrictions de connexions sur un serveur OVH

12 juillet 2009 par Gaëtan Laisser une réponse »

Plop à tous …

Bé voilà, je pense que d’autres hébergeurs de service tor chez OVH ont rencontrés ce problème : lorsque l’on se connecte à trop de serveurs en même temps (genre une dizaine de connexions à des ip différentes sur un même port, genre le 443 qui est pas mal utilisé par les relais en Allemagne), les services d’OVH détecte une attaque et redémarre le serveur en mode rescue … (ce qui m’est arrivé 3 fois cette semaines, alors que mon serveur tor ne fait que dans les 1,4mo/s de traffics dédiés à tor), rendant le serveur inaccessible, et le redémarrage depuis l’interface d’OVH fonctionnant une fois sur trois, on se retrouve avec un serveur down une journée entière.

Après avoir contacté le service technique, on m’a gentillement fait comprendre que je ne pouvais pas faire augmenter cette limite, et qu’il fallait plutôt revoir la configuration de mon serveur … donc voilà, j’ai trouvé une technique plutôt bourrin (un drop de la connexion c’est super moche pour un relai tor), mais qui semble fonctionner pas trop mal :

  1. /sbin/iptables -N ovh_sux
  2. /sbin/iptables -A OUTPUT -p tcp –syn –dport 443 -j ovh_sux
  3. /sbin/iptables -A ovh_sux -m limit –limit 5/hour -j LOG –log-prefix OVH-SUX
  4. /sbin/iptables -A ovh_sux -m limit –limit 7/minute -p tcp –syn –dport 443 -j ACCEPT
  5. /sbin/iptables -A ovh_sux -p tcp –syn –dport 443 -j DROP

Et voilà, comme ça on log dès qu’on dépasse la limite de « kick » d’ovh, on drop dès que l’on a eu plus de 7 flags tcp syn sur des machines distantes sur le port 443.
(Noté l’amour que j’ai pour OVH … vivement que des concurents vendent du dédié à 10€ ^^).

Edit : La configuration plus haut ne fonctionne pas … à cause du limit-burst qui est de 5 par défaut on dépasse donc rapidement la limite comme OVH reboot la machine à 10 … owned ^^
Donc j’ai revu la règle du firewall, ce qui donne ceci pour faire plus propre … :

  1. /sbin/iptables -N log_drop
  2. /sbin/iptables -A log_drop -m limit –limit 1/hour –limit-burst 1 -j LOG –log-prefix OVH-SUX
  3. /sbin/iptables -A log_drop -j DROP
  4.  
  5. /sbin/iptables -N ovh_sux
  6. /sbin/iptables -A OUTPUT -p tcp –syn –dport 443 -j ovh_sux
  7. /sbin/iptables -A ovh_sux -m limit –limit 7/minute –limit-burst 1 -j ACCEPT
  8. /sbin/iptables -A ovh_sux -j log_drop
  9. /sbin/iptables -N ovh_sux_sec
  10. /sbin/iptables -A OUTPUT -p tcp –syn –dport 443 -j ovh_sux_sec
  11. /sbin/iptables -A ovh_sux_sec -m limit –limit 1/second –limit-burst 1 -j ACCEPT
  12. /sbin/iptables -A ovh_sux_sec -j DROP

Ici, je laisse passer 7 ou 8 paquets (avec le burst) TCP SYN puis je commence à drop et j’écris un paquet bloqué dans les logs par heure comme ça je me spam pas trop, et en plus je drop dès que l’on envois plus de deux paquets syn par seconde.
Faudrait quand même que OVH revoit son système de détection d’attaque …

Sinon, j’ai remarqué que le fait de logger les paquets permettait de les choper dans l’IDS (prelude a une règle par défaut), et donc d’avoir une petite idée du nombre de paquet qui rentraient dans la règle du firewall.

Publicité

Laisser un commentaire