Jak wymagać zakresu adresów IP zamiast 1 adresu IP?

20

Moje zmiany IP mają inną klasę D, więc chcę ustawić zakres:

123.123.123.xxx, gdzie ostatnim segmentem może być 0-255.

W tej chwili Apache mówi:

<RequireAny>
   Require ip 127.0.0.1
   Require ip ::1
</RequireAny>
użytkownik 281497
źródło

Odpowiedzi:

22

Po pierwsze, zakładam, że masz na myśli Apache 2.4 pomimo znacznika „apache-2.2”, ponieważ składnia, którą opublikowałeś, pochodzi z wersji 2.4.

Z dokumentacji Apache:

ip.address to adres IP, częściowy adres IP, para sieć / maska ​​sieci lub specyfikacja CIDR sieci / nnn.

Zakładam, że masz na myśli, że chcesz zezwolić na / 24, ponieważ klasa D to adresy multiemisji, a klasowe sieci zmarły w latach 90-tych. Aby zezwolić na a / 24, możesz użyć dowolnego z poniższych:

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

Osobiście uważam, że ostatni jest mniej dwuznaczny niż pierwszy i łatwiejszy do odczytania niż drugi.

Ta sekcja dokumentacji może być przydatna: http://httpd.apache.org/docs/2.4/howto/access.html#host

fukawi2
źródło
Więc to nie zadziała w Apache 2.2? phpMyAdmin działa zarówno w wersji 2.2, jak i 2.4, a ja właśnie sprawdziłem, co ten serwer działa i jest w wersji 2.2
user281497 14.04.2015
O ile nie zostało cofnięte importowanie, nigdy nie widziałem tej składni w plikach konfiguracyjnych 2.2.
fukawi2
@ fukawi2 - Tak, oczywiście masz rację. Dla user281497: Podczas Requirema ograniczone wsparcie w Apache 2.2, Apache 2.2 nie obsługuje albo Require ipalbo <RequireAny>. Jak zauważono w Omówieniu nowych funkcji serwera Apache HTTP Server 2.4 , „Można teraz określić zaawansowaną logikę autoryzacji za pomocą Requiredyrektywy i powiązanych dyrektyw kontenerowych, takich jak <RequireAll>”. Te pierwsze należą do ulepszeń dodanych do Apache 2.4.
Colt
14

W Apache 2.2 i niższych możesz pracować z:

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

w twoim .htacess, bezpośrednio na poziomie podstawowym (nie w ramach żadnego <directive>).

Począwszy od Apache 2.4 i nowszych, proszę:

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

(wszystkie liczby fikcyjne, bez obaw ;-).

Używam tego od wielu lat, aby chronić moje foldery zaplecza przed 99% potencjalnych użytkowników. (Działa bardzo dobrze, chyba że jesteś zapalonym blogerem podczas podróży. Jeśli jesteś użytkownikiem Gmaila: „ostatnia aktywność na koncie” Link na samym dole to wygodny sposób na wykrycie własnych „nawyków związanych z IP”).

Frank Nocke
źródło
Jaka jest różnica między Require ip 2a02:4126:2aa4::/48i Require ip 2a02:4126:2aa4::? Oba nie powodują dla mnie błędów składniowych, ale działają tylko te pierwsze.
Geremia,
3
Czy dlatego, że 2a02: 4126: 2aa4 :: = 2a02: 4126: 2aa4: 0000: 0000: 0000: 0000: 0000, podczas gdy 2a02: 4126: 2aa4 :: / 48 pasuje do wszystkich adresów zaczynających się od 2a02: 4126: 2aa4?
Geremia
1

Biorąc pod uwagę, że potwierdziłeś używanie Apache 2.2 , Apache 2.2 nie obsługuje ani, Require ipani <RequireAny>. Jak zauważono w Omówieniu nowych funkcji serwera Apache HTTP Server 2.4 , „Można teraz określić zaawansowaną logikę autoryzacji za pomocą Requiredyrektywy i powiązanych dyrektyw kontenerowych, takich jak <RequireAll>”. Te pierwsze należą do ulepszeń dodanych do Apache 2.4.

Aby poradzić sobie z tym w Apache 2.2, prawdopodobnie będziesz musiał zrobić coś takiego:

Order allow,deny
Allow from 123.123.123    

który uzyska cały określony zakres.

Źrebię
źródło
1

Uwaga: zostawiam to tutaj, ponieważ inni mogą z tego skorzystać; nie jest to bezpośrednia odpowiedź na pytanie.

Na przykład:

Wymagaj adresu IP 192.168.100.0/22

działa, podczas gdy

Wymagaj adresu IP 192.168.100.0/22 ​​#localnetwork

zawodzi!

Ponowne uruchamianie wyjść httpd:

Zadanie dla usługi httpd.service nie powiodło się, ponieważ proces kontroli zakończył się z kodem błędu. Zobacz „systemctl status httpd.service” i „journalctl -xe”, aby uzyskać szczegółowe informacje.

Wygląda więc na to, że komentarze w tej linii nie są dozwolone .

Sorin Negulescu
źródło
1
Komentarze nie są dozwolone nigdzie w wierszu konfiguracji, patrz httpd.apache.org/docs/2.4/configuring.html : „Linie zaczynające się od znaku krzyżyka„ # ”są uważane za komentarze i są ignorowane. Komentarze mogą nie być uwzględnione w ten sam wiersz co dyrektywa dotycząca konfiguracji. ”
Patrick Mevzek
0

Dyrektywa Wymagaj Apache jest używana podczas fazy autoryzacji, aby zapewnić, że użytkownik ma dostęp lub nie ma dostępu do zasobu. mod_authz_host rozszerza typy autoryzacji o ip, host, forward-dns i local. Można także zastosować inne typy autoryzacji, ale może to wymagać załadowania dodatkowych modułów autoryzacji.

Ci dostawcy autoryzacji wpływają na to, które hosty mogą uzyskać dostęp do obszaru serwera. Dostęp może być kontrolowany przez nazwę hosta, adres IP lub zakres adresów IP.

Od wersji 2.4.8 wyrażenia są obsługiwane przez hosta wymagają dyrektyw. Wymagaj ip

Dostawca ip umożliwia kontrolę dostępu do serwera na podstawie adresu IP zdalnego klienta. Po określeniu Wymagaj adresu IP ip żądanie może uzyskać dostęp, jeśli adres IP jest zgodny.

Pełny adres IP:

Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205

Adres IP hosta dozwolonego dostępu

Częściowy adres IP:

Require ip 10.1
Require ip 10 172.20 192.168.2

Pierwsze 1 do 3 bajtów adresu IP dla ograniczenia podsieci.

Para sieć / maska ​​sieci:

Require ip 10.1.0.0/255.255.0.0

Sieć abcd i maska ​​sieci wxyz Aby uzyskać bardziej szczegółowe ograniczenie podsieci.

Specyfikacja CIDR sieci / nnn:

Require ip 10.1.0.0/16

Podobnie jak w poprzednim przypadku, z tym że maska ​​sieci składa się z nnn 1-bitowego rzędu.

Pamiętaj, że trzy ostatnie przykłady powyżej odpowiadają dokładnie temu samemu zestawowi hostów.

Adresy IPv6 i podsieci IPv6 można określić, jak pokazano poniżej:

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

Uwaga: Ponieważ adresy IP są analizowane podczas uruchamiania, wyrażenia nie są analizowane w czasie żądania.

Źródło: https://httpd.apache.org/docs/trunk/mod/mod_authz_host.html

mohsen nazari
źródło
5
Proszę nie kopiuj i wklejaj pracy innych ludzi. Nazywa się to plagiatem.
Gerald Schneider