Intrusion Prevention System

An Intrusion Prevention System is a network security/threat prevention technology that examines network traffic flows to detect and prevent vulnerability exploits. Vulnerability exploits usually come in the form of malicious inputs to a target application or service that attackers use to interrupt and gain control of an application or machine.

ada banyak jenis dari IPS tapi kali ini penulis akan membahas tentang PortSentry dan ModSecurity. Bagaimana cara kerja nya ?? Let’s Check it out

PORTSENTRY

            Portsentry merupakan salah satu program aplikasi firewall, yang bisa melakukan pemblokiran terhadap user yang mencoba melakukan scanning port sistem atau mencoba melakukan aktivitas yang “tidak terpuji”, antara lain melakukan penyusupan melalui alamat port yang ada. Dengan adanya portsentry, semua alamat IP yang melakukan aktivitas yang dianggap “mencurigakan”, baik yang melalui port TCP maupun UDP akan segera diblokir. Sehingga semua user yang menggunakan alamat IP yang sama seperti warnet, perkantoran, dan anggota ISP, tidak akan bisa mengakses server kita lagi.

Berikut adalah langkah – langkah instalasi dan konfigurasi portsentry pada komputer IPS

  1. Pada Server IPS menjalankan $sudo apt-get install portsentry untuk instalasi melalui terminal yang harus terkoneksi dengan internet. Perintah sudo digunakan untuk mengakses admin di ubuntu
  1. Pada Server IPS terdapat file konfigurasi yang terdapat di direktori /etc/portsentry/ dengan nama portsentry.conf. Konfigurasi ini bisa digunakan untuk mereject koneksi si attacker dan membatasi uji coba ping terhadap sistem. Untuk mengedit file portsentry.conf bisa dengan mengetikkan $nano /etc/portsentry/portsentry.conf

 

Setelah File portsentry.conf terbuka selanjutnya cari ADVANCED_PORTS_TCP dan ADVANCED_PORTS_UDP. Ganti value 1024 menjadi 35 untuk membatasi jumlah paket yang masuk dari penyerang.

Selanjutnya penulis akan blok TCP dan UDP dengan cara mencari BLOCK_UDP dan BLOCK_TCP. Ganti value 0 menjadi 1 untuk memblock TCP dan UDP. Jika sudah tekan tombol ctrl + X kemudian tekan tombol y dan enter.

  1. Tahap berikutnya restart portsentry dengan perintah /etc/init.d/portsentry restart

Setelah PortSentry terinstall, kita tinggal uji coba apakah PortSentry yang sudah di buat berhasil mengatasi serangan dari attacker. Ada beberapa cara untuk uji coba PortSentry dengan menggunakan Nmap

  1. Masukkan IP Target dan Lakukan Scanning

Jika sudah melakukan scanning terhadap ip target, kita bisa lihat bahwa IP penyerang akan di blok secara otomatis.

Bisa dilihat di CMD bahwa IP penyerang sudah di block oleh PortSentry

ModSecurity

            ModSecurity adalah firewall aplikasi web gratis (yang bekerja di Apache, Nginx dan IIS. ModSecurity mendukung mesin aturan yang fleksibel untuk melakukan operasi sederhana dan kompleks dan dilengkapi dengan Core Rule Set (CRS) yang memiliki aturan untuk injeksi SQL, Trojans, pengguna yang buruk, pembajak dan banyak eksploitasi lainnya. Untuk Apache, ini dimuat sebagai modul tambahan yang memudahkan pemasangan dan konfigurasi.

Berikut Cara Untuk menginstall ModSecurity :

  1. install ModSec dengan perintah

sudo apt-get install libapache2-mod-security2 -y

  1. Kemudian, kalian bisa verifikasi apakah Module dari ModSecurity telah digunakan

sudo apachectl -M | grep –color security2

jika tampil security2_module (shared) itu terindikasi module telah masuk

  1. setelah itu reload apache

service apache2 reload

Selanjutnya masuk tahap configurasi

Petunjuk Dasar untuk Aktifkan
File konfigurasi ModSecurity default diatur ke DetectionOnly, yang mencatat permintaan sesuai dengan kecocokan aturan dan tidak memblokir apapun. Ini bisa diubah dengan mengedit file modsecurity.conf dan memodifikasi perintah SecRuleEngine. Jika Anda mencoba ini di server produksi, ubahlah perintah ini hanya setelah menguji semua peraturan Anda.

sudo sed -i “s/SecRuleEngine DetectionOnly/SecRuleEngine On/”

/etc/modsecurity/modsecurity.conf

Perintah SecResponseBodyAccess mengonfigurasi apakah badan respons disangga (yaitu dibaca oleh ModSecurity). Ini hanya diperlukan jika deteksi dan proteksi kebocoran data diperlukan. Oleh karena itu, membiarkannya menggunakan sumber Droplet dan juga meningkatkan ukuran logfile, jadi kami akan mematikannya.

sudo sed -i “s/SecResponseBodyAccess On/SecResponseBodyAccess Off/” /etc/modsecurity/modsecurity.conf

Petunjuk Pilihan untuk Memodifikasi

Ada petunjuk lain yang mungkin ingin Anda sesuaikan dengan mengedit /etc/modsecurity/modsecurity.conf. Perintah SecRequestBodyLimit dan SecRequestBodyNoFilesLimit membatasi data maksimum yang dapat diposkan ke aplikasi web Anda.

Secara khusus, direktif SecRequestBodyLimit menentukan ukuran data POST maksimum. Jika ada sesuatu yang lebih besar yang dikirim oleh klien, server akan merespons dengan kesalahan 413 Request Entity Too Large. Jika aplikasi web Anda tidak memiliki file upload, nilai ini dapat dibiarkan seperti apa adanya. Nilai pre-configured yang ditentukan dalam file konfigurasi adalah 13107200 bytes (12.5MB). Jika Anda ingin mengubah nilai ini, cari baris berikut modsecurity.conf:
Opsional `modsecurity.conf` direktif berubah

SecRequestBodyLimit 13107200

Demikian pula, SecRequestBodyNoFilesLimit membatasi ukuran data POST dikurangi upload file. Nilai ini harus ditetapkan serendah mungkin untuk mengurangi kerentanan terhadap serangan penolakan layanan (DoS) saat seseorang mengirim badan permintaan dengan ukuran sangat besar. Nilai pre-configured pada file konfigurasi adalah 131072 bytes (128KB). Jika Anda ingin mengubah nilai ini, cari baris berikut modsecurity.conf:
Opsional `modsecurity.conf` direktif berubah

SecRequestBodyNoFilesLimit 131072

Petunjuk yang mempengaruhi kinerja server adalah SecRequestBodyInMemoryLimit. Petunjuk ini cukup jelas; Ini menentukan berapa banyak data “permintaan tubuh” (data POST) harus disimpan di memori (RAM), apapun yang lebih akan ditempatkan di hard disk (seperti swapping). Karena Droplet menggunakan SSD, ini bukan masalah besar. Namun, ini bisa diubah jika Anda memiliki cadangan RAM. Nilai pra-konfigurasi untuk direktif ini adalah 128KB. Jika Anda ingin mengubah nilai ini, cari baris berikut modsecurity.conf:

Opsional `modsecurity.conf` direktif berubah

SecRequestBodyInMemoryLimit 131072

 Test SQL Injection

Sebelum mengkonfigurasi beberapa aturan, kita akan membuat skrip PHP yang rentan terhadap injeksi SQL untuk menguji perlindungan ModSecurity.

Pertama Access Mysql

mysql -u root -p

Selanjutnya buat Database dengan perintah

create database sample;

Error 1007 karena database sample telah dibuat sebelumnya

Selanjutnya gunakan Database sample dengan perintah

use sample;

Kemudian buat table dengan username sammy dan password password dengan perintah

create table users(username VARCHAR(100),password VARCHAR(100));

insert into users values(‘sammy’,’password’);

Jika selesai, silahkan exit mysql nya

Selanjutnya buat script login.php dengan perintah :

silahkan copy paste file login.php berikut

<html>

<body>

<?php

if(isset($_POST[‘login’]))

{

$username = $_POST[‘username’];

$password = $_POST[‘password’];

$con = mysqli_connect(‘localhost’,’root’,’your_mysql_password’,’sample’);

$result = mysqli_query($con, “SELECT * FROM `users` WHERE username=’$username’ AND password=’$password'”);

if(mysqli_num_rows($result) == 0)

echo ‘Invalid username or password’;

else

echo ‘<h1>Logged in</h1><p>This is text that should only be displayed when logged in with valid credentials.</p>’;

}

else

{

?>

<form action=”” method=”post”>

Username: <input type=”text” name=”username”/><br />

Password: <input type=”password” name=”password”/><br />

<input type=”submit” name=”login” value=”Login”/>

</form>

<?php

}

?>

</body>

</html>

masukkan file login.php ke sudo nano /var/www/html/login.php

Script ini akan menampilkan form login. Buka browser Anda dan arahkan ke http: //your_server_ip/login.php untuk melihatnya. Jika Anda memasukkan pasangan kredensial yang benar, mis. Sammy di kolom Username dan kata sandi di kolom Password, Anda akan melihat pesannya Ini adalah teks yang hanya akan ditampilkan saat login dengan kredensial yang valid. Jika Anda menavigasi kembali ke layar masuk dan menggunakan kredensial yang salah, Anda akan melihat pesan Username atau kata sandi tidak benar.

Tugas selanjutnya adalah mencoba injeksi SQL untuk memotong halaman login. Masukkan berikut ini untuk kolom username.

‘ or true —

jika sudah di masukkan ‘ or true—

Di tahap selanjutnya kita akan mengatur beberapa rules

Mengaktifkan CRS
Untuk mempermudah, ada banyak aturan yang sudah terpasang bersama dengan ModSecurity. Ini disebut CRS (Core Rule Set) dan berada di direktori / usr / share / modsecurity-crs. Untuk memuat aturan ini, kita perlu mengkonfigurasi Apache untuk membaca file .conf di direktori ini, jadi buka file security2.conf untuk diedit.

sudo nano /etc/apache2/mods-enabled/security2.conf

tambahkan file

IncludeOptional “/usr/share/modsecurity-crs/*.conf”

IncludeOptional “/usr/share/modsecurity-crs/activated_rules/*.conf”

lalu simpan dan tutup direktorinya

Selanjutnya kita akan mengaktifkan Peraturan SQL Injection

File aturan yang diperlukan harus disambungkan ke direktori activated_rules, yang mirip dengan direktori mods-enabled Apache. Ubah ke direktori activated_rules.

cd /usr/share/modsecurity-crs/activated_rules/

kemudian buat link dari modsecurity_crs_41_sql_injection_attacks.conf file.

sudo ln -s ../base_rules/modsecurity_crs_41_sql_injection_attacks.conf

selanjutnya reload apache2 nya

sudo service apache2 reload

Sekarang buka halaman login yang kita buat tadi dan coba gunakan query injection SQL yang sama di kolom username. Karena kami mengubah perintah SecRuleEngine ke On pada langkah 2, sebuah kesalahan 403 Forbidden akan ditampilkan. (Jika SecRuleEngine diserahkan ke opsi DetectionOnly, injeksi akan berhasil namun usaha akan dicatat dalam file modsec_audit.log.)

 

 

 

 

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s