La semaine dernière, j'ai reçu un appel d'un client effrayé parce qu'il pensait que son site Web avait été piraté. Lorsque j'ai recherché son site Web, j'ai vu la apache2
page par défaut. Cette nuit-là, mon serveur ( Ubuntu 16.04 LTS
) avait mis à niveau et redémarré. Normalement, quand quelque chose se passe mal, j'aurais été alerté pendant la nuit. Cette fois, non, car le système de surveillance vérifie le code d'état HTTP 200 et la apache2
page par défaut est fournie avec le code d'état 200.
Ce qui s'est passé, c'est qu'au démarrage, il apache2
était plus rapide de se connecter aux ports 80 et 443 que mon serveur Web réel nginx. Je n'ai pas installé apache2 moi-même. A travers aptitude why apache2
j'ai découvert le paquet php7.0 exige.
La simple suppression apache2
ne fonctionnera pas car apparemment php7.0 l'exige. Est-il possible de créer une restriction afin que seul nginx soit autorisé à se lier aux ports 80 et 443?
D'autres solutions sont également les bienvenues.
This time not, because the monitoring system checks for HTTP status code 200
. Vous pouvez améliorer le système de surveillance en le faisant vérifier le contenu réel de la page Web (une chaîne particulière dans le corps ou l'en-tête), ce sera plus fiable.Réponses:
Vous ne pouvez pas empêcher un port d'être lié par le mauvais service. Dans votre cas, supprimez simplement apache du démarrage automatique et vous devriez être bon.
Pour 16.04 et plus récent:
Pour les anciennes versions d'Ubuntu:
la source
systemctl disable apache2
Si vous n'utilisez vraiment pas
apache2
et que c'est PHP 7.0 qui en a besoin, il semble que vous l'ayezlibapache2-mod-php7.0
installé. Ce paquet est inutile sans Apache. Puisque vous utilisez nginx, vous avez probablement également installéphp7.0-fpm
ouphp7.0-cgi
installé, ce qui est suffisant pour satisfairephp7.0
les exigences de dépendance de:Si vous avez
php7.0-{fpm,cgi}
installé l'un ou l'autre, vous pouvez continuer et désinstaller Apache.la source
php7.0-fpm
et non lephp7.0
package. Ceci est également conseillé par Ondřej Surý github.com/oerdnj/deb.sury.org/wiki/…Pour répondre à votre question, vous pouvez probablement restreindre un port à une application spécifique en utilisant SElinux. Je ne l'ai pas utilisé moi-même et n'ai qu'une connaissance superficielle de ses capacités, mais voici un pointeur que j'ai trouvé sur ce site:
/server//a/257056/392230
Dans cette réponse, wzzrd semble montrer comment donner à une application spécifique (foo) l'autorisation de se lier à un port spécifique (803). Il vous suffirait d'avoir la configuration de la politique pour que seule votre application (nginx) soit autorisée sur les ports que vous spécifiez (80 et 443).
En me basant sur la réponse de wzzrd, cela pourrait être aussi simple que d'ajouter cela à la politique
et en cours d'exécution
Cependant, j'imagine que vous aurez également besoin d'une ligne dans la politique qui spécifie qu'aucun autre programme ne peut se lier à ces ports.
En fin de compte, je devine simplement quelle est la configuration appropriée.
Quoi qu'il en soit, je ne pense pas qu'il y ait eu un Ubuntu sur lequel SElinux est installé et activé par défaut. Parce que je pense que cela nécessite d'appliquer certains correctifs à divers utilitaires et une option de noyau, il pourrait être plus facile d'utiliser simplement Centos qui a SElinux installé et activé dès le départ.
Désolé, je ne suis d'aucune aide. Peut-être une autre fois, je vais télécharger une image de Centos et essayer ceci; ce sera une bonne étape d'apprentissage. Je mettrai à jour cette réponse si je le fais.
la source
Quelque chose que je n'ai pas encore vu dans les réponses, mais qui reste une possibilité:
Modifiez la configuration Apache pour écouter un autre port, au cas où. Vous pouvez le faire en ouvrant le fichier de configuration Apache et en changeant les lignes qui ont
Listen 80
un autre port.la source
Je n'ai pas de réponse à votre question exacte, mais peut-être que vous avez besoin de regarder votre distribution. Je considérerais que toute distribution qui permet aux services (apache2 ici) lors de l'installation n'est pas sécurisée. Envisagez d'examiner une distribution qui ne fait pas cela. Je ne peux pas dire que j'ai jamais vu ce comportement sur Archlinux, je suis sûr qu'il y en a d'autres.
la source