Optimalisasi pengamanan web hosting yang berbasis Wordpress
Terdapat beberapa konsep yang penting untuk diperhatikan dalam mengoptimalkan pengamanan webhosting yang dipergunakan untuk website kantor yaitu :
- Jangan perbolehkan seluruh direktori atau seluruh file dapat ditulis oleh script (php, asp, perl, rb dsb), biasakan untuk menggunakan permission untuk menulis file yang seperlunya saja.
Misalkan direktori ./cache/ yang akan kita gunakan sebagai tempat penyimpanan file sementara. Maka hanya perbolehkan proses penulisan pada direktori itu saja, tidak pada direktori yang lain pada server hosting.
- Jangan perbolehkan server side script (php, asp, perl, rb, dsb) yang tidak dikenali dapat running/berjalan pada server hosting.
Misalkan file index.php hanya terdapat pada root direktori, kemudian tiba-tiba terdapat file index.php pada direktori ./assets/ yang merupakan file shellcode. Konfigurasi pengamanan file hosting seharusnya dapat melakukan blokir terhadap file index.php pada direktori ./assets/ tersebut.
Berdasarkan kosep tersebut kita dapat menggunakan fungsi .htaccess dan bantuan script berikut ini:
- Tambahkan file .htaccess pada root direktori web hosting, lalu paste code berikut ini pada file .htaccess tersebut :
#http to https <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule> # REWRITE ALL FAVICON <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !^/favicon\.png$ [NC] RewriteCond %{HTTP_HOST} (.+) RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/favicon.png [R=301,L,NC] </IfModule> <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # exclude all registered .php from rewriting. RewriteRule ^(wp-activate|wp-blog-header|wp-comments-post|wp-cron|wp-links-opml|wp-load|wp-login|wp-mail|wp-settings|wp-signup|wp-trackback|xmlrpc|upgrade|update|zeno|z3n0|SQLyogTunnel)\.php$ - [L] RewriteRule (wp-admin|plugins|mahkamahagung)\/(.*)\.php$ - [L] # exclude all .php in folder # rewrite all extension to 404 RewriteCond %{REQUEST_URI} !(wp-admin|plugins|mahkamahagung)\/(.*)\.php$ [NC] RewriteRule ^(.*)\.(html|htm|asp|txt|php)$ /404 [R,L] # rewrite any request to index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # BEGIN WordPress # The directives (lines) between "BEGIN WordPress" and "END WordPress" are # dynamically generated, and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress DirectoryIndex index.php <FilesMatch "\.html$"> Order Deny,Allow Deny from all Allow from 127.0.0.1 </FilesMatch> <FilesMatch "\.htm$"> Order Deny,Allow Deny from all Allow from 127.0.0.1 </FilesMatch> <FilesMatch "\.php$"> Order Allow,Deny Deny from all Allow from 127.0.0.1 </FilesMatch> <Files index.php> Order Allow,Deny Allow from all </Files> <FilesMatch "(dbtunneling|SQLyogTunnel|z3n0|zeno|wp-activate|wp-blog-header|wp-comments-post|wp-cron|wp-links-opml|wp-load|wp-login|wp-mail|wp-settings|wp-signup|wp-trackback|xmlrpc|upgrade|update)\.php$"> Order Allow,Deny Allow from all </FilesMatch> <If "%{REQUEST_URI} =~ m#^/(wp-admin|plugins|mahkamahagung)/.*\.(php)#"> Order Allow,Deny Allow from all </If>
- Buat 1 file zeno.php pada root direktori web hosting, lalu paste code berikut ini pada file zeno.php tersebut :
<?php exec("chmod -R 555 ./"); exec("chmod 755 zeno.php"); exec("chmod 755 .htaccess"); exec("chmod -R 755 .well-known"); exec("chmod -R 755 ./wp-content/uploads/"); exec("chmod -R 755 ./wp-content/themes/mahkamahagung/plugins/mari-jadwal-sidang/cache/"); exec("chmod -R 755 ./wp-content/themes/mahkamahagung/plugins/mari-jadwal-sidang-banding/cache/"); exec("chmod -R 755 ./wp-content/themes/mahkamahagung/plugins/mari-sippbanding/cache/"); exec("chmod -R 755 ./wp-content/themes/mahkamahagung/plugins/mari-sippma/cache/"); exec("chmod -R 755 ./wp-content/plugins/sipphealth/cache/"); exec("find . -name .htaccess | xargs chmod 444"); echo "done :)"; ?>
- Akses file zeno.php tersebut melalui browser untuk melakukan penerapan ownership file-file pada hosting. Misalkan pada alamat http://serverku.com/zeno.php
- Dengan diterapkan ny ownership terhadap file-file pada hosting, harapannya file dan direktori tidak mudah ditulis oleh pengguna dari luar maupun pemilik sehingga meminimalisir terjadinya peretasan.