Anda di halaman 1dari 7

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/347436736

Implementasi ModSecurity sebagai Sistem Keamanan Web Server

Article · December 2020

CITATIONS READS

0 308

5 authors, including:

Aji Fauzi Pangestu Abdullah Hibar Gumilang


Siliwangi University Siliwangi University
5 PUBLICATIONS   1 CITATION    4 PUBLICATIONS   0 CITATIONS   

SEE PROFILE SEE PROFILE

Rifky Ramandika
Siliwangi University
4 PUBLICATIONS   0 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Web Application Firewall View project

All content following this page was uploaded by Aji Fauzi Pangestu on 17 December 2020.

The user has requested enhancement of the downloaded file.


Implementasi ModSecurity sebagai Sistem
Keamanan Web Server
Aji Fauzi Pangestu Abdullah Hibar Gumilang Rifky Ramandika
187006020 187006044 187006049
Program Studi Informatika Program Studi Informatika Program Studi Informatika
Universitas Siliwangi Universitas Siliwangi Universitas Siliwangi

Angga Sinjaya l Nur Fajar


187006054 187006102
Program Studi Informatika Program Studi Informatika
Universitas Siliwangi Universitas Siliwangi

I. PENDAHULUAN D. Nginx
Sekarang para pengguna internet sudak banyak, dari mulai Nginx adalah server HTTP yang bersifat open-source dan
anak kecil sampai dengan orang tua sudah banyak reverse proxy, serta IMAP/POP3 server proxy. Nginx dikenal
menggunakan internet dalam kehidupan nya. Baik untuk dengan kinerja tinggi, stabilitas, set fitur yang banyak,
media sosial ataupun pendidikan. Oleh karena itu terdapat konfigurasi yang sederhana, dan konsumsi sumber daya yang
peningkatan juga terhadap layanan web, dikarenakan banyak rendah. [3]
juga yang mencari informasi pada suatu halaman web. Maka
dari itu, suatu layanan web perlu dan harus melakukan E. SQL Injection
pengamanan terhadap web nya tersebut untuk menjaga privasi SQL Injection adalah teknik code injection yang
pengguna ataupun penyedia layanan tersebut. Dengan salah digunakan untuk menyerang aplikasi web tanpa penyaringan
satu cara nya adalah menggunakan WAF, jadi pada akhir nya atau metode perlindungan lainnya. Jenis serangan ini
jika ada suatu ancaman terhadap web, WAF bertindak memungkinkan penggunaan informasi database di server.
layaknya tembok yang menjadi penghalang jika ada user Efek yang ditimbulkan dari SQL Injection sangat
illegal yang mau bertindak jahat terhadap suatu website. Pada beragam, berikut adalah beberapa point bahaya dari serangan
WAF ini kita akan di block jika terdapat proses yang tidak tersebut:
layan untuk digunakan, seperti halnya penggunaan script pada a. SQL Injection memungkinkan seseorang dapat login
form yang seharusnya di isi dengan biodata. Inti nya WAF ini (masuk) kedalam sebuah sistem tanpa harus memiliki
mengatasi berbagai serangan yang menuju server. account. Hal ini berlaku baik user biasa maupun admin.
II. LANDASAN TEORI b. Dengan SQL Injection pula seseorang bisa menyusup
kedalam sebuah basis data sehingga dia dapat merubah,
A. Web Application Firewall (WAF) menghapus, atau bahkan menambah data yang terdapat
Web Application Firewall adalah suatu proses untuk dalam basis data tersebut.
mengamankan suatu web. Proses ini berupa suatu mekanisme c. Bahkan yang lebih dari sekedar mengubah basis data,
yang bekerja untuk mencegah akses dan modifikasi oleh user sang pelaku bisa menanamkan akun yang tidak
yang tidak dikenal, terhadap data-data dari web yang diketahui. Sehingga apabila sistemnya telah diperbaiki
tersimpan secara online.[1] tapi sang pelaku masih memiliki cadangan akun untuk
B. ModSecurity login tanpa harus melakukan SQL Injection lagi.
d. Selain itu, pelaku juga bisa menjual data-data pribadi
ModSecurity adalah modul Web Application Firewall yang dimiliki oleh customer pada website e-commerce
(WAF) yang bersifat opensource dan cross-platform. Mod
seperti nomer rekening dan lain-lain. [4]
Security dapat menyaring data yang masuk dan keluar untuk
menghentikan lalu lintas yang berbahaya. Selain itu juga, F. Cross-Site Scripting (XSS)
ModSecurity dapat menganalisis dan mendeteksi lalu lintas XSS attack adalah jenis kerentanan yang ditemukan di
yang berbahaya. Semua rincian lalu lintas berbahaya dicatat aplikasi web. Serangan XSS beroperasi pada application
dalam file log dan pesan peringatan yang dikirimkan ke
layer. Serangan XSS sangat umum terjadi, penyerang dapat
administrator. ModSecurity mendefinisikan aturan mengenai
data HTTP yang di mana aturan tersebut akan memiliki akses dengan mudah mengetahui aplikasi web yang rentan.
ke informasi HTTP header secara penuh. [1] Serangan Cross-Site Scripting adalah serangan yang
dilakukan oleh hacker untuk menyuntikkan script berbahaya
C. Web Server biasanya pada script sisi klien dari luar lingkungan aplikasi
Web server adalah sebuah software yang memberikan web. [1]
layanan berbasis data dan berfungsi menerima permintaan G. Exploiting Unrestricted File Upload
dari HTTP atau HTTPS pada klien untuk mengirimkan
kembali yang hasilnya dalam bentuk beberapa halaman web Merupakan salah satu masalah utama dalam aplikasi
dan pada umumnya akan berbentuk dokumen HTML. [2] berbasis web. Di banyak server web, kerentanan ini
bergantung sepenuhnya pada tujuan, yang memungkinkan
penyerang mengunggah file dengan kode berbahaya di
dalamnya, sehingga dapat dieksekusi di server. [5]
H. HTTP Flooding make

HTTP Flooding adalah jenis serangan Distributed Denial make install


of Service (DDoS) di mana penyerang memanipulasi LibModsecurity telah di instal pada sistem. Sekarang
permintaan HTTP dan POST yang tidak diinginkan untuk saatnya menginstal Nginx dengan dukungan LibModsecurity.
menyerang server web atau aplikasi. Serangan ini sering kali
menggunakan komputer yang saling berhubungan yang telah Download konektor ModSecurity-nginx dari repositori Git
diambil alih dengan bantuan malware seperti Trojan Horses dengan perintah berikut:
. Alih-alih menggunakan paket yang salah format, spoofing cd /opt
dan teknik refleksi. [4] git clone
https://github.com/SpiderLabs/ModSecurity-nginx.git
III. HASIL DAN PENGUJIAN
Berikutnya download versi terbaru atau stable dari Nginx
Untuk mengatasi masalah keamanan pada Web Server dengan perintah berikut:
salah satunya bisa diatasi dengan memasang Web Application
Firewal pada suatu Web Server. Mekanisme pengamanan wget http://nginx.org/download/nginx-1.18.0.tar.gz
Server dengan menggunakan WAF dapat dilihat pada ilustrasi Ekstrak file yang diunduh menggunakan perintah berikut:
berikut.
tar -xvzf nginx-1.18.0.tar.gz

Masuk ke direktori Nginx dan konfigurasikan dengan


perintah berikut:
cd nginx-1.18.0
./configure --user=nginx --group=nginx --with-pcre-
jit --with-debug --with-http_ssl_module --with-
http_realip_module --add-module=/opt/ModSecurity-
nginx

Selanjutnya Install Nginx dengan perintah berikut :


make
Gambar 1. Skema Web Application Firewall
make install
Semua request HTTP yang ditujukan ke Server akan
melewati Web Application Firewall, request yang diteruskan Pada tahap ini, Nginx telah diinstal dengan dukungan
ke Server hanya request yang dianggap tidak membahayakan LibModsecurity. Salin file konfigurasi sampel ModSecurity
Server atau bisa disebut dengan normal requests. Sedangkan pada direktori source ModSecurity ke direktori Nginx.
request yang berpotensi sebagai serangan tidak diteruskan ke cp/opt/ModSecurity/modsecurity.conf-recommended
server melainkan di block dan dicatat pada log. /usr/local/nginx/conf/modsecurity.conf

A. Install Web Server NGINX dan ModSecurity cp/opt/ModSecurity/unicode.mappin


/usr/local/nginx/conf/
Langkah pertama, install semua dependensi yang
diperlukan dengan perintah berikut : Buat symbolic link dari Nginx binary ke /usr/sbin/ dengan
apt install flex bison autoconf automake git curl
perintah berikut:
make libtool wget openssl nano build-essential ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
libcurl4-openssl-dev libssl-dev libgeoip-dev
liblmdb-dev libpcre3-dev libpcre++-dev libxml2-dev Selanjutnya, buat direktori Nginx log, direktori ini
libyajl-dev pkgconf zlib1g-dev daemon libxslt1-dev berfungsi untuk mencatat semua akses maupun error yang ada
libgd-dev
pada Nginx, untuk membuat direktori Nginx log jalankan
Berikutnya download source LibModsecurity dan perintah berikut:
mengompilasinya pada sistem. mkdir /var/log/nginx
cd /opt/
Selanjutnya, buka file konfigurasi Nginx dengan perintah
git clone --depth 1 -b v3/master --single-branch berikut:
https://github.com/SpiderLabs/ModSecurity
nano /usr/local/nginx/conf/nginx.conf
Masuk ke direktori ModSecurity dan download kode
libInjection dengan perintah berikut: Edit sehingga jika secara keseluruhan akan nampak seperti
dibawah ini.
cd ModSecurity
user nginx;
git submodule init worker_processes 1;
git submodule update pid /run/nginx.pid;
events {
Konfigurasikan LibModsecurity menggunakan perintah worker_connections 1024;
}
berikut:
./build.sh
http {
./configure include mime.types;
default_type application/octet-stream;
Terakhir, compile dan install LibModSecurity dengan sendfile on;
perintah berikut: keepalive_timeout 65;
server {
listen 80; git clone https://github.com/SpiderLabs/owasp-
server_name 192.168.100.100; modsecurity-crs.git /usr/local/nginx/conf/owasp-crs
modsecurity on;
modsecurity_rules_file Setelah file di download, ganti nama file konfigurasi crs-
/usr/local/nginx/conf/modsecurity.conf; setup.conf.example menjadi crs-setup.conf dengan
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log; perintah berikut.
location / { mv /usr/local/nginx/conf/owasp-crs/crs-
root html; setup.conf.example /usr/local/nginx/conf/owasp-
index index.html index.htm; crs/crs-setup.conf
}
error_page 500 502 503 504 /50x.html; Konfigurasikan ModSecurity untuk menggunakan Rule
location = /50x.html {
root html;
OWASP CRS dengan mengedit file
} /usr/local/nginx/conf/modsecurity.conf.
}
} Kemudian tambahkan konfigurasi berikut. Lalu Simpan
Simpan konfigurasi. Kemudian, periksa konfigurasi Nginx konfigurasi.
dengan perintah berikut: Include owasp-crs/crs-setup.conf
nginx -t Include owasp-crs/rules/*.conf
Jika output terlihat seperti dibawah ini berarti Nginx Terakhir restart layanan Nginx agar konfigurasi
berhasil terkonfigurasi dengan benar. diterapkan.
nginx: the configuration file systemctl restart nginx
/usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file B. Pengujian Keamanan
/usr/local/nginx/conf/nginx.conf test is successful
Untuk pengujian terbagi menjadi dua tahapan, yaitu
Buat file systemd untuk mengelola layanan Nginx. Anda pengujian sebelum terpasang Web Application Firewall, dan
dapat membuatnya dengan perintah berikut: sesudah terpasang Web Application Firewall.
nano /etc/systemd/system/nginx.service Berikut ini beberapa metode serangan yang dilakukan
Tambahkan konfigurasi berikut, lalu Simpan. pada pengujian keamanan web.
[Unit] 1. SQL Injection
Description=A high performance web server and a
reverse proxy server Berikut ini merupakan pengujian serangan SQL
Documentation=man:nginx(8) Injection terhadap aplikasi web.
After=syslog.target network.target remote-fs.target
nss-lookup.target a. Login dengan memasukkan Query SQL dalam
[Service]
kondisi tidak mengetahui Username dan Password.
Type=forking Memasukan Query pada form input username
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Berikutnya jalankan perintah berikut untuk restart


daemon, memulai layanan Nginx serta autorun pada saat Gambar 2. Pengujian tidak mengetahui username dan password
sistem hidup.
systemctl daemon-reload
1) Kondisi WAF sebelum terpasang
systemctl start nginx
Berhasil masuk sebagai Administrator.
systemctl enable --now nginx

Pada tahap ini Nginx sudah aktif. Berikutnya


konfigurasikan ModSecurity, jalankan perintah berikut.
nano /usr/local/nginx/conf/modsecurity.conf

Lalu ubah beberapa konfigurasi, sehingga seperti dibawah


ini.
Gambar 3. Hasil Pengujian SQL Injection
SecRuleEngine On
/var/log/nginx/modsec_audit.log
SecResponseBodyAccess On

Download versi terbaru ModSecurity Core Rule Set dari


repositori Git.
2) Kondisi WAF sudah terpasang 1) Kondisi WAF sebelum terpasang
Di block oleh Web Application Firewall. Parameter profile dinyatakan vulnerable, hasil
scanning tersebut attacker bisa mencuri data pada
database yang tersedia.

Gambar 4. Hasil Pengujian SQL Injection

b. Login dengan memasukkan Query SQL dalam kondisi


sudah mengetahui Username.

Gambar 9. Database berhasil didapatkan

2) Kondisi WAF sudah terpasang


Parameter profile menjadi terbaca not injectable,
padahal sebelum terpasang WAF dinyatakan
vulnerable.
Gambar 5. Pengujian sudah mengetahui username

1) Kondisi WAF sebelum terpasang


Berhasil masuk sebagai User.
Gambar 10. Hasil Pengujian SQL Injection

Setelah menginputkan pada form login, server


mendekteksi adanya serangan, sehingga permintaan
tersebut di block.

Gambar 6. Hasil pengujian SQL Injection

2) Kondisi WAF sudah terpasang


Masih bisa masuk walaupun tidak mengetahui
password.
Gambar 11. Permintaan ditolak sehingga muncul status code 403

Pada log server, terdeteksi adanya serangan SQL


Injection.

Gambar 7. Hasil pengujian SQL Injection

Gambar 12. Terdeteksi adanya serangan SQL Injection


c. Scanning menggunakan parameter untuk penelusuran
Database.
2. Cross-Site Scripting (XSS)
Berikut ini merupakan pengujian dengan teknik
serangan Cross-Site Scripting (XSS).
Gambar 8. URL Target a. Stored XSS
Serangan ini berpengaruh pada Server, script yang di
inputkan melalui form oleh attacker akan tersimpan pada
database server. Maka di sisi client maupun server ketika
membuka data yang mengandung script tersebut akan
terkena dampaknya.
1) Kondisi WAF sebelum terpasang Stored XSS Alert :
Defacement :

Gambar 18. Stored XSS Alert ditolak

Serangan jenis Stored XSS tidak dapat dilakukan,


karena script yang dikirimkan di block oleh Web
Application Firewall. Pada log server juga terdeteksi
Gambar 13. Stored XSS Defacement adanya serangan XSS.

Session Hijacking :

Gambar 19. Serangan XSS terdeteksi


Gambar 14. PHPSESSID Korban

3. Unrestricted File Upload


Stored XSS Alert :
Berikut ini merupakan pengujian dengan cara
eksploitasi form upload pada suatu web.
a. Upload file selain jenis gambar pada form upload
foto
Pada form upload target tidak ada keamanan sama
sekali, valdasi seperti ekstensi, filesize juga tidak ada.
1) Kondisi WAF sebelum terpasang
Attacker berhasil upload file yang berbahaya
Gambar 15. Stored XSS Alert

2) Kondisi WAF sudah terpasang


Defacement :

Gambar 20. Berhasil mengakses file Backdoor Web Shell

2) Kondisi WAF sudah terpasang


Attacker tidak bisa mengupload file yang berbahaya,
karena pada saat pengiriman file di block oleh WAF.
Gambar 16. Defacement ditolak

Session Hijacking :

Gambar 21. Gagal upload file Backdoor Web Shell

Gambar 17. Session Hijacking ditolak


Dilihat pada log server, WAF mendeteksi adanya
serangan jenis Application Attack PHP karena file yang di Dilihat pada log server, WAF mendeteksi adanya serangan
upload berekstensi .php dan didalamnya mengandung dan berhasil menyangkalnya.
program yang berbahaya, untuk lebih jelasnya
perhatikkan gambar berikut.

Gambar 25. WAF mendeteksi serangan HTTP Flooding

Gambar 22. WAF mendeteksi serangan file upload


IV. KESIMPULAN
Web Application Firewall adalah suatu mekanisme
4. HTTP Flooding untuk mengamankan suatu web, WAF bertindak layaknya
tembok yang menjadi penghalang jika ada user illegal yang
Berikut ini pengujian dengan serangan HTTP bertindak jahat terhadap suatu website. WAF dapat
Flooding yang merupakan jenis serangan DDoS. menghentikan serangan seperti SQL Injection, Cross-Site
a. Mengirim banyak sekali requests ke Server. Scripting, Exploiting File Upload, HTTP Flooding.
1) Kondisi WAF sebelum terpasang Sebenarnya attacker bisa memanipulasi segala data yang
di kirim ke Server, sehingga WAF tidak dapat mendeteksi
adanya permintaan yang berbahaya. Untuk meningkatkan
Pengguna tidak dapat mengakses halaman web. keamanan, bisa menambahkan rule pada WAF.

REFERENSI
[1] R. Nurachmad Syaefuddin, “Implementasi Web
Application Firewall pada Web Mytra Dashboard
dengan Menggunakan Modul ModSecurity,” Tek.
Inform. dan Komput. Politek. Negeri Jakarta, no.
Gambar 23. Pengguna gagal mengakses halaman web April, 2018, doi: 10.13140/RG.2.2.15824.00006.
[2] A. Rahmatulloh and F. MSN, “Implementasi Load
Balancing Web Server menggunakan Haproxy dan
2) Kondisi WAF sudah terpasang Sinkronisasi File pada Sistem Informasi Akademik
Pengguna bisa mengakses halaman web. Universitas Siliwangi,” J. Nas. Teknol. dan Sist. Inf.,
vol. 3, no. 2, pp. 241–248, 2017, doi:
10.25077/teknosi.v3i2.2017.241-248.
[3] A. F. Pangestu and N. Fajar, “Implementasi Load
Balancing dengan Algoritma Weighted Round Robin
menggunakan NGINX,” no. December, 2020.
[4] A. Rahmatulloh, Keamanan Source Code PHP
Menggunakan Teknik Obfuscation. 2020.
[5] J. Huang, Y. Li, J. Zhang, and R. Dai, “UChecker:
Automatically detecting php-based unrestricted file
upload vulnerabilities,” in 2019 49th Annual
IEEE/IFIP International Conference on Dependable
Systems and Networks (DSN), 2019, pp. 581–592.

Gambar 24. Pengguna bisa mengakses halaman web.

View publication stats

Anda mungkin juga menyukai