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

Apache akzeptiert keine eingehenden Verbindungen von außerhalb von localhost

Falls noch nicht gelöst. Ihre iptables sagen:

Zustand VERWANDT, ERRICHTET

Das bedeutet, dass nur bereits hergestellte Verbindungen durchgelassen werden ... die von Ihnen hergestellt wurden, nicht von entfernten Computern. Ausnahmen davon sehen Sie dann in den nächsten Regeln:

state NEW tcp dpt:ssh

Das gilt nur für ssh, also sollten Sie eine ähnliche Regel/Zeile für http hinzufügen, was Sie so machen können:

state NEW tcp dpt:80

Was Sie so tun können:

sudo iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

(In diesem Fall füge ich die neue Regel in der vierten Zeile hinzu)

Denken Sie daran, dass Sie die Datei nach dem Bearbeiten wie folgt speichern sollten:

sudo /etc/init.d/iptables save

CentOS 7 verwendet jetzt standardmäßig firewalld. Aber alle Antworten konzentrieren sich auf iptables. Also wollte ich eine Antwort in Bezug auf Firewalld hinzufügen.

Da firewalld ein "Wrapper" für iptables ist, scheint die Verwendung von antonio-fornies Antwort immer noch zu funktionieren, aber ich konnte diese neue Regel nicht "speichern". Ich konnte also keine Verbindung zu meinem Apache-Server herstellen, sobald ein Neustart der Firewall stattfand. Glücklicherweise ist es viel einfacher, eine entsprechende Änderung mit Firewalld-Befehlen vorzunehmen. Überprüfen Sie zuerst, ob Firewalld läuft:

firewall-cmd --state

Wenn es läuft, ist die Antwort einfach eine Zeile, die "running" sagt.

So lassen Sie vorübergehend HTTP-Verbindungen (Port 80) in der öffentlichen Zone zu:

sudo firewall-cmd --zone=public --add-service=http

Das Obige wird nicht "gespeichert", beim nächsten Neustart des Firewalld-Dienstes werden die Standardregeln wiederhergestellt. Sie sollten diese vorübergehende Regel zum Testen verwenden und sicherstellen, dass sie Ihr Verbindungsproblem löst, bevor Sie fortfahren.

So lassen Sie HTTP-Verbindungen in der öffentlichen Zone dauerhaft zu:

sudo firewall-cmd --zone=public --permanent --add-service=http

Wenn Sie den „permanenten“ Befehl ausführen, ohne auch den „temporären“ Befehl auszuführen, müssen Sie firewalld neu starten, um Ihre neuen Standardregeln zu erhalten (dies kann für Nicht-CentOS-Systeme anders sein):

 sudo systemctl restart firewalld.service

Wenn dies Ihre Verbindungsprobleme nicht gelöst hat, liegt es möglicherweise daran, dass sich Ihre Schnittstelle nicht in der "öffentlichen Zone" befindet. Der folgende Link ist eine großartige Ressource, um mehr über Firewalld zu erfahren. Es wird detailliert beschrieben, wie Zonen überprüft, zugewiesen und konfiguriert werden:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7


SELinux verhindert standardmäßig, dass Apache (und damit alle Apache-Module) Remote-Verbindungen herstellen.

# setsebool -P httpd_can_network_connect=1

Linux
  1. [Behoben] Benutzername ist nicht in Sudoers-Datei

  2. So öffnen Sie Port 80 und 443 in FirewallD

  3. Warum akzeptiert Find „-exec Cp {} Dir +“ nicht?

  4. Von Vim aus Root werden?

  5. Installieren Sie Apache unter Debian 10

sudoedit:Befehl nicht gefunden

sudo:Befehl nicht gefunden

Messen Sie den Datenverkehr aus dem Apache-Zugriffsprotokoll

Apache suexec-Befehl nicht in docroot

sudo:python:Befehl nicht gefunden

sudo funktioniert bei bestimmten Befehlen nicht