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>
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>
Odpowiedzi:
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
Require
ma ograniczone wsparcie w Apache 2.2, Apache 2.2 nie obsługuje albo Require ip
albo <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ą Require
dyrektywy i powiązanych dyrektyw kontenerowych, takich jak <RequireAll>
”. Te pierwsze należą do ulepszeń dodanych do Apache 2.4.
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”).
Require ip 2a02:4126:2aa4::/48
i Require ip 2a02:4126:2aa4::
? Oba nie powodują dla mnie błędów składniowych, ale działają tylko te pierwsze.
Biorąc pod uwagę, że potwierdziłeś używanie Apache 2.2 , Apache 2.2 nie obsługuje ani, Require ip
ani <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ą Require
dyrektywy 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.
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 .
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