Cara membatasi akses ke sumber daya menggunakan Apache di Linux

Cara membatasi akses ke sumber daya menggunakan Apache di Linux

Membatasi akses ke sumber daya sering diperlukan saat menggunakan web. Pada aplikasi web yang kompleks, ini sering diimplementasikan menggunakan sistem login yang bisa lebih atau kurang canggih. Namun, jika persyaratan kami cukup mendasar, kami dapat menggunakan sistem otentikasi yang disediakan oleh Server Web Apache. Dalam tutorial ini kita akan melihat bagaimana kita bisa melakukannya.

Dalam tutorial ini Anda akan belajar:

  • Cara membatasi akses ke halaman web menggunakan server web apache
  • Cara menyimpan kata sandi pengguna dalam file teks biasa
  • Cara menyimpan kata sandi pengguna dalam database
  • Bagaimana mengizinkan akses ke banyak pengguna
Cara membatasi akses ke sumber daya menggunakan Apache di Linux

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi-independen
Perangkat lunak Server web apache
Lainnya Hak istimewa root untuk memodifikasi file konfigurasi
Konvensi # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Konfigurasi Dasar



Pengaturan paling dasar melibatkan dua langkah: penciptaan a file kata sandi di mana kata sandi pengguna akan disimpan, dan penggunaan arahan spesifik di file konfigurasi utama server (lokasi file ini tergantung pada distribusi yang kami gunakan: pada fedora dan keluarga distribusi topi merah, file tersebut /etc/httpd/http/conf, saat distribusi yang berbasis di Debian, misalnya, IS /etc/apache2/apache2.conf), dalam file konfigurasi virtualhost, atau di dalam .htaccess file ditempatkan di dalam direktori yang sesuai.

Jika kami memutuskan untuk menggunakan opsi terakhir ini, kami harus yakin Authconfig Petunjuk dapat ditimpa. Seandainya .htaccess File ada di dalam /var/www/html/dibatasi direktori, kami akan menulis:

 AuthConfig AuthOverride  

Membuat file kata sandi

Membuat file kata sandi sangat mudah: yang harus kami lakukan adalah menggunakan htpasswd utilitas, yang biasanya dilengkapi dengan instalasi Apache. Sangat penting bahwa file yang berisi kata sandi pengguna ditempatkan di direktori di mana ia tidak dapat diakses oleh publik. Dalam tutorial ini kami akan membuat file di dalam /etc/httpd direktori.

Misalkan kita ingin mengizinkan akses ke EGDOC pengguna. Untuk membuat kata sandinya, kami akan menjalankan:

$ sudo htpasswd -c/etc/httpd/kata sandi egdoc 

Itu htpasswd Utilitas digunakan untuk mengelola kata sandi pengguna dan menyimpannya di file teks biasa. Dalam hal ini kami memohon utilitas dan menggunakannya dengan -C Opsi: Ini diperlukan untuk membuat file dari awal. Jika file sudah ada, itu terpotong, oleh karena itu ketika kita perlu menambahkan entri baru ke sana, opsi harus dihilangkan.

Kami memberikan dua argumen: Yang pertama adalah jalur file kata sandi, yang kedua adalah nama pengguna yang ingin kami buat kata sandi. Perintah akan meminta kami untuk memasukkan kata sandi untuk pengguna, dan untuk mengonfirmasi:

Kata Sandi Baru: Jenis Kata Sandi Baru: 

Kami tidak akan dapat melihat kata sandi saat kami memasukkannya. Jika kita sekarang melihat ke dalam file yang dihasilkan, kita dapat melihat bahwa itu telah disimpan setelah hash dengan format hashing apache apache:

EGDOC: $ Apr1 $ gevswc3p $ zhr/mqmmn6g7tj8fh8rcy/ 

Siapkan server



Setelah file kata sandi kami siap, kami perlu membuat konfigurasi yang tepat untuk server web apache. Sebagai contoh, mari kita asumsikan kita ingin membatasi akses ke /var/www/dibatasi direktori yang merupakan Root document dari virtualhost yang dikonfigurasi sebagai berikut:

 Tes servername.LAN Documentroot/var/www/authtype terbatas authname dasar "area terbatas!"File authbasicprovider authuserfile/etc/httpd/kata sandi memerlukan egdoc pengguna   

Mari kita periksa arahan yang kami gunakan dalam konfigurasi ini.

Pertama -tama, kami menggunakan AUTHTYPE. Petunjuk ini digunakan untuk memilih jenis otentikasi apa yang ingin kami gunakan. Dalam hal ini kita memilih "Dasar" sebagai nilai: fungsi ini disediakan oleh mod_auth_basic modul. Nilai lain yang mungkin adalah Tidak ada, intisari (disediakan oleh modul mod_auth_digest), dan Membentuk, yang disediakan oleh modul mod_auth_form.

Itu AuthbasicProvider Petunjuk digunakan untuk menyatakan penyedia apa yang harus digunakan untuk otentikasi. Dalam hal ini kami bisa menghilangkannya, sejak mengajukan adalah nilai default, disediakan oleh mod_authn_file modul.

Dengan Authname Petunjuk, kami menyiapkan a dunia. Konfigurasi ini pada dasarnya memiliki dua tujuan: sebagai hal pertama, pesan yang kami berikan di sini, akan muncul sebagai pesan pada prompt yang disediakan oleh server, misalnya:

Situs itu mengatakan: “Area terbatas!"

"Ranah" juga digunakan oleh klien, untuk memutuskan kata sandi apa yang harus dikirim ke server. Jika pengguna sudah diautentikasi, itu akan dapat mengakses semua sumber daya di bawah ranah yang sama, tanpa harus masuk lagi.

Itu AuthuserFile Petunjuk digunakan untuk menunjuk ke file teks biasa yang menampung kata sandi pengguna yang kami buat sebelumnya dengan htpasswd kegunaan.

Akhirnya, kami memiliki Memerlukan pengarahan. Dengan arahan ini kami dapat membatasi akses ke sumber daya di dasar beberapa parameter sebagai alamat IP klien, atau, seperti dalam hal ini, otentikasi sebagai pengguna tertentu.

Itu /var/www/tes Direktori berisi file indeks, indeks.html, di mana kami baru saja menempatkan “akses yang diberikan!" pesan. Setelah konfigurasi kami siap, kami dapat memulai kembali server:

$ sudo systemctl restart httpd 

Ketika kami mencoba mengakses halaman, kami akan diminta untuk memasukkan nama login dan kata sandi:

Prompt login apache

Jika kami memberikan kredensial yang tepat, akses ke halaman akan diberikan:

Akses Apache Diberikan

Menggunakan grup

Dalam sebagian besar kasus, kami ingin mengizinkan banyak pengguna untuk mengakses sumber daya. Dalam kasus tersebut kami ingin menggunakan a file grup di mana kami mengaitkan nama grup dengan daftar anggotanya yang dipisahkan ruang. Misalkan jalur file kami /etc/httpd/grup; Kontennya adalah:

Diizinkan Penggala: Egdoc Tim Rob 


Kami menyatakan bahwa pengguna EGDOC, Tim dan Rob adalah anggota Orang yang diizinkan Grup: Untuk masing -masing entri dalam file kata sandi harus ditambahkan. Pada titik ini kita perlu mengubah konfigurasi server kita dan menyesuaikannya dengan pengaturan baru:

 Tes servername.LAN Documentroot/var/www/authtype terbatas authname dasar "area terbatas!"File authbasicprovider authuserfile/etc/httpd/kata sandi authgroupfile/etc/httpd/grup memerlukan Group yang diizinkan   

Kami memperkenalkan arahan baru, AuthGroupFile, dan meneruskannya jalur file tempat grup dipetakan ke pengguna. Kami juga mengubah nilai Memerlukan pengarahan; Sekarang, agar diizinkan mengakses sumber daya, pengguna harus menjadi bagian dari Orang yang diizinkan kelompok. Untuk membuat perubahan efektif, kita perlu memulai kembali server.

Menyimpan kata sandi dalam database

Dalam contoh sebelumnya, kami melihat cara menyimpan kata sandi pengguna di dalam file teks sederhana dan sederhana. Ini adalah solusi yang layak yang sempurna ketika kami tidak memiliki banyak pengguna. Ketika daftar pengguna menjadi cukup panjang, sebaliknya, bisa sangat tidak praktis untuk memindai seluruh file kata sandi untuk setiap permintaan. Dalam kasus seperti itu, kami mungkin ingin menyimpan kata sandi dalam database.

Salah satu opsi adalah membuat a Dbm mengajukan. Kita dapat menyelesaikan tugas dengan menggunakan htdbm kegunaan. Untuk menghasilkan a dbm File di posisi yang sama yang kami gunakan dalam contoh sebelumnya, kami dapat menjalankan:

$ sudo htdbm -cb/etc/httpd/passwd/kata sandi EGDOC Kata sandi baru: Jenis Kata Sandi Baru: Database Passwd/Kata Sandi Dibuat. 


Seperti yang Anda lihat, sintaksnya sangat mirip dengan yang digunakan htpasswd. Sama seperti sebelumnya, kami meluncurkan perintah menggunakan -C opsi, untuk membuat file, atau memotongnya jika sudah ada. Dalam hal ini kami juga menggunakan -B opsi untuk menggunakan bcrypt Algoritma untuk enkripsi kata sandi. Karena kami mengubah cara kata sandi disimpan, kami juga harus mengubah konfigurasi server:

 Tes servername.LAN Documentroot/var/www/authtype terbatas authname dasar "area terbatas!"AUTHBASICPROVIDER DBM AUTHDBMUSERFILE/ETC/HTTPD/PASSWD/Kata Sandi Membutuhkan Pengguna EGDOC   

Apa yang kami ubah di atas, adalah nilai yang kami berikan ke AuthbasicProvider arahan, yang sekarang dbm. Kami juga menggantikan AuthuserFile arahan dengan AUTHDBMUSERFILE, memberikan seperti sebelumnya, jalur file tempat kata sandi disimpan. Agar konfigurasi ini berfungsi, kita harus memiliki mod_authn_dmb modul diaktifkan.

Kesimpulan

Dalam tutorial ini kami melihat cara membatasi akses ke sumber daya dan mengimplementasikan sistem otentikasi login sederhana menggunakan server web apache. Kami melihat cara menyimpan kata sandi dalam file teks biasa atau di a dbm format basis data. Kami juga melihat cara mengizinkan akses ke beberapa pengguna menggunakan a File grup dan arahan apa yang harus digunakan untuk mencapai tujuan kami.

Tutorial Linux Terkait:

  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Ubuntu 20.04 WordPress dengan Instalasi Apache
  • SQLite Linux Tutorial untuk Pemula
  • Instalasi ampache raspberry pi
  • Cara memigrasikan Apache ke nginx dengan mengonversi virtualhosts ke ..
  • Menguasai loop skrip bash
  • Instal MySQL di Ubuntu 20.04 LTS Linux
  • Cara menginstal mysql di almalinux
  • Tutorial LFTP di Linux dengan contoh