Question

Je suis sur le point de gérer et d'exploiter mon premier serveur Web Apache connecté à Internet et je me demandais s'il y avait des administrateurs système et des développeurs qui souhaiteraient partager certaines de leurs connaissances en matière de sécurité et d'optimisation pour l'utilisation d'Apache. serveur web.

Peut-être pouvez-vous partager votre liste des cinq (ou dix) tâches que vous faites immédiatement après avoir installé le serveur Web Apache (sur une machine Linux).

Toute aide très appréciée.

Était-ce utile?

La solution

Basique

  1. Assurez-vous de disposer de la dernière version stable installée . Exécuter une version ancienne ou instable d’Apache peut exposer votre système à des failles de sécurité ou à des solutions non testées
  2. Assurez-vous que seules les demandes prévues sont réellement traitées . Vous devez considérer qui a accès aux ressources Web exposées par Apache et à comment .
  3. Évitez d'exécuter Apache en tant que racine . C’est un must.
  4. Gérez vos journaux . Les grumes ont tendance à devenir de plus en plus grandes; Pensez à configurer logrotate ou à nettoyer votre journal régulièrement.
  5. Surveillez la santé d'Apache avec un système de surveillance . J'aime coupler munin et monit, à la fois faciles à configurer et à entretenir. Nagios et d’autres valent le détour.
  6. Si Apache dessert des applications Web (PHP, Perl, Rails) , assurez-vous que les demandes sont traitées par le bon module dans le bon ordre .
  7. Rédigez un beau message 404 et 500 . Tôt ou tard, vos visiteurs verront une erreur.
  8. Arrêtez et redémarrez Apache pour que vous puissiez être sûr que la procédure de démarrage et de démarrage fonctionne parfaitement.
  9. Utiliser mod_security

Sécurité

  1. Protégez Apache contre DOS.
  2. Ne chargez que les modules réellement nécessaires.
  3. Surveillez votre journal pour déterminer si quelque chose d'étrange se produit.

Performances

  1. Si vous compilez Apache à partir du code source, veillez à utiliser MPM (Multi-Processing Modules).
  2. Ne chargez que les modules réellement nécessaires.
  3. Vérifiez le paramètre MaxClients afin que votre serveur ne génère pas autant d'enfants qu'il commence à permuter.
  4. Utilisez le module mod_deflate, il fournit le filtre de sortie DEFLATE qui permet de compresser la sortie de votre serveur avant de l'envoyer au client via le réseau.

Autres conseils

  • Assurez-vous que le processus Apache ne s'exécute pas en tant que root.
  • Assurez-vous d'être sur la dernière version stable
  • Si la case est directement connecté à internet assurez-vous d'avoir pensé à tout d'autres services, comme ssh.
  • Inspectez soigneusement les règles de votre pare-feu local, resserrez-les. (Voir iptables)
  • N'activez pas les options que vous ne comprenez pas ou ne prévoyez pas d'utiliser
  • Envisagez de vous abonner à une liste de diffusion de sécurité Apache afin de connaître immédiatement les correctifs critiques
  • .
  1. Chroot du serveur Web
  2. Désactivez les modules dont vous n’avez pas besoin
  3. Vous avez plutôt besoin de mod_security
  4. Configurez un vérificateur de l'intégrité des fichiers pour votre racine Web
  5. Sécurisez tout le reste sur le même serveur et éteignez tout ce qui n'est pas utilisé
  6. Exécutez des tests sur votre serveur avec des outils tels que nmap ou Metasploit

Je vais interpréter "après avoir installé Apache sur une boîte". "Préparation de l'installation d'un nouveau serveur pour une utilisation en production", car bien entendu, tout cela serait effectué sur un serveur de développement et validé pour SCM ou intégré à une installation automatisée.

Tout ce que vous faites pour optimiser doit être fait sur la base de mesures réelles. Configurez un environnement de test avec votre application réelle que vous souhaitez exécuter, de manière aussi réaliste que possible. Quelques points à considérer sont:

  • Ne définissez pas MaxClients trop haut. Vous pouvez utiliser beaucoup de RAM, en particulier avec des serveurs préforks intégrant une application volumineuse (par exemple, mod_perl, PHP, etc.). Utiliser trop de mémoire est contre-productif. Il est préférable que les clients attendent un service réussi qu’une erreur soit signalée.
  • Déterminez si vous avez Keepalives sur. Ceux-ci peuvent à la fois accélérer et ralentir en fonction de votre environnement. Si vous choisissez de les utiliser, pensez à votre délai de conservation en fonction du cas d'utilisation réel.
  • Effectuez des tests de performances avec HTTPS activé si vous utilisez HTTPS en production
  • Définir " Dernière modification " et " Expires " en-têtes appropriés sur les objets qui changent peu fréquemment (pour maximiser la mise en cache côté client). Testez la mise en cache côté client dans différents navigateurs.
  • Assurez-vous que votre application utilise le protocole HTTPS correctement et non d'une manière qui oblige les navigateurs à générer des avertissements de sécurité (c'est une autre bonne raison d'utiliser HTTPS lors des tests)

Si vous utilisez un environnement LAMP (Linux, Apache, MySQL, PHP / PEARL / PYTHON) standard: Placez MySQL sur une autre machine qu’Apache. Sera un peu plus lent avec seulement quelques processus simultanés (en raison de la latence du réseau), mais BEAUCOUP plus rapide avec de nombreux processus simultanés.

Assurez-vous de l'avoir configuré pour détecter les attaques par déni de service.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top