Memanfaatkan Apache Password Authentication .htpasswd untuk Keamaan Server


Pada saat kita mengatur suatu proyek yang bersifat daring (online), terkadang kita membutuhkan suatu proteksi untuk melindunginya dari public, seperti membatasi akses hanya pada pengguna tertentu yang boleh masuk. Atau untuk alasan lainnya seperti tidak inginnya di crawel oleh mesin pencarian, karena proyek tersebut masih dalam tahap pengembangan (under development).

Dalam tutorial kali ini, kita akan membahas mengenai .htpasswd yang mana berfungsi melindungi suatu situs dengan memanfaatkan semacam Password Authentication yang diletakan pada direktori tertentu, seperti direktori admin web, atau direktori yang dianggap penting untuk dibatasi siapa-siapa saja yang boleh masuk.

Pemasangan Apache

Seperti yang telah kita ketahui bahwa perbedaan distro GNU/Linux, selain beda manejer paket, berbeda pula nama paket yang diberikan, saya hanya memberikan cara pada 3 distro yakni 1) Debian/Ubuntu; 2) Centos/Fedora/RHEL; 3) Arch Linux; berserta derivatifnya dari ketiga distro tersebut.

Adapun penamaan paket disetiap distro itu berbeda yakni, di Ubuntu/Debian dan derivatifnya kita memasang paket Apache dengan nama apache2; di Fedora/Centos/RHEL dan derivatifnya bernama httpd; sedangkan di Arch Linux bernama sesuai namanya yakni apache.

Pengguna Debian/Ubuntu

$ sudo apt-get install apache2 apache2-utils

Pengguna Centos/Fedora 21 ke bawah/RHEL

$ sudo yum install httpd

Fedora 21 ke atas

$ sudo dnf install httpd

Pengguna Arch Linux

$ sudo pacman -S apache

Pembuatan Berkas .htpasswod

$ sudo htpasswd -c /lokasi/yg/anda/inginkan/.htpasswd ali

Perlu diketahui bahwa /lokasi/yg/anda/inginkan/.htpasswd Anda bebas menaru di direktori manapun. Untuk opsi -c mengindetifikasikan bahwa untuk membuat berkas yang lebih spesifik, dalam contoh di atasa yakni ali.

Pengaturan Apache

Pengguna Debian/Ubuntu

$ sudo nano /etc/apache2/sites-available/000-default.conf

Centos/Fedora/RHEL

$ sudo vi /etc/httpd/conf/httpd.conf

Kemudian sunting berkas tersebut dan masukan seperti kode di bawah ini:

<Directory "/var/www/html">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /lokasi/yg/anda/inginkan/.htpasswd
    Require valid-user

    Options Indexes Includes FollowSymLinks MultiViews 
    AllowOverride All
    Require all granted
</Directory>

Kode di atas Khusus pengguna Apache versi 2.4 , jika Anda pengguna Apache versi di bawahnya (versi 2.2). Ganti pada kode require all granted menjadi seperti berikut:

<Directory /var/www/html> 
    Options Indexes Includes FollowSymLinks MultiViews 
    AllowOverride All
    allow,deny
    Allow from all 
</Directory>

Pembuatan .htaccess

Kemudian kita buat .htaccess

Pengguna Debian/Ubuntu

$ sudo nano /var/www/html/.htaccess

Pengguna Centos/Fedora/RHEL

$ sudo nano /var/www/html/.htaccess

Pengguna Arch Linux

$ sudo nano /srv/http/.htaccess

Dan isikan skrip di bawah ini:

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /lokasi/yg/anda/inginkan/.htpasswd
Require valid-user

Cek terlebih dahulu pengaturan Apache Anda, sudah betul atau belum?

$ sudo apache2ctl configtest

atau

$ sudo apachectl configtest

Jika sudah, langsung saja restart Apache-nya:

$ sudo service apache2 restart
$ sudo service httpd restart

Pengguna Systemd
$ sudo systemctl restart httpd

Hasilnya akan seperti berikut, contohnya pada situsali.com:

htpasswd