Sécuriser votre application web contre les attaques dans un cloud

Suite à de nombreuses attaques sur les applications web, voici résumé dans cet article des pistes possibles.
Pierre LISERONMis à jour le 2 Déc 2012
archi.jpg

Suite à de nombreuses attaques sur les applications web, voici résumé dans cet article des pistes possibles pour sen protéger.

 

Présentation de larchitecture typique dune application web

Larchitecture typique dune application web est la suivante: 

archi.jpg

Un front Apache (ou IIS) qui joue le rôle de point dentrée unique de lapplication. Généralement, il fait office de proxy vers votre application web. Et souvent même  de load balancer. Lapplication étant généralement développée en JAVA (ou .Net). Pour des raisons de performance, un cluster de serveur dapplications répond aux requêtes proxiées de votre front. De plus, vous laissez le front répondre aux fichiers statiques et ainsi gérer les méta informations de vos images et scripts etc Enfin vos instances de serveur dapplications sont connectés à la base de données. Le plus souvent Oracle. Suite aux compagnes de performances, vous avez établi le  bon dimensionnement de vos environnements.

Enfin vous décidez de sécuriser votre solution. Vous installez un firewall, disons Iptables et vous rentrez les règles habituelles.

Pour lexemple nous supposerons que chaque logiciel, front apache, serveurs dapplications, base de données s’exécutent tous sur des serveurs différents (ce qui est la plupart du temps le cas). Vous avez donc défini des règles dans vos firewall autorisant que les bonnes machines  à communiquer entre elles.

Tout est donc ok pour la mise production. Vous ouvrez les ports de votre front. Tous se passent bien pendant une semaine, et dun coup sans prendre garde, vous êtes alerté par une centaine de mail de votre solution de monitoring (par exemple VMware) vous signalant une activité anormale de votre carte réseau. Un petit tour sur lapplication vous fait vous apercevoir que votre application ne réponds plus ou très lentement. Branle-bas de combats avec votre équipe dinfra, et vous vous rendez compte, souvent en regardant dans les logs de votre apache que vous avez des Go de log qui sempilent. Un rapide coup doeil sur vos serveurs dapplications et vous vous rendez comptes quils ne sont pas inquiétés.

Flooding

Le diagnostique tombe. Vous êtes floodé de milliers de requêtes qui empêchent à votre front de traiter les requêtes. Que faire? Voici donc une liste de points qui pourront peut-être vous aider. Aucune de ces pistes ne suffit mais toutes ensemble permettent de limiter le problème.

  • Sécuriser votre apache pour quil ne soit plus ouvert en tant que proxy
  • Si lattaque ne s’effectue que sur certaine url, vous pouvez directement les bloquer depuis votre firewall avec des règles ad-hoc.
  • 90% du temps, ce type dattaque seffectue sur le port 80. Si vous avez la possibilité de passer votre solution en https vous réglerez le problème. Faites en sorte que votre apache nécoute plus sur le port 80 et vous stoppez net les attaques.
  • Activer le mod security dApache (Efficacité limitée pour des grosses attaques)
  • Optez pour un vrai firewall de préférence physique ou à défaut logiciel type pfsense (votre iptables ne suffira pas)
  • Changer dadresse IP votre machine et faites oubliez lancienne adresse en ne lutilisant pas pendant un certain temps.
  • Désactiver la réponse au ping de votre machine
  • Désactiver la réponse détat de votre apache de sorte que lassaillant ne connaisse pas votre version
  • Si bien sur vous pouvez filtrer les adresses ip de votre client directement dans le firewall, ceci est encore plus efficace.
  • Mettre en place un VPN avec les clients de lapplication si possible (rarement le cas)
  • Vérifier que votre machine nest pas vérolée par un rootkit et dans le doute réinstaller votre front à partir dune distribution à jour et propre.