Mematikan Akses Dengan IP Address pada Server Apache

Pemilik website kadang tidak ingin servernya dapat diakses langsung melalui IP Address. Selain karena alasan keamanan, hal ini juga kadang dipicu oleh alasan ekonomis dan teknis bahwa Sertifikat SSL dari Let’s Encrypt tidak di peruntukan untuk IP Address.

Artikel ini dibuat berdasarkan struktur konfigurasi default apache pada OS Debian. Ada 2 cara yang dapat dilakukan :

Redirect Dengan File .htaccess

Memanfaatkan rewrite pada .htaccess adalah cara yang paling mudah untuk dilakukan. Cukup buat sebuah file .htaccess di directory utama, kemudian tambahkan rule agar akses host yang mengandung ip address di redirect ke domain website tujuan. Contoh rule-nya seperti dibawah ini:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^12\.34\.56\.78$
RewriteRule ^(.*)$ http://www.domainname.com/$1 [L,R=301]

yang terpenting adalah baris ke 3 dan 4,
RewriteCond digunakan untuk mendefinisikan sebuah kondisi, pada contoh diatas kondisi dimana HTTP_HOST adalah 12.34.56.78

RewriteRule digunakan untuk mendefinisikan action rewrite. Karena rule ini ditulis pada file .htaccess, apache akan memberikan partial-path untuk dicocokan.
Bagian ^(.*)$ mengambil semuanya (partial-path) dari awal sampai akhir.
http://www.domainname.com/$1 adalah pattern hasil akhir daripada Rule tersebut, adapun tanda $1 diakhirnya akan diganti dengan partial-path yang telah dicocokan sebelum nya, misalnya diakses http://12.34.56.78/cantik.php hasil akhirnya menjadi http://www.domainname.com/cantik.php.

Parameter tambahan (Flag) ditulis dalam kurung siku [] dipisahkan dengan tanda koma, pada kasus diatas:
– L = Last Rule, apache tidak akan memproses rule selanjutnya bila ada
– R = Redirect, pada contoh diatas =301 akan mengirimkan http status code 301 yaitu Redirect Permanently, penjelasan kode redirect selengkapnya dapat dilihat di Wikipedia

Pastikan webserver anda mengizinkan untuk menggunakan .htaccess

Dengan Membuat VirtualHost Default

Membuat virtualhost adalah solusi yang lebih rumit daripada yang diatas, namun jika customer anda ingin agar muncul halaman Warning atau sebuah landing-page ketika websitenya diakses dengan menggunakan IP Address, maka cara ini bisa jadi solusi.

Login ke Server sebagai root, kemudian ikuti langkah langkah dibawah ini:

Masuk ke directory apache

cd /etc/apache2/sites-available

kemudian, buat Backup 000-default.conf

cp ./000-default.conf ./default.conf.bak

Buat sebuah VirtualHost, yaitu dengan meng-copy isi dari file 000-default.conf

cp ./000-default.conf ./domainname.com.conf

Kemudian tambahkan baris berikut ini pada file domainname.com.conf, didalam directive VirtualHost.

ServerName domainname.com
ServerAlias www.domainname.com

kemudian aktifkan virtualhost tersebut dengan perintah dibawah ini

a2ensite domainname.com

Jika tidak ada pesan error maka virtualhost telah berhasil diaktifkan, dan dapat dilanjutkan dengan me-restart apache

systemctl restart apache2

Modifikasi 000-default

000-default adalah file vhost default pada apache, virtualhost ini akan ditampilkan bila user mengakses server dengan alamat ip, atau mengakses dengan domain yang tidak terdaftar di server kita.

Dikarenakan akses dengan ip address adalah hal yang tidak diinginkan oleh si customer maka ada 2 hal yang dapat dilakukan pada file 000-default

Memblok Virtualhost
dengan menambahkan konfigurasi berikut didalam VirtualHost:

<Location />
   Require all denied
</Location>

Konfigurasi tersebut akan menampilkan pesan Forbidden yang terlihat agak “kotor”.

Menampilkan Halaman Khusus

Menampilkan halaman khusus yang di desain dengan baik membuat tampilan peringatan lebih rapi dan enak dilihat, tempatkan file tersebut di directory DocumentRoot.

Kadek Jayak
Seorang Web Developer di Denpasar Bali. Nulis blog hanya sekedar iseng dan berbagi pengalaman.
%d blogger menyukai ini: