Letzte Woche bekam ich einen Anruf von einem ängstlichen Kunden, weil er dachte, seine Website sei gehackt worden. Als ich seine Website nachgeschlagen habe, habe ich die apache2
Standardseite gesehen. In dieser Nacht hatte mein Server ( Ubuntu 16.04 LTS
) aktualisiert und neu gestartet. Normalerweise hätte ich mich nachts alarmieren lassen, wenn etwas schief gelaufen ist. Diesmal nicht, da das Überwachungssystem nach dem HTTP-Statuscode 200 apache2
sucht und die Standardseite den Statuscode 200 enthält.
Was passiert ist, dass während des Starts apache2
war schneller zu Port 80 und 443 als mein eigentlicher Webserver Nginx zu binden. Ich habe Apache2 nicht selbst installiert. Durch aptitude why apache2
fand ich heraus, dass das php7.0-Paket es erfordert.
Das apache2
einfache Entfernen wird nicht funktionieren, da es anscheinend für PHP 7.0 erforderlich ist. Ist es irgendwie möglich, eine Einschränkung zu erstellen, damit nur Nginx an die Ports 80 und 443 gebunden werden kann?
Auch andere Lösungen sind gerne gesehen.
This time not, because the monitoring system checks for HTTP status code 200
. Sie können das Überwachungssystem verbessern, indem Sie dafür sorgen, dass der tatsächliche Inhalt der Webseite (eine bestimmte Zeichenfolge im Hauptteil oder im Header) überprüft wird. Dies ist zuverlässiger.Antworten:
Sie können nicht verhindern, dass ein Port durch den falschen Dienst gebunden wird. In deinem Fall entferne einfach Apache aus dem Autostart und du solltest gut sein.
Für 16.04 und neuer:
Für ältere Ubuntu-Versionen:
quelle
systemctl disable apache2
Wenn Sie wirklich nicht verwenden
apache2
und PHP 7.0 es erfordert, dann sieht es so aus, als hätten Sie eslibapache2-mod-php7.0
installiert. Dieses Paket ist ohne Apache nutzlos. Da Sie nginx verwenden, wahrscheinlich haben Sie auchphp7.0-fpm
oderphp7.0-cgi
installiert, von denen für die Befriedigung ausreichtphp7.0
‚s Abhängigkeitsanforderungen:Wenn Sie eines der beiden Programme
php7.0-{fpm,cgi}
installiert haben, können Sie Apache deinstallieren.quelle
php7.0-fpm
dasphp7.0
Paket installiere und nicht . Dies wird auch von Ondřej Surý github.com/oerdnj/deb.sury.org/wiki/…Um Ihre Frage zu beantworten, können Sie wahrscheinlich einen Port mit SElinux auf eine bestimmte Anwendung beschränken. Ich habe es selbst nicht benutzt und nur oberflächliches Wissen über seine Fähigkeiten, aber hier ist ein Hinweis, den ich auf dieser Site gefunden habe:
/server//a/257056/392230
In dieser Antwort scheint wzzrd zu zeigen, wie einer bestimmten Anwendung (foo) die Berechtigung zum Binden an einen bestimmten Port erteilt wird (803). Sie müssten lediglich die Richtlinie einrichten, damit nur Ihre Anwendung (nginx) die von Ihnen angegebenen Ports (80 und 443) verwenden kann.
Wenn ich mich auf die Antwort von wzzrd stütze, könnte es so einfach sein, dies der Richtlinie hinzuzufügen
und läuft dies
Ich stelle mir jedoch vor, dass Sie in der Richtlinie auch eine Zeile benötigen, die angibt, dass kein anderes Programm an diese Ports gebunden werden darf.
Am Ende rate ich nur, was die passende Konfiguration ist.
Wie auch immer, ich glaube nicht, dass es ein Ubuntu gegeben hat, auf dem SElinux standardmäßig installiert und aktiviert ist. Da ich glaube, dass bestimmte Patches für verschiedene Dienstprogramme und eine Kernel-Option erforderlich sind, ist es möglicherweise einfacher, Centos zu verwenden, auf dem SElinux von Anfang an installiert und aktiviert ist.
Entschuldigung, ich bin nicht mehr behilflich. Vielleicht lade ich ein anderes Mal ein Bild von Centos herunter und probiere es aus. Es wird ein guter Lernschritt sein. Ich werde diese Antwort aktualisieren, wenn ich es tue.
quelle
Was ich in den Antworten noch nicht gesehen habe, aber dennoch möglich ist:
Ändern Sie die Apache-Konfiguration, um einen anderen Port abzuhören, nur für den Fall. Sie können dies tun, indem Sie die Apache-Konfigurationsdatei öffnen und die Leitungen ändern, die
Listen 80
einen anderen Port haben.quelle
Ich habe keine Antwort auf Ihre genaue Frage, aber vielleicht müssen Sie sich Ihre Distribution ansehen. Ich würde jede Distribution, die Dienste (hier apache2) bei der Installation aktiviert, als unsicher betrachten. Betrachten Sie eine Distribution, die das nicht tut. Ich kann nicht sagen, dass ich dieses Verhalten jemals auf Archlinux gesehen habe. Ich bin sicher, dass es noch andere gibt.
quelle