GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verhindern, dass andere Anwendungen an Port 80 und 443 binden

Lösung 1:

Sie können nicht verhindern, dass ein Port an den falschen Dienst gebunden wird. Entfernen Sie in Ihrem Fall einfach Apache aus dem Autostart und Sie sollten gut sein.

Für 16.04 und neuer:

sudo systemctl disable apache2

Für ältere Ubuntu-Versionen:

sudo update-rc.d apache2 disable

Lösung 2:

Wenn Sie wirklich nicht apache2 verwenden , und es ist PHP 7.0, das es erfordert, dann sieht es so aus, als hätten Sie libapache2-mod-php7.0 Eingerichtet. Dieses Paket ist ohne Apache nutzlos. Da Sie nginx verwenden, haben Sie wahrscheinlich auch php7.0-fpm oder php7.0-cgi installiert, von denen beide ausreichen, um php7.0 zu erfüllen Abhängigkeitsanforderungen von :

$ apt-cache depends php7.0
php7.0
 |Depends: php7.0-fpm
 |Depends: libapache2-mod-php7.0
  Depends: php7.0-cgi
  Depends: php7.0-common
  Conflicts: <php5>

Wenn Sie eines von php7.0-{fpm,cgi} haben installiert haben, können Sie fortfahren und Apache deinstallieren.

Lösung 3:

Um Ihre Frage zu beantworten, können Sie wahrscheinlich einen Port auf eine bestimmte Anwendung beschränken, indem Sie SElinux verwenden. Ich habe es selbst nicht benutzt und habe nur oberflächliche Kenntnisse über seine Fähigkeiten, aber hier ist ein Hinweis, den ich auf dieser Seite gefunden habe:

https://serverfault.com/a/257056/392230

In dieser Antwort scheint wzzrd zu zeigen, wie man einer bestimmten Anwendung (foo) die Erlaubnis erteilt, sich an einen bestimmten Port (803) zu binden. Sie müssten nur die Richtlinie so einrichten, dass nur Ihre Anwendung (nginx) die von Ihnen angegebenen Ports (80 und 443) zulässt.

Wenn ich mich auf die Antwort von wzzrd stütze, könnte es so einfach sein, dies der Richtlinie hinzuzufügen

allow nginx_t nginx_port_t:tcp_socket name_bind;

und diese ausführen

semanage port -a -t nginx_port_t -p tcp 80
semanage port -a -t nginx_port_t -p tcp 443

Ich nehme jedoch an, dass Sie auch eine Zeile in der Richtlinie benötigen, die angibt, dass kein anderes Programm an diese Ports binden 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 meiner Meinung nach bestimmte Patches auf verschiedene Dienstprogramme und eine Kerneloption angewendet werden müssen, ist es möglicherweise einfacher, einfach Centos zu verwenden, auf dem SElinux von Anfang an installiert und aktiviert ist.

Tut mir leid, ich bin nicht mehr hilfreich. Vielleicht lade ich ein andermal ein Bild von Centos herunter und versuche es; es wird ein guter Lernschritt sein. Ich werde diese Antwort aktualisieren, wenn ich das tue.

Lösung 4:

Etwas, das ich in den Antworten noch nicht gesehen habe, aber immer noch eine Möglichkeit ist:

Ändern Sie die Apache-Konfiguration so, dass sie für alle Fälle auf einen anderen Port lauscht. Sie können dies tun, indem Sie die Apache-Konfigurationsdatei öffnen und die Zeilen mit Listen 80 ändern zu einem anderen Port.


Linux
  1. So öffnen Sie Port 80 und 443 in FirewallD

  2. Unterschied zwischen Gtk- und Qt-Anwendungen?

  3. Verhindern, dass Tar zu viel CPU und Festplatte verwendet (alter Laptop stürzt ab, wenn 100%)?

  4. CentOS / RHEL :So konfigurieren Sie vsftpd, dass andere Ports als die Standardports 20 und 21 verwendet werden

  5. Wie kann ich von der seriellen Schnittstelle in C öffnen, lesen und schreiben?

Ubuntu 22.04 öffnet HTTP-Port 80 und HTTPS-Port 443 mit ufw

So kompilieren Sie PHP7.0/PHP7.1 aus dem Quellcode unter Arch Linux

So extrahieren Sie Audio aus Video in Ubuntu und anderen Linux-Distributionen

Schreiben und Debuggen von Linux-C++-Anwendungen aus Visual Studio mit dem Windows-Subsystem für Linux

Warum ist Port 1111 offen und ist das sicher?

Linux erhält den UTC-Offset von der aktuellen (oder anderen) Zeitzone zu einem bestimmten Datum und einer bestimmten Uhrzeit