web-dev-qa-db-fra.com

Rendre Apache sécurisé sur Ubuntu 14.04

Je souhaite héberger un petit site à la maison et installer Apache, etc. comme ceci:

  1. Sudo apt-get update
  2. Sudo apt-get install tasksel
  3. Sudo tasksel install lamp-server

Tout cela a fonctionné et tout est opérationnel.

Maintenant, je suis habitué à travailler avec XAMPP pour développer et je ne voulais pas utiliser ça en direct, car de nombreuses références disaient qu’il n’était pas très sécurisé.

Donc ma question est, maintenant que j'ai Apache/PHP & MySql installé par la méthode ci-dessus; comment est le niveau de sécurité par défaut?

Y a-t-il des moyens de le rendre plus sûr et peut-être une liste de contrôle ou une liste des modifications qui pourraient être recommandées?

Précision: le serveur LAMP serait un site actif et non en développement.

4
Rog

J'exécute mes propres serveurs LAMP sur Ubuntu, qui est connecté à Internet. Je respecte donc toujours les mêmes règles. D'habitude, je vérifierai ce qui suit:

  • Dans Apache, supprimez la documentation ou du moins ne la présentez pas via le serveur Web (en supprimant le lien /etc/Apache2/conf-enabled/Apache2-doc.conf)
  • Dans Apache, assurez-vous que les modules inutiles ne sont pas chargés. Avec Ubuntu, cela se fait en supprimant les liens dans le /etc/Apache2/mods-enabled. Chaque lien pointe vers un fichier du répertoire /etc/Apache2/mods-available qui charge et configure un module à la fois.
  • Vous voudrez peut-être examiner et activer le /etc/Apache2/conf-available/security.conf. Ils proposent des astuces de sécurité, qui ne sont pas activées par défaut:
  • Refuser l'accès à l'ensemble du système de fichiers, à l'exception des répertoires que vous autoriseriez explicitement ultérieurement
  • modifier la bannière du serveur pour donner le moins d'informations possible sur le logiciel en cours d'exécution.
  • En PHP, vérifiez que vous n’imprimez pas trop d’informations de journalisation à l’écran en cas d’erreur (paramètres de la section Gestion et journalisation des erreurs du /etc/php4/Apache2/php.ini fichier. Les commentaires dans le fichier donnent beaucoup d'informations sur ce qu'il est préférable de faire)
  • Pas besoin d'exposer votre serveur MySQL à Internet. Par défaut, dans Ubuntu, le serveur Mysql n’écoute que sur localhost. Vérifiez /etc/mysql/my.cnf dans la section mysqld pour le paramètre bind-address . Il devrait être sur 127.0.0.1:

    bind-address = 127.0.0.1

  • N'installez pas plus de services sur ce serveur que ce dont vous avez besoin.

  • N'oubliez pas d'appliquer la mise à jour à leur arrivée.
  • Ne vous fiez pas uniquement à la configuration du serveur LAMP, n'oubliez pas que vous devez également exécuter une application PHP pouvant introduire des menaces pour la sécurité (validation d'entrée et tout le reste pour éviter de taper SQL interroger dans le champ de saisie pour extraire de la base de données plus d’informations que vous vous seriez données, ...)

Ce sont les premières choses qui me viennent à l’esprit. Vous pouvez bien sûr trouver des guides et des guides plus détaillés sur Internet:

3
Benoit

Voici ce que je fais généralement après une configuration LAMP: (for development use, not production)

  • Désactivez Apache2 à partir de démarrer automatiquement:

    Sudo update-rc.d Apache2 disable
    

    Lorsque vous voulez utiliser, vous pouvez commencer par:

    Sudo service Apache2 start
    
  • Désactiver mysql à partir de démarrer automatiquement:

    echo "manual" | Sudo tee /etc/init/mysql.override
    

    Lorsque vous voulez utiliser, vous pouvez commencer par:

    Sudo service mysql start
    
  • Bloquez les ports entrants 80 et 3306 sur le pare-feu pour protéger votre LAMP contre l’invasion:

    Sudo iptables -A INPUT -p tcp --dport 80 -j DROP
    Sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
    

    (En fait, je bloque tous les ports entrants sauf quelques critiques, mais la sécurité de Linux est un sujet différent!)

1
Prahlad Yeri