Come posso richiedere un intervallo IP anziché 1 IP?


20

Le mie modifiche IP eseguono una classe D diversa, quindi voglio impostare un intervallo:

123.123.123.xxx dove l'ultimo segmento può essere 0-255.

In questo momento, Apache dice:

<RequireAny>
   Require ip 127.0.0.1
   Require ip ::1
</RequireAny>

Risposte:


22

In primo luogo, suppongo che intendi Apache 2.4 nonostante il tag "apache-2.2" poiché la sintassi che hai pubblicato è della 2.4.

Dalla documentazione di Apache:

indirizzo ip è un indirizzo IP, un indirizzo IP parziale, una coppia rete / maschera di rete o una specifica CIDR di rete / nnn.

Presumo tu intenda che desideri consentire un / 24 poiché la Classe D è indirizzi multicast e una rete di classe è morta negli anni '90. Per consentire un / 24, è possibile utilizzare uno dei seguenti:

Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24

Personalmente, trovo che l'ultimo sia meno ambiguo del primo e più facile da leggere del secondo.

È possibile trovare utile questa sezione della documentazione: http://httpd.apache.org/docs/2.4/howto/access.html#host


Quindi questo non funzionerà su Apache 2.2? phpMyAdmin funziona sia su 2.2 che su 2.4 e ho appena controllato per vedere cosa funzionava questo server ed è 2.2
user281497

A meno che non sia stato eseguito il backport di qualcosa per abilitarlo, non ho mai visto quella sintassi nei file di configurazione 2.2.
fukawi2,

@ fukawi2 - Sì, ovviamente hai ragione. Per user281497: Mentre Requireha un supporto limitato in Apache 2.2, Apache 2.2 non supporta né Require ipo <RequireAny>. Come notato nella Panoramica delle nuove funzionalità di Apache HTTP Server 2.4 , "È ora possibile specificare la logica di autorizzazione avanzata utilizzando la Requiredirettiva e le relative direttive sul contenitore, come <RequireAll>." I primi sono tra quei miglioramenti aggiunti ad Apache 2.4.
Colt

14

In Apache 2.2 e versioni precedenti, è possibile lavorare con:

Order deny,allow
Deny from all
Allow from 24.18    # allow access from home
Allow from 162.12   # allow access from work

nel tuo .htacess, direttamente al livello base (non all'interno di nessuno <directive>).

A partire da Apache 2.4 e versioni successive, ecco qui:

<RequireAny>
    #IPv4 range at my work
    Require ip 207.100
    #IPv4 range I usually get through my mobile provider
    Require ip 29.11
    #IPv6 from home
    Require ip 2a02:4126:2aa4::/48  
</RequireAny>

(tutti i numeri immaginari, nessuna preoccupazione ;-).

Lo sto usando da molti anni ormai, per proteggere le mie cartelle back-end dal 99% dei potenziali utenti. (Funziona molto bene, a meno che tu non sia un avido blogger mentre sei in viaggio. Se sei un utente gmail: "ultima attività dell'account" Il collegamento in fondo è un modo comodo per capire i tuoi "habbit IP").


Qual è la differenza tra Require ip 2a02:4126:2aa4::/48e Require ip 2a02:4126:2aa4::? Entrambi non producono errori di sintassi per me, ma solo il primo funziona.
Geremia,

3
È perché 2a02: 4126: 2aa4 :: = 2a02: 4126: 2aa4: 0000: 0000: 0000: 0000: 0000, mentre 2a02: 4126: 2aa4 :: / 48 corrisponde a tutti gli indirizzi che iniziano con 2a02: 4126: 2aa4?
Geremia,

1

Notando che ora avete confermato usando Apache 2.2 , Apache 2.2 non supporta né Require ipo <RequireAny>. Come notato nella Panoramica delle nuove funzionalità di Apache HTTP Server 2.4 , "È ora possibile specificare la logica di autorizzazione avanzata utilizzando la Requiredirettiva e le relative direttive sul contenitore, come <RequireAll>." I primi sono tra quei miglioramenti aggiunti ad Apache 2.4.

Per far fronte a questo in Apache 2.2, probabilmente dovrai fare qualcosa del tipo:

Order allow,deny
Allow from 123.123.123    

che otterrà l'intero intervallo specificato.


1

Nota: lo lascio qui perché altri potrebbero trarne beneficio; non è una risposta diretta alla domanda.

Per esempio:

Richiede ip 192.168.100.0/22

funziona, mentre

Richiede ip 192.168.100.0/22 ​​#localnetwork

non riesce!

Riavvio degli output httpd:

Il processo per httpd.service non è riuscito perché il processo di controllo è terminato con un codice di errore. Vedere "status systemctl httpd.service" e "journalctl -xe" per i dettagli.

Quindi, sembra che non siano consentiti commenti su quella riga .


1
I commenti non sono ammessi in nessuna parte di una riga di configurazione, vedere httpd.apache.org/docs/2.4/configuring.html : "Le righe che iniziano con il carattere hash" # "sono considerate commenti e ignorate. I commenti non possono essere inclusi in la stessa linea di una direttiva di configurazione. "
Patrick Mevzek,

0

La direttiva Require di Apache viene utilizzata durante la fase di autorizzazione per garantire che a un utente sia consentito o negato l'accesso a una risorsa. mod_authz_host estende i tipi di autorizzazione con ip, host, forward-dns e local. Possono essere utilizzati anche altri tipi di autorizzazione ma potrebbe essere necessario caricare moduli di autorizzazione aggiuntivi.

Questi provider di autorizzazione influiscono sugli host che possono accedere a un'area del server. L'accesso può essere controllato per nome host, indirizzo IP o intervallo di indirizzi IP.

Dalla v2.4.8, le espressioni supportate all'interno dell'host richiedono direttive. Richiedi ip

Il provider IP consente di controllare l'accesso al server in base all'indirizzo IP del client remoto. Quando si specifica Richiedi indirizzo IP ip, la richiesta può accedere se l'indirizzo IP corrisponde.

Un indirizzo IP completo:

Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205

Un indirizzo IP di un host ha permesso l'accesso

Un indirizzo IP parziale:

Require ip 10.1
Require ip 10 172.20 192.168.2

I primi 1-3 byte di un indirizzo IP, per la limitazione della sottorete.

Una coppia rete / maschera di rete:

Require ip 10.1.0.0/255.255.0.0

Un abcd di rete e una maschera di rete wxyz Per una limitazione di sottorete più dettagliata.

Una specifica CIDR di rete / nnn:

Require ip 10.1.0.0/16

Simile al caso precedente, tranne per il fatto che la maschera di rete è composta da nnn 1 bit di ordine superiore.

Si noti che gli ultimi tre esempi precedenti corrispondono esattamente allo stesso set di host.

Gli indirizzi IPv6 e le subnet IPv6 possono essere specificati come mostrato di seguito:

Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8:1:1::a
Require ip 2001:db8:2:1::/64
Require ip 2001:db8:3::/48

Nota: poiché gli indirizzi IP vengono analizzati all'avvio, le espressioni non vengono valutate al momento della richiesta.

Fonte: https://httpd.apache.org/docs/trunk/mod/mod_authz_host.html


5
Per favore, non solo copiare e incollare il lavoro di altre persone. Questo si chiama plagio.
Gerald Schneider,
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.