Perubahan IP saya melakukan kelas D yang berbeda, jadi saya ingin menetapkan rentang:
123.123.123.xxx di mana segmen terakhir dapat 0-255.
Sekarang, Apache mengatakan:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
Perubahan IP saya melakukan kelas D yang berbeda, jadi saya ingin menetapkan rentang:
123.123.123.xxx di mana segmen terakhir dapat 0-255.
Sekarang, Apache mengatakan:
<RequireAny>
Require ip 127.0.0.1
Require ip ::1
</RequireAny>
Jawaban:
Pertama, saya akan menganggap maksud Anda Apache 2.4 terlepas dari tag "apache-2.2" karena sintaks yang Anda posting berasal dari 2.4.
Dari dokumentasi Apache:
ip.address adalah alamat IP, alamat IP parsial, pasangan jaringan / netmask, atau spesifikasi CIDR jaringan / nnn.
Saya berasumsi bahwa Anda bermaksud mengizinkan / 24 karena Kelas D adalah alamat Multicast, dan jaringan classful mati pada tahun 90-an. Untuk mengizinkan / 24, Anda dapat menggunakan salah satu dari yang berikut:
Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24
Secara pribadi, saya menemukan yang terakhir menjadi kurang ambigu daripada yang pertama, dan lebih mudah dibaca daripada yang kedua.
Anda dapat menemukan bagian dokumentasi ini berguna: http://httpd.apache.org/docs/2.4/howto/access.html#host
Require
memiliki dukungan terbatas di Apache 2.2, Apache 2.2 tidak mendukung Require ip
atau <RequireAny>
. Seperti dicatat dalam Ikhtisar fitur baru di Apache HTTP Server 2.4 , "Logika otorisasi lanjutan sekarang dapat ditentukan menggunakan Require
arahan dan arahan wadah terkait, seperti <RequireAll>
." Yang pertama adalah beberapa perbaikan yang ditambahkan ke Apache 2.4.
Di Apache 2.2 dan di bawah, Anda dapat bekerja dengan:
Order deny,allow
Deny from all
Allow from 24.18 # allow access from home
Allow from 162.12 # allow access from work
di .htacess Anda, langsung di tingkat dasar (tidak ada dalam <directive>
).
Pada Apache 2.4 dan lebih tinggi, ini dia:
<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>
(semua angka fiksi, jangan khawatir ;-).
Saya menggunakan ini selama bertahun-tahun sekarang, untuk melindungi folder backend saya terhadap 99% pengguna potensial. (Bekerja dengan sangat baik, kecuali jika Anda adalah blogger yang rajin bepergian. Jika Anda adalah pengguna gmail: "aktivitas akun terakhir" Tautan di bagian paling bawah adalah cara yang nyaman untuk mengetahui "kebiasaan IP" Anda sendiri).
Require ip 2a02:4126:2aa4::/48
dan Require ip 2a02:4126:2aa4::
? Keduanya tidak menghasilkan kesalahan sintaksis untuk saya, tetapi hanya yang sebelumnya berfungsi.
Memperhatikan bahwa Anda sekarang telah mengonfirmasi menggunakan Apache 2.2 , Apache 2.2 tidak mendukung Require ip
atau <RequireAny>
. Seperti dicatat dalam Ikhtisar fitur baru di Apache HTTP Server 2.4 , "Logika otorisasi lanjutan sekarang dapat ditentukan menggunakan Require
arahan dan arahan wadah terkait, seperti <RequireAll>
." Yang pertama adalah beberapa perbaikan yang ditambahkan ke Apache 2.4.
Untuk mengatasinya di Apache 2.2, Anda mungkin perlu melakukan sesuatu seperti:
Order allow,deny
Allow from 123.123.123
yang akan mendapatkan seluruh rentang yang ditentukan.
Catatan: Saya meninggalkan ini di sini karena orang lain mungkin mendapat manfaat darinya; itu bukan jawaban langsung untuk pertanyaan itu.
Sebagai contoh:
Membutuhkan ip 192.168.100.0/22
bekerja, sementara
Membutuhkan ip 192.168.100.0/22 #localnetwork
gagal!
Restart output httpd:
Pekerjaan untuk httpd.service gagal karena proses kontrol keluar dengan kode kesalahan. Lihat "systemctl status httpd.service" dan "journalctl -xe" untuk detailnya.
Jadi, sepertinya tidak ada komentar yang diizinkan pada baris itu .
Arahan Membutuhkan Apache digunakan selama fase otorisasi untuk memastikan bahwa pengguna diizinkan atau ditolak akses ke sumber daya. mod_authz_host memperluas jenis otorisasi dengan ip, host, forward-dns dan lokal. Jenis otorisasi lain juga dapat digunakan tetapi mungkin mengharuskan modul otorisasi tambahan dimuat.
Penyedia otorisasi ini memengaruhi host mana yang dapat mengakses area server. Akses dapat dikontrol oleh nama host, Alamat IP, atau rentang Alamat IP.
Sejak v2.4.8, ekspresi yang didukung di dalam host memerlukan arahan. Membutuhkan ip
Penyedia ip memungkinkan akses ke server untuk dikendalikan berdasarkan alamat IP dari klien jarak jauh. Ketika Membutuhkan ip ip-address ditentukan, maka permintaan diizinkan mengakses jika alamat IP cocok.
Alamat IP lengkap:
Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205
Alamat IP dari host dapat mengakses
Alamat IP parsial:
Require ip 10.1
Require ip 10 172.20 192.168.2
1 hingga 3 byte pertama dari alamat IP, untuk pembatasan subnet.
Pasangan jaringan / netmask:
Require ip 10.1.0.0/255.255.0.0
Jaringan abcd, dan netmask wxyz Untuk pembatasan subnet yang lebih halus.
Spesifikasi CIDR jaringan / nnn:
Require ip 10.1.0.0/16
Mirip dengan kasus sebelumnya, kecuali netmask terdiri dari nnn orde tinggi 1 bit.
Perhatikan bahwa tiga contoh terakhir di atas sama persis dengan host yang sama.
Alamat IPv6 dan subnet IPv6 dapat ditentukan seperti yang ditunjukkan di bawah ini:
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
Catatan: Karena alamat IP diuraikan saat startup, ekspresi tidak dievaluasi pada waktu permintaan.
Sumber: https://httpd.apache.org/docs/trunk/mod/mod_authz_host.html