Cara menyekat akses ke sumber menggunakan Apache di Linux

Cara menyekat akses ke sumber menggunakan Apache di Linux

Mengehadkan akses ke sumber sering diperlukan semasa menggunakan web. Pada aplikasi web yang kompleks, ini sering dilaksanakan menggunakan sistem log masuk yang boleh lebih canggih. Sekiranya keperluan kami kami cukup asas, kami boleh menggunakan sistem pengesahan yang disediakan oleh pelayan web Apache. Dalam tutorial ini kita akan melihat bagaimana kita boleh melakukannya.

Dalam tutorial ini anda akan belajar:

  • Cara menyekat akses ke laman web menggunakan pelayan web Apache
  • Cara menyimpan kata laluan pengguna dalam fail teks biasa
  • Cara menyimpan kata laluan pengguna dalam pangkalan data
  • Cara Membenarkan Akses kepada Pelbagai Pengguna
Cara menyekat akses ke sumber menggunakan Apache di Linux

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Pengedaran-bebas
Perisian Pelayan web Apache
Yang lain Keistimewaan root untuk mengubah suai fail konfigurasi
Konvensyen # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak

Konfigurasi asas



Persediaan yang paling asas melibatkan dua langkah: penciptaan a fail kata laluan Di mana kata laluan pengguna akan disimpan, dan penggunaan arahan khusus dalam fail konfigurasi utama pelayan (lokasi fail ini bergantung pada pengedaran yang kami gunakan: pada fedora dan keluarga red hat pengedaran, failnya adalah /etc/httpd/http/conf, Semasa di pengedaran berasaskan Debian, adalah /etc/apache2/apache2.Conf), dalam fail konfigurasi virtualhost, atau di dalam .Htaccess fail diletakkan di dalam direktori yang sesuai.

Sekiranya kita memutuskan untuk menggunakan pilihan terakhir ini, kita mesti pastikan AuthConfig Arahan dapat ditimpa. Menganggap .Htaccess fail ada di dalam /var/www/html/terhad Direktori, kami akan menulis:

 Allowoverride AuthConfig  

Membuat fail kata laluan

Membuat fail kata laluan sangat mudah: yang perlu kita lakukan ialah menggunakan htpasswd utiliti, yang biasanya disertakan dengan pemasangan Apache. Sangat penting bahawa fail yang mengandungi kata laluan pengguna diletakkan dalam direktori di mana ia tidak dapat diakses oleh orang ramai. Dalam tutorial ini kita akan membuat fail di dalamnya /etc/httpd direktori.

Katakan kita mahu membenarkan akses ke Egdoc pengguna. Untuk membuat kata laluannya, kami akan berjalan:

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

The htpasswd Utiliti digunakan untuk menguruskan kata laluan pengguna dan menyimpannya dalam fail teks biasa. Dalam kes ini, kami menggunakan utiliti dan menggunakannya dengan -c Pilihan: Ini diperlukan untuk membuat fail dari awal. Sekiranya fail sudah ada, ia dipotong, oleh itu apabila kita perlu menambah entri baru kepadanya, pilihan mesti ditinggalkan.

Kami menyediakan dua hujah: Yang pertama adalah laluan fail kata laluan, yang kedua adalah nama pengguna yang kami ingin buat kata laluan untuk. Perintah akan meminta kami memasukkan kata laluan untuk pengguna, dan mengesahkannya:

Kata Laluan Baru: Menaip semula kata laluan baru: 

Kami tidak akan dapat melihat kata laluan semasa kami memasukkannya. Jika kita kini melihat di dalam fail yang dihasilkan, kita dapat melihat bahawa ia telah disimpan selepas telah hashed dengan format hashing APR1 Apache:

EGDOC: $ APR1 $ GEVSWC3P $ ZHR/MQMMN6G7TJ8FH8RCY/ 

Persediaan pelayan



Setelah fail kata laluan kami siap, kami perlu membuat konfigurasi yang tepat untuk pelayan web Apache. Sebagai contoh, mari kita anggap kita mahu menyekat akses ke /var/www/terhad direktori yang mana Documentroot daripada Virtualhost yang dikonfigurasikan seperti berikut:

 Ujian ServerName.LAN Documentroot/var/www/terhad authType asas authname "Kawasan Terhad!"AuthBasicProvider File AuthuserFile/etc/httpd/kata laluan memerlukan egdoc pengguna   

Mari kita periksa arahan yang kami gunakan dalam konfigurasi ini.

Pertama sekali, kami menggunakan AuthType. Arahan ini digunakan untuk memilih jenis pengesahan yang ingin kami gunakan. Dalam kes ini kita memilih "Asas" sebagai nilai: fungsi ini disediakan oleh mod_auth_basic modul. Nilai lain yang mungkin adalah Tiada, Mencerna (disediakan oleh modul mod_auth_digest), dan Bentuk, yang disediakan oleh modul mod_auth_form.

The AuthBasicProvider Arahan digunakan untuk mengisytiharkan pembekal apa yang harus digunakan untuk pengesahan. Dalam kes ini kita dapat meninggalkannya, sejak itu fail adalah nilai lalai, yang disediakan oleh mod_authn_file modul.

Dengan AuthName arahan, kami menyediakan a alam. Konfigurasi ini pada dasarnya mempunyai dua tujuan: sebagai perkara pertama, mesej yang kami sediakan di sini, akan muncul sebagai mesej pada arahan yang disediakan oleh pelayan, sebagai contoh:

Laman ini berkata: "Kawasan Terhad!"

"Realm" juga digunakan oleh pelanggan, untuk menentukan kata laluan yang harus dihantar ke pelayan. Sekiranya pengguna sudah disahkan, ia akan dapat mengakses semua sumber di bawah alam yang sama, tanpa perlu log masuk.

The Authuserfile Arahan digunakan untuk menunjuk pada fail teks biasa yang menganjurkan kata laluan pengguna yang kami buat sebelum ini dengan htpasswd utiliti.

Akhirnya, kami mempunyai Memerlukan arahan. Dengan arahan ini, kita dapat menyekat akses kepada sumber di pangkalan beberapa parameter sebagai alamat IP klien, atau, seperti dalam kes ini, pengesahan sebagai pengguna tertentu.

The /var/www/ujian Direktori mengandungi fail indeks, indeks.html, di mana kami hanya meletakkan "akses yang diberikan!"Mesej. Setelah konfigurasi kami siap, kami dapat memulakan semula pelayan:

$ sudo systemctl mulakan semula httpd 

Apabila kami cuba mengakses halaman, kami akan diminta memasukkan nama log masuk dan kata laluan:

Arahan log masuk apache

Jika kami memberikan kelayakan yang betul, akses ke halaman akan diberikan:

Akses Apache diberikan

Menggunakan kumpulan

Dalam kebanyakan kes, kami ingin membenarkan banyak pengguna mengakses sumber. Dalam kes tersebut, kami mahu menggunakan a fail kumpulan di mana kita mengaitkan nama kumpulan dengan senarai yang dipisahkan ruang anggotanya. Katakan jalan fail kami adalah /etc/httpd/kumpulan; kandungannya akan:

Dibenarkan: Egdoc Tim Rob 


Kami menyatakan bahawa pengguna EGDOC, Tim dan Rob adalah ahli Dibenarkan Kumpulan: Bagi masing -masing entri dalam fail kata laluan hendaklah ditambah. Pada ketika ini kita perlu menukar konfigurasi pelayan kami dan menyesuaikannya dengan persediaan baru:

 Ujian ServerName.LAN Documentroot/var/www/terhad authType asas authname "Kawasan Terhad!"AuthBasicProvider File AuthuserFile/etc/httpd/kata laluan AuthGroupFile/etc/httpd/kumpulan memerlukan pemberi kuasa kumpulan   

Kami memperkenalkan arahan baru, AuthGroupFile, dan menyerahkannya kepada laluan fail di mana kumpulan dipetakan kepada pengguna. Kami juga mengubah nilai Memerlukan arahan; Sekarang, dibenarkan untuk mengakses sumber, pengguna mesti menjadi sebahagian daripada Dibenarkan kumpulan. Untuk membuat perubahan berkesan, kita perlu memulakan semula pelayan.

Menyimpan kata laluan dalam pangkalan data

Dalam contoh sebelumnya, kami melihat cara menyimpan kata laluan pengguna di dalam fail teks yang mudah dan mudah. Ini adalah penyelesaian yang sempurna apabila kita tidak mempunyai banyak pengguna. Apabila senarai pengguna menjadi agak lama, sebaliknya, ia mungkin tidak praktikal untuk mengimbas keseluruhan fail kata laluan untuk setiap permintaan. Dalam kes seperti itu, kita mungkin mahu menyimpan kata laluan dalam pangkalan data.

Satu pilihan adalah untuk membuat a Dbm fail. Kita dapat melaksanakan tugas dengan menggunakan htdbm utiliti. Untuk menjana a dbm Fail dalam kedudukan yang sama yang kami gunakan dalam contoh sebelumnya, kami boleh menjalankan:

$ sudo htdbm -cb/etc/httpd/passwd/kata laluan egdoc kata laluan baru: semula kata laluan baru: passwd pangkalan data/kata laluan dibuat. 


Seperti yang anda lihat, sintaks sangat serupa dengan yang digunakan htpasswd. Sama seperti sebelumnya, kami melancarkan arahan menggunakan -c pilihan, untuk membuat fail, atau memotongnya jika sudah ada. Dalam kes ini kita juga menggunakan -B pilihan untuk menggunakan Bcrypt algoritma untuk penyulitan kata laluan. Oleh kerana kita mengubah cara kata laluan disimpan, kita juga mesti menukar konfigurasi pelayan:

 Ujian ServerName.LAN Documentroot/var/www/terhad authType asas authname "Kawasan Terhad!"AuthBasicProvider DBM Authdbmuserfile/etc/httpd/passwd/kata laluan memerlukan egdoc pengguna   

Apa yang kita ubah di atas, adalah nilai yang kita lalui ke AuthBasicProvider arahan, yang sekarang dbm. Kami juga menggantikan Authuserfile arahan dengan Authdbmuserfile, menyediakan seperti sebelumnya, jalan fail di mana kata laluan disimpan. Untuk konfigurasi ini berfungsi, kita mesti mempunyai mod_authn_dmb modul diaktifkan.

Kesimpulan

Dalam tutorial ini, kami melihat bagaimana untuk menyekat akses kepada sumber dan melaksanakan sistem pengesahan log masuk mudah menggunakan pelayan web Apache. Kami melihat cara menyimpan kata laluan dalam fail teks biasa atau di dbm Format pangkalan data. Kami juga melihat bagaimana untuk membolehkan akses kepada pelbagai pengguna menggunakan a Fail kumpulan Dan arahan apa yang harus digunakan untuk mencapai matlamat kami.

Tutorial Linux Berkaitan:

  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Ubuntu 20.04 WordPress dengan pemasangan Apache
  • Tutorial SQLite Linux untuk pemula
  • Pemasangan ampache raspberry pi
  • Cara Memindahkan Apache ke Nginx dengan Menukar Virtualhosts ke ..
  • Menguasai Gelung Skrip Bash
  • Pasang mysql di Ubuntu 20.04 LTS Linux
  • Cara Memasang MySQL di Almalinux
  • Tutorial LFTP di Linux dengan contoh