GNU/Linux >> Belajar Linux >  >> Linux

Cara melindungi situs web dengan kata sandi melalui .htaccess

SKILL LEVEL: SYSADMIN/ADVANCED - TIME: 5-10 MINS

Pengantar

Dalam tutorial ini kami akan menunjukkan kepada Anda cara melindungi situs web, atau hanya folder di dalam situs, dengan melindunginya dengan kata sandi. Kami akan menggunakan server web paling populer, Apache2 untuk contoh ini, namun metode serupa dapat dilakukan dengan server web lain.

Metode yang akan kami gunakan adalah sistem otentikasi dasar, namun mudah diatur dan memungkinkan Anda mengamankan situs web Anda dengan cepat dari orang lain di internet yang sangat buruk. Metode ini bergantung pada Anda membuat nama pengguna dan kombinasi kata sandi untuk situs Anda. Anda dapat menambahkan nama pengguna sebanyak yang Anda suka, tetapi ingat bahwa Anda harus menjaga setiap kata sandi.

Prasyarat

Untuk contoh ini, kami menggunakan edisi server Ubuntu 16.04. Ini juga akan bekerja pada Ubuntu 14.04, dan hampir semua distribusi Linux lainnya, mengingat Anda menggunakan server web Apache 2.

Di Ubuntu, Anda masuk sebagai pengguna standar, dan menggunakan Sudo untuk mengeluarkan perintah root (hak istimewa/pengguna super). Jika Anda memiliki login root di server Anda, Anda dapat menggunakan ini sebagai gantinya. Anda tidak perlu menggunakan sudo, namun disarankan untuk semua administrasi server yang aman dan terjamin, bahwa Anda melakukan tindakan dengan sudo, dan bekerja sebagai pengguna normal (non-root) untuk menjalankan tugas administratif.

Instal Paket Utilitas Apache

Untuk membuat file yang akan menyimpan kata sandi yang diperlukan untuk mengakses konten terbatas kami, kami akan menggunakan utilitas bernama htpasswd , yang merupakan bagian dari paket Apache2-utils. Untuk menginstal apache2-utils, jalankan perintah berikut:

  • sudo apt-get update
  • sudo apt-get install apache2-utils

Di atas mengasumsikan bahwa Anda sudah menginstal Apache2 (sudo apt-get install apache2, jika belum).

Buat File Kata Sandi

Kami sekarang memiliki akses ke htpasswd memerintah. Kita dapat menggunakan ini untuk membuat file kata sandi yang dapat digunakan Apache untuk mengautentikasi pengguna. Kami akan membuat file tersembunyi untuk tujuan ini yang disebut .htpasswd dalam /etc/apache2 direktori konfigurasi. Perhatikan bahwa file yang diawali dengan titik (.) secara otomatis disembunyikan dari daftar direktori standar (misalnya, mereka tidak ditampilkan dengan perintah ls). Jika Anda ingin menampilkannya, gunakan ls -la (daftar panjang, semua file).

Pertama kali kita menggunakan utilitas ini, kita perlu menambahkan -c pilihan untuk membuat file yang ditentukan. Kami menentukan nama pengguna (sammy dalam contoh ini) di akhir perintah untuk membuat entri baru di dalam file:

  • sudo htpasswd -c /etc/apache2/.htpasswd sammy

Anda akan diminta untuk memberikan dan mengonfirmasi kata sandi untuk pengguna.

Tinggalkan -c argumen untuk setiap pengguna tambahan yang ingin Anda tambahkan:

  • sudo htpasswd /etc/apache2/.htpasswd another_user

Jika kita melihat isi file, kita dapat melihat username dan password terenkripsi untuk setiap record:

  • cat /etc/apache2/.htpasswd
Keluaran
sammy:$apr1$lzxsIfXG$tmCvCfb49vpPFwKGVsuYz.
another_user:$apr1$p1E9MeAf$kiAhneUwr.MhAE2kKGYHK.

Konfigurasikan Otentikasi Kata Sandi Apache

Sekarang kita memiliki file dengan pengguna dan kata sandi dalam format yang dapat dibaca Apache, kita perlu mengonfigurasi Apache untuk memeriksa file ini sebelum menyajikan konten yang dilindungi. Kita dapat melakukannya dengan dua cara berbeda.

Opsi pertama adalah mengedit konfigurasi Apache dan menambahkan perlindungan kata sandi kami ke file host virtual. Ini umumnya akan memberikan kinerja yang lebih baik karena menghindari biaya membaca file konfigurasi terdistribusi. Jika Anda memiliki opsi ini, metode ini disarankan.

Jika Anda tidak memiliki kemampuan untuk mengubah file host virtual (atau jika Anda sudah menggunakan file .htaccess files for other purposes), you can restrict access using an  .htaccessfile. Apache uses .htaccess` untuk memungkinkan item konfigurasi tertentu diatur dalam file di direktori konten. Kerugiannya adalah Apache harus membaca ulang file-file ini pada setiap permintaan yang melibatkan direktori, yang dapat memengaruhi kinerja.

Pilih opsi yang paling sesuai dengan kebutuhan Anda di bawah ini.

Mengonfigurasi Kontrol Akses dalam Definisi Virtual Host

Mulailah dengan membuka file host virtual yang ingin Anda tambahkan batasannya. Untuk contoh kita, kita akan menggunakan 000-default.conf file yang menyimpan host virtual default yang diinstal melalui paket apache Ubuntu:

  • sudo nano /etc/apache2/sites-enabled/000-default.conf

Di dalam, dengan komentar yang dihapus, file akan terlihat seperti ini:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Otentikasi dilakukan pada basis per-direktori. Untuk menyiapkan autentikasi, Anda harus menargetkan direktori yang ingin Anda batasi dengan <Directory ___> memblokir. Dalam contoh kami, kami akan membatasi seluruh akar dokumen, tetapi Anda dapat mengubah daftar ini untuk hanya menargetkan direktori tertentu dalam ruang web:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/var/www/html">
    </Directory>
</VirtualHost>

Di dalam blok direktori ini, tentukan bahwa kita ingin mengatur Basic autentikasi. Untuk AuthName , pilih nama ranah yang akan ditampilkan kepada pengguna saat meminta kredensial. Gunakan AuthUserFile direktif untuk mengarahkan Apache ke file kata sandi yang kami buat. Terakhir, kita akan membutuhkan valid-user untuk mengakses sumber ini, yang berarti siapa pun yang dapat memverifikasi identitas mereka dengan kata sandi akan diizinkan masuk:

/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/var/www/html">
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>
</VirtualHost>

Simpan dan tutup file setelah Anda selesai. Mulai ulang Apache untuk menerapkan kebijakan kata sandi Anda:

  • sudo service apache2 restart

Direktori yang Anda tentukan sekarang harus dilindungi kata sandi.

Mengonfigurasi Kontrol Akses dengan File .htaccess

Jika Anda ingin mengatur perlindungan kata sandi menggunakan .htaccess sebagai gantinya, Anda harus mulai dengan mengedit file konfigurasi Apache utama untuk mengizinkan .htaccess file:

  • sudo nano /etc/apache2/apache2.conf

Temukan <Directory> blok untuk /var/www direktori yang menyimpan root dokumen. Aktifkan .htaccess pemrosesan dengan mengubah AllowOverride arahan dalam blok itu dari “Tidak Ada” ke “Semua”:

/etc/apache2/apache2.conf
. . .

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

. . .

Simpan dan tutup file setelah Anda selesai.

Selanjutnya, kita perlu menambahkan .htaccess file ke direktori yang ingin kita batasi. Dalam demonstrasi kami, kami akan membatasi seluruh root dokumen (seluruh situs web) yang berbasis di /var/www/html , tetapi Anda dapat menempatkan file ini di direktori mana pun yang ingin Anda batasi aksesnya ke:

  • sudo nano /var/www/html/.htaccess>

Di dalam file ini, tentukan bahwa kami ingin menyiapkan Basic autentikasi. Untuk AuthName , pilih nama ranah yang akan ditampilkan kepada pengguna saat meminta kredensial. Gunakan AuthUserFile direktif untuk mengarahkan Apache ke file kata sandi yang kami buat. Terakhir, kita akan membutuhkan valid-user untuk mengakses sumber ini, yang berarti siapa pun yang dapat memverifikasi identitas mereka dengan kata sandi akan diizinkan masuk:

/var/www/html/.htaccess
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Simpan dan tutup file. Mulai ulang server web untuk melindungi sandi semua konten di dalam atau di bawah direktori dengan .htaccess berkas:

  • sudo service Apache2 restart

Konfirmasi Otentikasi Kata Sandi

Untuk mengonfirmasi bahwa konten Anda dilindungi, coba akses konten terbatas Anda di browser web. Anda akan disajikan dengan nama pengguna dan kata sandi Prompt yang terlihat seperti ini:

Jika Anda memasukkan kredensial yang benar, Anda akan diizinkan untuk mengakses konten. Jika Anda memasukkan kredensial yang salah atau menekan "Batal", Anda akan melihat halaman kesalahan "Tidak Sah":

Kesimpulan

Anda sekarang harus memiliki semua yang Anda butuhkan untuk mengatur otentikasi dasar untuk situs Anda. Semua perlindungan kata sandi harus digabungkan dengan enkripsi SSL sehingga kredensial Anda tidak dikirim ke server dalam bentuk teks biasa.

Terima kasih kepada orang-orang di digitalocean.com untuk beberapa konten di halaman ini. Pastikan untuk memeriksanya, mereka memiliki layanan hosting web luar biasa yang sesuai dengan setiap anggaran!


Linux
  1. Pengalihan situs web sederhana melalui .htaccess

  2. Bagaimana cara mengaktifkan ExecCGI melalui file .htaccess?

  3. Bagaimana cara mengaktifkan ExecCGI melalui file .htaccess?

  1. Cara melindungi direktori dengan kata sandi melalui cPanel

  2. Bagaimana cara melindungi folder situs web dengan kata sandi?

  3. Bagaimana cara melindungi kata sandi file .tgz dengan tar di Unix?

  1. Cara crack password zip di Kali Linux

  2. Cara Melindungi Direktori Dengan Kata Sandi Di cPanel

  3. Bagaimana Mengedit File .htaccess melalui Filemanager cPanel?