Mengizinkan akses ke host virtual Apache hanya dari jaringan lokal

19

Saya memiliki halaman web di server Linux yang saya kelola, menjalankan Apache 2.2. Server ini dapat dilihat oleh dunia luar untuk beberapa layanan lain.

Saya ingin mengonfigurasi Apache sehingga virtual host yang diberikan hanya terlihat dari dalam jaringan lokal, jadi saya bisa menggunakan aplikasi web untuk mendapatkan umpan balik dari orang lain di organisasi saya. Saya rasa ini ada hubungannya dengan izin Allow, tetapi percobaan saya tidak berjalan dengan baik.

Bagaimana saya bisa mengubah file konfigurasi saya untuk mencapainya? Haruskah saya mengubah konfigurasi firewall juga?

Btz
sumber
Apakah Anda menggunakan alamat IP pribadi (non-routable) seperti 10.0.0.100 atau alamat IP publik (routable) untuk server Anda?
closetnoc
Server memiliki alamat IP publik, dan saya dapat menghubungkannya dari luar jaringan kerja - dari rumah, misalnya. Komputer kolega semuanya memiliki alamat IP lokal dari tipe 10. *. *. *.
Btz

Jawaban:

12

Mudah. Cukup atur sesuatu seperti ini di dalam konfigurasi utama Anda atau konfigurasi virtual Anda:

<Directory /var/www/path/to/your/web/documents>

  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 ::1
  Allow from localhost
  Allow from 192.168
  Allow from 10
  Satisfy Any

</Directory>

The <Directory></Directory>pernyataan pada dasarnya mengatakan, “Gunakan aturan ini untuk apa pun di direktori ini. Dan dengan "direktori ini" yang merujuk pada /var/www/path/to/your/web/documentsyang telah saya tetapkan dalam contoh ini tetapi harus diubah agar sesuai dengan jalur direktori lokal situs Anda.

Selanjutnya dalam <Directory></Directory>area Anda mengubah perilaku Apache default yang Allowsemuanya secara default menjadi Order Deny,Allow. Selanjutnya, Anda menetapkan Deny from alldari menolak akses dari semua orang. Berikut ini adalah Allow frompernyataan yang memungkinkan akses dari 127.0.0.1 ::1(alamat IP localhost), localhost(localhost itu sendiri). Itu semua hal standar. Karena akses dari localhostdiperlukan untuk banyak proses sistem internal.

Berikut ini adalah hal-hal yang penting bagi Anda.

The Allow fromuntuk 192.168serta 10akan memungkinkan akses dari setiap / semua alamat jaringan dalam jangkauan jaringan yang diawali dengan angka-angka.

Jadi dengan menunjukkan 192.168bahwa pada dasarnya berarti jika pengguna memiliki alamat seperti 192.168.59.27atau 192.168.1.123mereka akan dapat melihat situs web.

Dan juga menggunakan Allow fromuntuk 10menjamin prefix bahwa jika seseorang memiliki alamat IP dari 10.0.1.2atau bahkan 10.90.2.3mereka akan dapat melihat konten.

Hampir semua jaringan internal di dunia menggunakan 192.168rentang atau sesuatu dalam 10jangkauan. Tidak ada yang eksternal. Jadi menggunakan kombo ini akan mencapai tujuan Anda memblokir akses ke dunia luar tetapi hanya mengizinkan akses dari dalam jaringan lokal Anda.

JakeGould
sumber
Apa yang Satisfy Anyseharusnya dilakukan dalam kasus ini? Saya tidak tahu apa-apa tentang semua ini tetapi ketika itu ada dalam skenario saya, saya bisa mengakses halaman (saya menggunakan <Location /path>) dari jaringan eksternal. Namun menghapusnya memperbaiki masalah saya. Sangat menyenangkan untuk memahami mengapa ini terjadi karena sedikit khawatir bahwa saya dapat mengakses halaman bahkan dengan aturan yang berlaku.
liamnichols
@liamnichols Seperti yang dijelaskan di sini : "Mengizinkan permintaan jika persyaratan apa pun dipenuhi (otentikasi ATAU akses)."
JakeGould
14

Orang-orang yang masuk dalam jawaban ini, harap dicatat bahwa ini khusus untuk Apache 2.2.

Apache 2.4 telah menghentikan arahan ini.

Cara baru menggunakan modul mod_authz_hostdan Requirearahan. ( tautan )

Di Apache 2.4 yang harus Anda lakukan

<Directory /var/www/ncp-web/>
  Require host localhost
  Require ip 127.0.0.1
  Require ip 192.168
  Require ip 10
</Directory>

, dan hapus semua arahan Perbolehkan.

nachoparker
sumber
5

Tambahkan bagian ini di dalam direktif host virtual Anda:

<Location /mypathurl>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.10
</Location>

Ganti IP Anda di atas. Ini tidak boleh digunakan untuk keamanan tingkat keuangan, FYI.

Chloe
sumber
-1

Saya tidak tahu bagaimana Anda memiliki pengaturan jaringan Anda, namun, saya mengasumsikan sesuatu untuk mencoba dan membuat jawaban yang lebih baik.

Mari kita asumsikan Anda memiliki kantor kecil dengan koneksi DSL. Anda akan memiliki alamat IP publik statis atau blok alamat yang ditetapkan untuk saluran Anda, modem DSL, dan firewall. Tanpa masuk ke detail tentang bagaimana ini terjadi, saya akan sampai ke bagian penting.

Anda harus menggunakan NAT (terjemahan alamat jaringan). Ini memungkinkan alamat IP publik berada di sisi WAN (Internet) jaringan Anda dan menggunakan alamat IP pribadi (seperti 10.0.0.100) di dalam jaringan di sisi LAN. Ini adalah prosedur operasi standar. Jika Anda meng-host server web dalam jaringan Anda, maka Anda akan menggunakan port forwarding atau mekanisme serupa lainnya) untuk mengarahkan lalu lintas web apa pun ke server web Anda.

Dalam skenario standar ini, komputer internal Anda semua akan menggunakan alamat IP pribadi.

Dengan asumsi bahwa Anda memiliki pengaturan jaringan standar yang serupa, Anda akan mengubah alamat IP komputer Anda dari alamat IP publik ke alamat IP pribadi. Jaringan Anda mungkin memiliki pengaturan DHCP tempat komputer Anda dapat meminta alamat IP yang tersedia. Ini berarti bahwa alih-alih menentukan alamat IP, Anda memilih untuk menggunakan DHCP dan alamat IP akan ditetapkan. Jika DHCP tidak tersedia, maka Anda harus memeriksa beberapa komputer lain untuk ruang alamat IP pribadi yang dapat digunakan dan memilih alamat IP dalam ruang yang tidak digunakan. Anda dapat menentukan alamat IP yang tidak digunakan ini dalam pengaturan jaringan Anda. Ini harus menjaga sistem Anda agar tidak terlihat di Internet.

closetnoc
sumber
Saya memikirkannya, tetapi itu bukan solusi praktis. Ada layanan pada mesin yang harus tetap terlihat di luar, dan dalam hal apa pun saya berencana untuk membuat aplikasi web terlihat lagi dalam beberapa hari - tidak ada gunanya merevolusi tata letak jaringan hanya untuk beberapa hari. Apa yang bisa saya kerjakan adalah hal-hal seperti konfigurasi Apache.
Btz
Jika Anda memiliki firewall, maka Anda dapat menutup beberapa port ke alamat IP itu.
closetnoc
Pengaturan firewall dapat digunakan, tetapi itu benar-benar berlebihan. Apache memiliki fungsionalitas bawaan untuk menolak atau mengizinkan berdasarkan alamat IP & kriteria terkait lainnya. Lihat jawaban saya untuk lebih jelasnya.
JakeGould
@JakeGould Firewall tidak selalu merupakan solusi yang berlebihan. Saya tahu Apache sangat baik. Namun, ada opsi pemfilteran HTTP di sebagian besar firewall yang baik yang membantu tanpa meletakkan beban pada server itu sendiri. Selain itu, sementara Apache sangat bagus, bukan tanpa kesalahan. Juga, akses port termasuk akses port alternatif dapat dimanipulasi menggunakan firewall sehingga beberapa layanan web tetap publik dan yang lain hanya dapat diakses dalam LAN.
closetnoc