Consentire l'accesso a un host virtuale Apache solo dalla rete locale


19

Ho una pagina web su un server Linux che gestisco, con Apache 2.2. Questo server è visibile al mondo esterno per alcuni altri servizi.

Vorrei configurare Apache in modo che un determinato host virtuale sia visibile solo all'interno della rete locale, in modo da poter distribuire un'applicazione Web per ottenere feedback da altre persone nella mia organizzazione. Penso che ciò abbia a che fare con la direttiva Allow, ma i miei esperimenti non stanno andando bene.

Come posso modificare il mio file di configurazione per farlo? Devo modificare anche la configurazione del firewall?


Stai utilizzando un indirizzo IP privato (non instradabile) come 10.0.0.100 o un indirizzo IP pubblico (instradabile) per il tuo server?
closetnoc,

Il server ha un indirizzo IP pubblico e posso connettermi ad esso dall'esterno della rete di lavoro, ad esempio da casa. Tutti i computer dei colleghi hanno indirizzi IP locali del tipo 10. *. *. *.
BT

Risposte:


12

Facile. Basta impostare qualcosa del genere all'interno della configurazione principale o della configurazione virtuale:

<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>

In <Directory></Directory>sostanza la dichiarazione dice: "Usa queste regole per qualsiasi cosa in questa directory. E da "questa directory" che si riferisce a quello /var/www/path/to/your/web/documentsche ho impostato in questo esempio, ma dovrebbe essere modificato in modo che corrisponda al percorso della directory locale del tuo sito.

Successivamente, all'interno <Directory></Directory>dell'area, si sta modificando il comportamento predefinito di Apache, che Allowper impostazione predefinita è tutto Order Deny,Allow. Successivamente, si imposta Deny from allnega l'accesso da parte di tutti. Di seguito sono riportate le Allow fromistruzioni che consentono l'accesso da 127.0.0.1 ::1(indirizzo IP localhost), localhost(lo stesso host locale). Sono tutte cose standard. Poiché l'accesso da localhostè necessario per molti processi del sistema interno.

Ciò che segue è ciò che conta per te.

Il Allow fromfor 192.168nonché 10consentirà l'accesso da qualsiasi / tutti gli indirizzi di rete all'interno dell'intervallo di rete preceduto da quei numeri.

Quindi, indicando 192.168che sostanzialmente significa se un utente ha un indirizzo simile 192.168.59.27o 192.168.1.123sarà in grado di vedere il sito web.

E allo stesso modo l'utilizzo del prefisso Allow fromfor 10assicura che se qualcuno ha un indirizzo IP 10.0.1.2o addirittura 10.90.2.3sarà in grado di vedere il contenuto.

Praticamente tutte le reti interne nel mondo usano la 192.168portata o qualcosa del genere 10. Niente di esterno. Quindi l'utilizzo di questa combo raggiungerà il tuo obiettivo di bloccare l'accesso al mondo esterno ma consentirà l'accesso solo dalla tua rete locale.


Cosa Satisfy Anydovrebbe fare in questo caso? Non so nulla di tutto questo, ma quando era presente nel mio scenario, potevo accedere alla pagina (che ho usato <Location /path>) da una rete esterna. Rimuoverlo tuttavia risolto i miei problemi. Sarebbe bello capire perché questo è stato il caso in quanto era leggermente preoccupato che potessi accedere alla pagina anche con le regole in vigore.
Liamnichols,

@liamnichols Come spiegato qui : "Consente la richiesta se viene soddisfatto qualsiasi requisito (autenticazione o accesso)."
JakeGould

14

Le persone che arrivano a questa risposta, si prega di notare che questo è specifico per Apache 2.2.

Apache 2.4 ha deprecato queste direttive.

Il nuovo modo sta usando il modulo mod_authz_hoste le Requiredirettive. ( link )

In Apache 2.4 dovresti farlo

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

e rimuovi tutte le direttive Consenti.


5

Aggiungi questa sezione all'interno della direttiva dell'host virtuale:

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

Sostituisci il tuo IP sopra. Questo non dovrebbe essere usato per la sicurezza a livello finanziario, FYI.


-1

Non so come hai configurato la tua rete, tuttavia, presumo che qualcosa cerchi di dare una risposta migliore.

Supponiamo che tu abbia un piccolo ufficio con una connessione DSL. Avresti un indirizzo IP pubblico statico o un blocco di indirizzi assegnato alla tua linea, un modem DSL e un firewall. Senza entrare nei dettagli di come ciò accada, arriverò alla parte importante.

Dovresti usare NAT (traduzione dell'indirizzo di rete). Ciò consente agli indirizzi IP pubblici di risiedere sul lato WAN (Internet) della rete e utilizzare indirizzi IP privati ​​(come 10.0.0.100) all'interno della rete sul lato LAN. Questa è la procedura operativa standard. Se si ospita un server Web all'interno della propria rete, si utilizzerà il port forwarding o altri meccanismi simili) per indirizzare qualsiasi traffico Web verso il proprio server Web.

In questo scenario standard, i computer interni utilizzerebbero tutti gli indirizzi IP privati.

Supponendo di disporre di una configurazione di rete standard simile, è necessario modificare l'indirizzo IP del computer da un indirizzo IP pubblico a un indirizzo IP privato. La tua rete potrebbe avere una configurazione DHCP in cui il tuo computer può richiedere un indirizzo IP disponibile. Ciò significa che invece di specificare un indirizzo IP, si sceglie di utilizzare DHCP e verrà assegnato un indirizzo IP. Se DHCP non è disponibile, è necessario controllare alcuni altri computer per uno spazio di indirizzi IP privato che può essere utilizzato e selezionare un indirizzo IP all'interno dello spazio non utilizzato. È possibile specificare questo indirizzo IP non utilizzato nella configurazione di rete. Questo dovrebbe impedire al tuo sistema di essere visto su Internet.


Ci ho pensato, ma non è una soluzione pratica. Ci sono servizi su quella macchina che devono rimanere visibili verso l'esterno, e in ogni caso ho intenzione di rendere di nuovo visibile l'applicazione web in pochi giorni - inutile rivoluzionare il layout di rete solo per pochi giorni. Quello su cui posso lavorare, tuttavia, sono cose come la configurazione di Apache.
BT

Se hai un firewall, puoi chiudere alcune porte a quell'indirizzo IP.
closetnoc,

È possibile utilizzare le impostazioni del firewall, ma è davvero eccessivo. Apache ha funzionalità integrate per negare o consentire in base all'indirizzo IP e ad altri criteri correlati. Vedi la mia risposta per maggiori dettagli.
Jake:

I firewall @JakeGould non sono necessariamente una soluzione eccessiva. Conosco Apache davvero molto bene. Tuttavia, ci sono opzioni di filtro HTTP nella maggior parte dei buoni firewall che aiutano senza caricare il server stesso. Inoltre, mentre Apache è eccellente, non è senza colpa. Inoltre, gli accessi alle porte, inclusi accessi alternativi, possono essere manipolati utilizzando un firewall in modo che alcuni servizi Web rimangano pubblici e altri siano accessibili solo all'interno della LAN.
closetnoc,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.