Ermöglichen des Zugriffs auf einen virtuellen Apache-Host nur vom lokalen Netzwerk aus

19

Ich habe eine Webseite auf einem von mir verwalteten Linux-Server, auf dem Apache 2.2 ausgeführt wird. Dieser Server ist für einige andere Dienste für die Außenwelt sichtbar.

Ich möchte Apache so konfigurieren, dass ein bestimmter virtueller Host nur innerhalb des lokalen Netzwerks sichtbar ist, damit ich eine Webanwendung bereitstellen kann, um Feedback von anderen Personen in meiner Organisation zu erhalten. Ich denke, das hat mit der Allow-Direktive zu tun, aber meine Experimente laufen nicht gut.

Wie kann ich meine Konfigurationsdatei ändern, um dies zu erreichen? Sollte ich auch die Firewall-Konfiguration ändern?

Btz
quelle
Verwenden Sie eine private (nicht routingfähige) IP-Adresse wie 10.0.0.100 oder eine öffentliche (routingfähige) IP-Adresse für Ihren Server?
Closetnoc
Der Server verfügt über eine öffentliche IP-Adresse, mit der ich mich von außerhalb des Arbeitsnetzwerks verbinden kann, beispielsweise von zu Hause aus. Die Computer der Kollegen haben alle lokale IP-Adressen vom Typ 10. *. *. *.
Btz

Antworten:

12

Einfach. Stellen Sie einfach so etwas in Ihrer Hauptkonfiguration oder Ihrer virtuellen Konfiguration ein:

<Directory /var/www/path/to/your/web/documents>

  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 ::1
  Allow from localhost
  Allow from 192.168
  Allow from 10
  Satisfy Any

</Directory>

Die <Directory></Directory>Anweisung lautet im Wesentlichen: „Verwenden Sie diese Regeln für alle Elemente in diesem Verzeichnis. Und durch "dieses Verzeichnis", das sich auf das bezieht, /var/www/path/to/your/web/documentswas ich in diesem Beispiel festgelegt habe, das aber geändert werden sollte, um dem lokalen Verzeichnispfad Ihrer Site zu entsprechen.

Als nächstes <Directory></Directory>ändern Sie innerhalb des Bereichs das standardmäßige Apache-Verhalten, das Allowstandardmäßig auf eingestellt ist Order Deny,Allow. Als nächstes Deny from allverweigern Sie jedem Zugriff. Das sind die Allow fromAnweisungen, die den Zugriff von 127.0.0.1 ::1(localhost-IP-Adresse) localhost(localhost selbst) ermöglichen. Das ist alles Standard. Da der Zugriff von localhostfür viele interne Systemprozesse benötigt wird.

Was folgt, ist das, was Ihnen wichtig ist.

Die Allow fromfür 192.168sowie 10ermöglicht den Zugriff von jedem / alle Netzadressen im Netzwerkbereich , die von diesen Nummern vorangestellt wird.

Also durch die Angabe , 192.168dass im Grunde bedeutet , wenn ein Benutzer wie eine Adresse hat 192.168.59.27oder 192.168.1.123sie in der Lage sein , die Website zu sehen.

Und in ähnlicher Weise unter Verwendung des Allow fromfür den 10Präfix Stellt sicher , dass , wenn jemand eine IP - Adresse hat 10.0.1.2oder sogar 10.90.2.3sie in der Lage sein , den Inhalt zu sehen.

Nahezu alle internen Netzwerke auf der Welt verwenden entweder die 192.168Reichweite oder etwas in der 10Reichweite. Nichts externes. Wenn Sie diese Kombination verwenden, wird Ihr Ziel erreicht, den Zugriff auf die Außenwelt zu blockieren, jedoch nur den Zugriff von Ihrem lokalen Netzwerk aus zuzulassen.

JakeGould
quelle
Was Satisfy Anysoll in diesem Fall tun? Ich weiß nichts über all das, aber wenn es in meinem Szenario vorhanden war, konnte ich <Location /path>von einem externen Netzwerk auf die Seite (die ich verwendet habe ) zugreifen . Das Entfernen hat jedoch meine Probleme behoben. Es wäre schön zu verstehen, warum dies der Fall war, da es ein wenig besorgt war, dass ich auf die Seite zugreifen könnte, selbst wenn die Regeln vorhanden sind.
Liamnichols
@liamnichols Wie hier erklärt : "Ermöglicht die Anforderung, wenn eine Anforderung erfüllt ist (Authentifizierung ODER Zugriff)."
JakeGould
14

Wenn Sie in dieser Antwort landen, beachten Sie bitte, dass dies spezifisch für Apache 2.2 ist.

Apache 2.4 hat diese Direktiven verworfen.

Der neue Weg ist die Verwendung des Moduls mod_authz_hostund der RequireAnweisungen. ( Link )

In Apache 2.4 sollten Sie tun

<Directory /var/www/ncp-web/>
  Require host localhost
  Require ip 127.0.0.1
  Require ip 192.168
  Require ip 10
</Directory>

und entfernen Sie alle Zulassungsanweisungen.

nachoparker
quelle
5

Fügen Sie diesen Abschnitt in Ihre Virtual Host-Direktive ein:

<Location /mypathurl>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.10
</Location>

Ersetzen Sie Ihre IP oben. Dies sollte nicht für die finanzielle Sicherheit verwendet werden.

Chloe
quelle
-1

Ich weiß nicht, wie Sie Ihr Netzwerk eingerichtet haben, aber ich gehe davon aus, dass Sie versuchen, eine bessere Antwort zu finden.

Nehmen wir an, Sie haben ein kleines Büro mit DSL-Anschluss. Sie hätten eine statische öffentliche IP-Adresse oder einen Adressblock für Ihre Leitung, ein DSL-Modem und eine Firewall. Ohne auf die Details einzugehen, wie dies geschieht, komme ich zum wichtigen Teil.

Sie sollten NAT (Network Address Translation) verwenden. Auf diese Weise können sich die öffentlichen IP-Adressen auf der WAN-Seite (Internet) Ihres Netzwerks befinden und private IP-Adressen (wie 10.0.0.100) innerhalb des Netzwerks auf der LAN-Seite verwenden. Dies ist das Standardverfahren. Wenn Sie einen Webserver in Ihrem Netzwerk hosten, verwenden Sie die Portweiterleitung oder einen ähnlichen Mechanismus, um den Webdatenverkehr auf Ihren Webserver zu leiten.

In diesem Standardszenario verwenden alle internen Computer die privaten IP-Adressen.

Angenommen, Sie haben eine ähnliche Standard-Netzwerkkonfiguration, würden Sie die IP-Adresse Ihres Computers von einer öffentlichen IP-Adresse in eine private IP-Adresse ändern. Ihr Netzwerk verfügt möglicherweise über eine DHCP-Einrichtung, über die Ihr Computer eine verfügbare IP-Adresse anfordern kann. Dies bedeutet, dass Sie anstelle der Angabe einer IP-Adresse die Verwendung von DHCP auswählen und eine IP-Adresse zugewiesen wird. Wenn DHCP nicht verfügbar ist, müssen Sie auf einigen anderen Computern nach einem privaten IP-Adressraum suchen, der möglicherweise verwendet wird, und eine IP-Adresse innerhalb des nicht verwendeten Bereichs auswählen. Sie können diese nicht verwendete IP-Adresse in Ihrem Netzwerk-Setup angeben. Dies sollte verhindern, dass Ihr System im Internet angezeigt wird.

closetnoc
quelle
Ich habe darüber nachgedacht, aber es ist keine praktische Lösung. Es gibt Dienste auf diesem Computer, die nach außen sichtbar bleiben müssen, und auf jeden Fall plane ich, die Webanwendung in ein paar Tagen wieder sichtbar zu machen - es macht keinen Sinn, das Netzwerklayout nur für ein paar Tage zu revolutionieren. Woran ich jedoch arbeiten kann, sind Dinge wie die Apache-Konfiguration.
Btz
Wenn Sie eine Firewall haben, können Sie einige Ports für diese IP-Adresse schließen.
Closetnoc
Firewall-Einstellungen könnten verwendet werden, aber das ist wirklich übertrieben. Apache verfügt über eine integrierte Funktion, mit der IP-Adressen und andere verwandte Kriterien abgelehnt oder zugelassen werden können. Siehe meine Antwort für weitere Details.
JakeGould
@JakeGould Firewalls sind nicht unbedingt eine Overkill-Lösung. Ich kenne Apache wirklich sehr gut. In den meisten guten Firewalls gibt es jedoch HTTP-Filteroptionen, die helfen, ohne den Server selbst zu belasten. Auch wenn Apache exzellent ist, ist es nicht ohne Fehler. Außerdem können Portzugriffe einschließlich alternativer Portzugriffe mithilfe einer Firewall so manipuliert werden, dass einige Webdienste öffentlich bleiben und andere nur im LAN zugänglich sind.
Closetnoc