# Analisa Web Application Attack dengan Menggunakan ModSecurity dan Wazuh

<figure><img src="https://nos.wjv-1.neo.id/cdn.medusa.my.id/ModSecurity.png" alt=""><figcaption></figcaption></figure>

## Introduction

### WAF

[**WAF**](https://owasp.org/www-community/Web_Application_Firewall) adalah singkatan dari Web Application Firewall. WAF adalah suatu bentuk keamanan informasi yang digunakan untuk melindungi aplikasi berbasis website dari serangan yang ditujukan secara khusus pada aplikasi tersebut. WAF bekerja dengan memonitor, memfilter dan memblokir traffic yang menggunakan protokol HTTP.

Fungsi utama dari WAF adalah mencegah serangan terhadap aplikasi berbasis website dengan mendeteksi dan memblokir potensi ancaman keamanan seperti jenis serangan [**SQL Injection**](https://owasp.org/www-community/attacks/SQL_Injection), [**Cross-Site Scripting (XSS)**](https://owasp.org/www-community/attacks/xss), [**Cross-Site Request Forgery (CSRF)**](https://owasp.org/www-community/attacks/csrf) dan berbagai jenis serangan website lainnya.

WAF dapat dikonfigurasi untuk mengidentifikasi pola serangan yang umum dan beberapa solusi WAF bahkan dapat belajar dari pola traffic normal untuk mendeteksi anomali yang mungkin menunjukkan serangan. Penggunaan WAF sangat penting dalam memperkuat lapisan keamanan aplikasi website dan melindungi data sensitif yang dapat dieksploitasi dari serangan siber.

### Apache

[**Apache**](https://httpd.apache.org) dapat merujuk pada beberapa hal tergantung pada konteksnya, namun yang paling umum adalah:

1. **Apache HTTP Server**: Ini adalah Web Server dengan lisensi Open Source yang sangat populer digunakan, juga dikenal sebagai Apache, server ini digunakan untuk menyajikan konten website. Apache HTTP Server mendukung berbagai modul dan dapat dikonfigurasi untuk berbagai keperluan, membuatnya menjadi pilihan yang umum digunakan untuk hosting dari konten website.
2. **Apache Software Foundation (ASF)**: Ini adalah organisasi nirlaba yang mendukung berbagai proyek perangkat lunak Open Source, termasuk Apache HTTP Server. ASF menyediakan tempat untuk pengembangan, kolaborasi dan dukungan untuk proyek-proyek perangkat lunak Open Source.
3. **Apache Hadoop**: Apache juga merujuk pada proyek perangkat lunak Apache Hadoop yang merupakan kerangka kerja untuk pemrosesan dan penyimpanan big data yang terdistribusi. Hadoop menyediakan cara untuk menyimpan, mengelola dan menganalisis data di environment yang terdistribusi.
4. **Apache Spark**: Ini adalah kerangka kerja pengolahan data yang cepat dan umumnya digunakan untuk analisis big data dan komputasi terdistribusi.

### ModSecurity

[**ModSecurity**](https://www.modsecurity.org) adalah modul keamanan untuk Web Server yang berfungsi sebagai Web Application Firewall (WAF). ModSecurity dirancang untuk melindungi aplikasi website dari berbagai serangan siber terutama pada aplikasi berbasis website seperti jenis serangan SQL Injection, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF) dan berbagai jenis serangan website lainnya.

Dan berikut ini adalah beberapa fitur dan fungsionalitas ModSecurity, antara lain:

1. **Pendeteksian dan Blok Serangan**: ModSecurity dapat menganalisa traffic dengan protokol HTTP yang masuk ke aplikasi website, mendeteksi pola-pola yang mencurigakan atau karakteristik serangan dan memblokir akses jika ditemukan serangan yang potensial.
2. **Logging dan Pelacakan**: ModSecurity mencatat kejadian keamanan dalam log, memberikan informasi yang berharga tentang jenis serangan yang mencoba dilakukan dan pola serangan yang mungkin berkembang.
3. **Konfigurasi Fleksibel**: ModSecurity dapat dikonfigurasi untuk memenuhi kebutuhan spesifik aplikasi website. Administrator dapat menyesuaikan aturan dan konfigurasi untuk menanggapi environment keamanan yang berubah atau kebutuhan aplikasi yang unik.
4. **Pemantauan Traffic Website**: ModSecurity dapat digunakan untuk memantau dan menganalisa traffic website tanpa memblokirnya secara otomatis. Ini memungkinkan administrator untuk memahami tren dari traffic, mendeteksi potensi ancaman dan melakukan tindakan korektif jika diperlukan.

ModSecurity sering digunakan bersama dengan Web Server seperti Apache, tetapi juga dapat diintegrasikan dengan Web Server lainnya. Sebagai tambahan, banyak distribusi Web Server dan platform hosting menyertakan atau mendukung ModSecurity sebagai bagian dari solusi keamanan yang mereka tawarkan, bahkan ModSecurity juga dapat diintegrasikan dengan platform SIEM seperti Wazuh.

## Configuration

### Install Paket Software Apache

Sebelum melakukan konfigurasi modul ModSecurity pada Apache, kita perlu melakukan instalasi paket software Apache dan berikut perintahnya:

{% code overflow="wrap" lineNumbers="true" %}

```bash
apt-get install apache2
```

{% endcode %}

### Mengaktifkan Service Apache

Setelah paket software Apache sudah berhasil ter-install, selanjutnya kita perlu melakukan verifikasi dengan mengecek status dari service Apache, jika service belum running maka kita perlu start dan enable service terlebih dahulu:

{% code overflow="wrap" lineNumbers="true" %}

```bash
systemctl enable apache2
systemctl start apache2
systemctl status apache2
```

{% endcode %}

{% hint style="success" %}
{% code title="Output" %}

```bash
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2023-11-28 10:53:55 WIB; 11h ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 876538 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 876542 (apache2)
      Tasks: 55 (limit: 4645)
     Memory: 35.8M
        CPU: 4.073s
     CGroup: /system.slice/apache2.service
             ├─876542 /usr/sbin/apache2 -k start
             ├─876543 /usr/sbin/apache2 -k start
             └─876544 /usr/sbin/apache2 -k start

Nov 28 10:53:53 neolite.cve.my.id systemd[1]: Starting The Apache HTTP Server...
Nov 28 10:53:55 neolite.cve.my.id systemd[1]: Started The Apache HTTP Server.

```

{% endcode %}
{% endhint %}

### Install Modul ModSecurity

Selanjutnya setelah paket software Apache sudah ter-intsall dan service-nya sudah running, kita perlu melakukan instalasi modul ModSecurity dengan nama [**`libapache2-mod-security2`**](https://launchpad.net/ubuntu/jammy/+package/libapache2-mod-security2) dan berikut perintahnya:

{% code overflow="wrap" lineNumbers="true" %}

```bash
apt-get install libapache2-mod-security2
```

{% endcode %}

### Mengaktifkan Modul ModSecurity

Kemudian kita perlu mengaktifkan modul ModSecurity pada Apache dan berikut perintahnya:

{% code overflow="wrap" lineNumbers="true" %}

```bash
a2enmod security2
systemctl restart apache2
```

{% endcode %}

### Konfigurasi Modul ModSecurity

Kemudian kita perlu melakukan konfigurasi pada modul ModSecurity, lakukan perubahan pada file **`/var/ossec/etc/ossec.conf`** dan cari baris konfigurasi **`SecRuleEngine DetectionOnly`**  ubah menjadi **`SecRuleEngine On`**, setelah selesai melakukan konfigurasi pada modul ModSecurity simpan perubahan dan lakukan restart service Apache.

{% code overflow="wrap" lineNumbers="true" %}

```bash
cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
vi /etc/modsecurity/modsecurity.conf
```

{% endcode %}

{% hint style="warning" %}
{% code title="/etc/modsecurity/modsecurity.conf" %}

```markdown
# -- Rule engine initialization ----------------------------------------------
# Enable ModSecurity, attaching it to every transaction. Use detection
# only to start with, because that minimizes the chances of post-installation
# disruption.
SecRuleEngine On
```

{% endcode %}
{% endhint %}

### Restart Service Apache

Selanjutnya lakukan restart service pada Apache setelah melakukan konfigurasi modul ModSecurity dan lihat apakah service-nya telah running dengan normal:

{% code overflow="wrap" lineNumbers="true" %}

```bash
systemctl restart apache2
systemctl status apache2
```

{% endcode %}

### Integrasi ModSecurity di Wazuh Agent

Kemudian kita perlu melakukan konfigurasi pada Wazuh Agent untuk meneruskan log dari ModSecurity yang tersimpan di **`/var/log/apache2/error.log`** ke Wazuh Manager, lakukan perubahan pada file **`/var/ossec/etc/ossec.conf`**, setelah itu cari bagian **`<ossec_config>`** dan masukan konfigurasi berikut:

{% hint style="warning" %}
{% code title="/var/ossec/etc/ossec.conf" %}

```markdown
<localfile>
 <log_format>apache</log_format>
 <location>/var/log/apache2/error.log</location>
</localfile>
```

{% endcode %}
{% endhint %}

### Restart Service Wazuh Agent

Selanjutnya lakukan restart service pada Wazuh Agent dan lihat apakah service-nya telah running dengan normal:

{% code overflow="wrap" lineNumbers="true" %}

```bash
systemctl restart wazuh-agent
systemctl status wazuh-agent
```

{% endcode %}

## Testing

### Melakukan Scanning ke Web Server

Apabila proses instalasi dan konfigurasi serta integrasi modul ModSecurity di atas sudah selesai dilakukan semua, maka langkah selanjutnya yakni melakukan pengetesan dengan melakukan scanning pada website yang berada pada Web Server yang dilakukan monitoring, ganti parameter **`[IP_ADDRESS]`** dengan IP Address target dari Web Server dan berikut perintahnya:

{% code overflow="wrap" lineNumbers="true" %}

```bash
nmap -sV --script=vulscan/vulscan.nse [IP_ADDRESS]
```

{% endcode %}

<figure><img src="https://nos.wjv-1.neo.id/cdn.medusa.my.id/Nmap%20Web%20Vulnerability%20Scanning.png" alt=""><figcaption><p>Web Vulnerability Scanning</p></figcaption></figure>

### Pengecekan Error Log ModSecurity di VM

Selanjutnya masuk ke VM yang sebelumnya sudah ter-install paket software Apache dan modul ModSecurity, kemudian lakukan pengecekan error log yang berhubungan dengan WAF dan kita dapat melihat terdapat adanya aktivitas yang dianggap sebagai anomali karena kita melakukan scanning pada website yang berada pada Web Server tersebut:

{% code overflow="wrap" lineNumbers="true" %}

```bash
tail -f /var/log/apache2/error.log
```

{% endcode %}

<figure><img src="https://nos.wjv-1.neo.id/cdn.medusa.my.id/Apache%20ModSecurity%20Log.png" alt=""><figcaption><p>Error Log of ModSecurity</p></figcaption></figure>

### Pengecekan Security Event di Wazuh

Terakhir login ke Wazuh dan setelah itu ke **Kibana > Wazuh > Modules > Security events > Events**, klik pada **Explore agent** untuk memilih Wazuh Agent yang ingin kita lakukan monitoring yang berhubungan dengan ModSecurity (Misal: **ID: 002**), kemudian cari **`rule.description`** dengan informasi mengenai **`ModSecurity: Rejected a query`** atau kita dapat melakukan pencarian query dengan mengetikkan **`rule.description : "ModSecurity: Rejected a query"`** pada pencarian [**KQL**](https://www.elastic.co/guide/en/kibana/7.17/kuery-query.html) untuk menganalisa log yang didapati dari WAF apabila terdapat Cyber Threat yang berhubungan dengan aplikasi berbasis website.

<figure><img src="https://nos.wjv-1.neo.id/cdn.medusa.my.id/Security%20Events%20-%20ModSecurity.png" alt=""><figcaption><p>Security Event of ModSecurity</p></figcaption></figure>

<figure><img src="https://nos.wjv-1.neo.id/cdn.medusa.my.id/ModSecurity%20Rejected%20a%20Query.png" alt=""><figcaption><p>Expanded Document of Security Events</p></figcaption></figure>

Demikian sedikit pengetahuan dan pengalaman yang dapat saya bagikan, semoga apa yang telah saya sampaikan dapat bermanfaat bagi kita semua.

<details>

<summary><strong>Referensi</strong></summary>

* [**Analyzing ModSecurity events with Wazuh​**](https://wazuh.com/blog/analyzing-modsecurity-events-with-wazuh)
* ​[**How to Detect CVEs Using Nmap Vulnerability Scan Scripts​**](https://securitytrails.com/blog/nmap-vulnerability-scan)

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://blog.madfxr.my.id/documentation/categories/cyber-security/analisa-web-application-attack-dengan-menggunakan-modsecurity-dan-wazuh.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
