Bagaimana cara saya membutuhkan rentang IP, bukannya 1 IP?

20

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

Jawaban:

22

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

fukawi2
sumber
Jadi ini tidak akan berfungsi pada Apache 2.2? phpMyAdmin bekerja pada 2.2 dan 2.4 dan saya baru saja memeriksa untuk melihat apa server ini berjalan dan 2.2
user281497
Kecuali ada sesuatu yang telah di-backport untuk mengaktifkannya, saya belum pernah melihat sintaks dalam 2.2 file konfigurasi.
fukawi2
@ fukawi2 - Ya, tentu saja Anda benar. Untuk pengguna281497: Meskipun Requirememiliki dukungan terbatas di Apache 2.2, Apache 2.2 tidak mendukung Require ipatau <RequireAny>. Seperti dicatat dalam Ikhtisar fitur baru di Apache HTTP Server 2.4 , "Logika otorisasi lanjutan sekarang dapat ditentukan menggunakan Requirearahan dan arahan wadah terkait, seperti <RequireAll>." Yang pertama adalah beberapa perbaikan yang ditambahkan ke Apache 2.4.
Colt
14

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

Frank Nocke
sumber
Apa perbedaan antara Require ip 2a02:4126:2aa4::/48dan Require ip 2a02:4126:2aa4::? Keduanya tidak menghasilkan kesalahan sintaksis untuk saya, tetapi hanya yang sebelumnya berfungsi.
Geremia
3
Apakah karena 2a02: 4126: 2aa4 :: = 2a02: 4126: 2aa4: 0000: 0000: 0000: 0000, sedangkan 2a02: 4126: 2aa4 :: / 48 cocok dengan semua alamat yang dimulai dengan 2a02: 4126: 2aa4?
Geremia
1

Memperhatikan bahwa Anda sekarang telah mengonfirmasi menggunakan Apache 2.2 , Apache 2.2 tidak mendukung Require ipatau <RequireAny>. Seperti dicatat dalam Ikhtisar fitur baru di Apache HTTP Server 2.4 , "Logika otorisasi lanjutan sekarang dapat ditentukan menggunakan Requirearahan 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.

Kuda jantan muda
sumber
1

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 .

Sorin Negulescu
sumber
1
Komentar tidak diizinkan di mana pun di dalam baris konfigurasi, lihat httpd.apache.org/docs/2.4/configuring.html : "Baris yang dimulai dengan karakter hash" # "dianggap sebagai komentar, dan diabaikan. Komentar mungkin tidak disertakan pada baris yang sama dengan arahan konfigurasi. "
Patrick Mevzek
0

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

mohsen nazari
sumber
5
Tolong jangan hanya menyalin & menempel pekerjaan orang lain. Ini disebut plagiarisme.
Gerald Schneider