kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
Stefan Lasiewski
Stefan Lasiewski
Question

Apache httpd: Bagaimana saya bisa Menolak dari semua, Mengijinkan dari subnet, tetapi Menolak dari IP dalam subnet itu?

Saya menjalankan CentOS 5.5 dengan stok Apache httpd-2.2.3.

Saya telah mengaktifkan mod_status di Lokasi /server-status. Saya ingin mengizinkan akses ke Lokasi tunggal ini dengan cara berikut:

  1. Tolak dari semua
  2. Izinkan dari subnet 192.168.16.0/24
  3. Tolak dari IP 192.168.16.100, yang berada dalam subnet 192.168.16.0/24.

1 &; 2 mudah. Namun, karena saya "Izinkan dari 192.168.16.0/24", apakah mungkin untuk Menolak dari 192.168.16.100?

Saya mencoba menambahkan pernyataan Deny untuk 192.168.16.100 tetapi tidak berhasil. Berikut adalah konfigurasi yang relevan:

<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Deny from  all
    Deny from  192.168.16.100 # This does not deny access from 192.168.16.100
    Allow from 192.168.16.0/24
</Location>

Atau:

<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Deny from  all
    Deny from  192.168.16.100 # This does not deny access from 192.168.16.100
    Allow from 192.168.16.0/24
</Location>

Namun, ini tidak mencegah akses ke halaman khusus ini, seperti yang ditunjukkan dalam log Akses:

www.example.org 192.168.16.100 - - [11/Mar/2011:16:01:14 -0800] "GET /server-status HTTP/1.1" 200 9966 "-" "

Menurut manual untuk mod_authz_host:

Allow,Deny

Pertama, semua arahan Allow dievaluasi; setidaknya satu harus cocok, atau permintaan ditolak. Selanjutnya, semua arahan Deny dievaluasi. Jika ada yang cocok, permintaan ditolak

Alamat IP cocok dengan arahan Deny, jadi, bukankah seharusnya permintaan ditolak?

Menurut tabel pada halaman mod_authz_host, alamat IP ini seharusnya "Cocok dengan kedua Izinkan &; Tolak &", dan dengan demikian "Kontrol kecocokan akhir: Ditolak &" aturan seharusnya berlaku.

    Cocokkan Izinkan, Tolak hasil Tolak, Izinkan hasil
    Cocokkan Izinkan saja Permintaan diizinkan Permintaan diizinkan
    Cocokkan Tolak saja Permintaan ditolak Permintaan ditolak
    Tidak ada kecocokan Default ke arahan kedua: Ditolak Default ke arahan kedua: Diizinkan
    Cocokkan keduanya Izinkan &; Tolak Kontrol kecocokan akhir: Ditolak Kontrol kecocokan akhir: Diizinkan
26 2011-03-11T01:24:16+00:00 3
 masegaloeh
masegaloeh
Pertanyaan edit 5 April 2015 в 2:21
Administrasi sistem
apache-2.2
mod-authz-host
Solution / Answer
 phunehehe
phunehehe
7 Oktober 2011 в 5:08
2011-10-07T17:08:16+00:00
Lebih
Sumber
Sunting
#21407324

Saya belum mengujinya, tetapi saya pikir Anda hampir sampai di sana.

<Location /server-status>
    SetHandler server-status
    Order Allow,Deny
    Deny from  192.168.16.100
    Allow from 192.168.16.0/24
</Location>

Tolak dari semua tidak diperlukan. Malah itu akan mengacaukan karena semuanya akan cocok dengan semua, dan dengan demikian ditolak (dan saya pikir Apache mencoba untuk menjadi pintar dan melakukan sesuatu yang bodoh). Saya selalu menemukan arahan Apache, Order, Allow dan Deny membingungkan, jadi selalu visualisasikan hal-hal dalam tabel (diambil dari dokumen):

Cocokkan | Izinkan, Tolak hasil | Tolak, Izinkan hasil
-------------------------------------------------------
Izinkan saja | Diizinkan | Diizinkan
Tolak saja | Ditolak | Ditolak
Tidak cocok | Default: Ditolak | Default: Diizinkan
Cocokkan keduanya | Kecocokan akhir: Ditolak | Kecocokan akhir: Diizinkan

Dengan pengaturan di atas:

  • Permintaan dari 192.168.16.100 mendapatkan "Match both" dan dengan demikian ditolak.
  • Permintaan dari 192.168.16.12 mendapatkan "Allow only" dan dengan demikian diizinkan.
  • Permintaan dari 123.123.123.123 mendapatkan "No match" dan dengan demikian ditolak.
35
0
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
 Mike
Mike
11 Maret 2011 в 1:50
2011-03-11T01:50:00+00:00
Lebih
Sumber
Sunting
#21407321

Saya mungkin akan melihat juga menambahkan aturan IPTables untuk ini untuk menolak host tunggal pada port 80, menolak dari semua, dan mengizinkan subnet.

Anda seharusnya tidak memiliki masalah dalam menyiapkan aturan deny dari alamat tertentu setelah Anda mengizinkan subnet. Lakukan saja dalam urutan itu.

1
0
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
 John
John
6 April 2011 в 8:51
2011-04-06T20:51:31+00:00
Lebih
Sumber
Sunting
#21407323

Dapatkah Anda menggunakan php? Jika demikian tambahkan statement php untuk keluar/redirect untuk satu alamat IP tertentu

Contoh:

$deny = array("111.111.111", "222.222.222", "333.333.333");

if (in_array ($_SERVER['REMOTE_ADDR'], $deny))

{ header("location: http://www.google.com/");

exit();

Referensi: http://perishablepress.com/press/2007/07/03/how-to-block-ip-addresses-with-php/

-4
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Анна Литвиненко
Terdaftar 2 hari yang lalu
2
Inessa bu
Terdaftar 1 bulan yang lalu
3
Denis Babushkin
Terdaftar 1 bulan yang lalu
4
asakuno asakuno
Terdaftar 1 bulan yang lalu
5
aldo salerno
Terdaftar 2 bulan yang lalu
Kecerdasan buatan untuk mengurai produk dari halaman mana pun
productapi.dev
ID
JA
© kzen.dev 2023
Sumber
serverfault.com
di bawah lisensi cc by-sa 3.0 dengan atribusi