modsecurity dan port sentry

Mod security

Apa itu ModSecurity ? ModSecurity adalah firewall aplikasi web gratis (WAF) yang bekerja dengan Apache, Nginx dan IIS. Ini mendukung mesin aturan yang fleksibel untuk melakukan operasi sederhana dan kompleks dan dilengkapi dengan Core Rule Set (CRS) yang memiliki aturan untuk injeksi SQL, skrip lintas situs, Trojans, agen pengguna yang buruk, pembajakan sesi dan banyak eksploitasi lainnya. Untuk Apache, ini dimuat sebagai modul tambahan yang memudahkan pemasangan dan konfigurasi.
Adapun persyaratanya.
Untuk mengikuti tutorial ini, anda memerlukan :
1.      Droplet Ubuntu 14.04 atau Debian 8.
2.      Koneksi internet
3.      Leptop yang pasti.

Langkah  1 instalasi modsecurity.
1.      Perbarui file indeks paket dengan cara buka terminal ketik ;
Apt-get update
2.      Instal modsecurity dengan mengetik;
Apt-get install libapache2-mod-security2 -y
3.      Anda dapat memverifikasi bahwa modul ModSecurity telah dimuat menggunakan perintah berikut.
Sudo apachectl -M | Grep --color security2   jika output membaca security2_module (shared), ini menunjukkan bahwa modul telah dimuat.
4.      Instalasi ModSecurity mencakup file konfigurasi yang direkomendasikan yang harus diganti namanya.
Sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
5.      Akhirnya, muat ulang Apache, dengan mengetik;
Sudo service apache2 reload
6.      File log baru untuk ModSecurity akan dibuat di direktori log Apache di /var/log/apache2/modsec_audit.log.

Langkah 2 mengkonfigurasi Modsecurity.
Di luar kotak, ModSecurity tidak melakukan apapun karena membutuhkan peraturan untuk bekerja. Pada langkah ini, pertama-tama kita akan mengaktifkan beberapa arahan konfigurasi.
Untuk menemukan dan mengganti arahan konfigurasi pada langkah ini, kita akan menggunakan sed, editor aliran. Anda bisa membaca sed tutorial series untuk belajar lebih banyak tentang alat ini.


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 / SecResponseBodyAccess On / SecResponseBodyAccess Off /" /etc/modsecurity/modsecurity.conf

Langkah 3 - Menguji SQL Injection
Sebelum mengkonfigurasi beberapa aturan, kita akan membuat skrip PHP yang rentan terhadap injeksi SQL untuk menguji perlindungan ModSecurity.
Catatan: ini adalah skrip login PHP dasar tanpa penanganan sesi atau bentuk sanitasi. Ini hanya digunakan sebagai contoh untuk menguji aturan injeksi SQL dan ModSecurity. Ini akan dihapus sebelum akhir tutorial.
Pertama, akses MySQL prompt.

Mysql -u root -p
Disini, buat database MySQL yang disebut sample dan hubungkan ke sana.
Mysql> create database sample;
Mysql> connect sample;
Kemudian buat tabel yang berisi beberapa kredensial - username sammy dan password password.
Mysql> create table users(username VARCHAR(100),password VARCHAR(100));
Mysql> insert into users values('sammy','password');

Akhirnya, keluar dari prompt MySQL.
Mysql> quit;

Selanjutnya, buatlah skrip login di root dokumen Apache.

Sudo nano /var/www/html/login.php
Tempel script PHP berikut ke dalam file. Pastikan untuk mengubah password MySQL di script di bawah ini yang anda tentukan tadi sehingga scriptnya bisa terhubung ke database:

/var/www/html/login.php


<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' DAN password = '$ password' ");
        Jika (mysqli_num_rows ($ result) == 0)
            Echo 'username atau password tidak benar';
        lain
            Echo '<h1> Logged in </ h1> <p> Ini adalah teks yang seharusnya ditampilkan saat login dengan kredensial yang valid. </ P>';
    }
    lain
    {
?>
        <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>



Skrip 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.

Nama pengguna injeksi SQL
'Atau benar -
Perhatikan bahwa seharusnya ada tempat setelah - suntikan ini bekerja. Biarkan kolom password kosong dan tekan tombol login. Skrip tersebut menunjukkan pesan yang ditujukan untuk pengguna yang diautentikasi! Pada langkah selanjutnya, kita akan mencegah hal ini.
Langkah 4 - Menyiapkan Aturan
Pada langkah ini, kami akan menyiapkan beberapa peraturan ModSecurity.

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 dua arahan berikut, disorot dengan warna merah, di dalam sebelum baris terakhir di file (</ IfModule>).

Diperbarui security2.conf
        IncludeOptional /etc/modsecurity/*.conf
        IncludeOptional "/usr/share/modsecurity-crs/*.conf"
        IncludeOptional "/usr/share/modsecurity-crs/activated_rules/*.conf"
</ IfModule>
Simpan dan tutup file.


Mengaktifkan SQL Injection Rule

Selanjutnya, kita akan mengaktifkan file aturan injeksi SQL. 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 simbolis dari file modsecurity_crs_41_sql_injection_attacks.conf.

Sudo ln -s ../base_rules/modsecurity_crs_41_sql_injection_attacks.conf.
Akhirnya, muat ulang Apache agar peraturan mulai berlaku.

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.)

Karena skrip login PHP ini hanya dimaksudkan untuk menguji ModSecurity, Anda harus menghapusnya sekarang setelah tes selesai.

Sudo rm /var/www/html/login.php

Kesimpulan
Dalam tutorial ini, Anda telah belajar cara menginstal dan mengkonfigurasi ModSecurity, dan menambahkan aturan khusus. Untuk mempelajari lebih lanjut, Anda dapat memeriksa dokumentasi ModSecurity resmi.


Selanjutnya, kita akan mengaktifkan file aturan injeksi SQL. 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 simbolis dari file modsecurity_crs_41_sql_injection_attacks.conf.

Sudo ln -s ../base_rules/modsecurity_crs_41_sql_injection_attacks.conf.
Akhirnya, muat ulang Apache agar peraturan mulai berlaku.

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.)

Karena skrip login PHP ini hanya dimaksudkan untuk menguji ModSecurity, Anda harus menghapusnya sekarang setelah tes selesai.

Sudo rm /var/www/html/login.php



PortSentry

PortSentry adalah sebuah perangkat lunak yang dirancang untuk mendeteksi adanya port scanning & meresponds secara aktif jika ada port scanning. Port scan adalah proses scanning berbagai aplikasi servis yang dijalankan di server Internet. Port scan adalah langkah paling awal sebelum sebuah serangan di lakukan.
  1. Beberapa fitur utama dari PortSentry:
  2. Berjalan di atas soket TCP & UDP untuk mendeteksi scan port ke sistem kita.
  3. Mendeteksi stealth scan, seperti SYN/half-open, FIN, NULL, X-MAS.
  4. PortSentry akan bereaksi secara real-time (langsung) dengan cara memblokir IP address si penyerang. Hal ini dilakukan dengan menggunakan ipchains/ipfwadm dan memasukan ke file /etc/host.deny secara otomatis oleh TCP Wrapper.
  5. PortSentry mempunyai mekanisme untuk mengingat mesin / host mana yang pernah connect ke dia. Dengan cara itu, hanya mesin / host yang terlalu sering melakukan sambungan (karena melakukan scanning) yang akan di blokir.
  6. PortSentry akan melaporkan semua pelanggaran melalui syslog dan mengindikasikan nama system, waktu serangan, IP mesin penyerang, TCP / UDP port tempat serangan dilakukan. Jika hal ini di integrasikan dengan Logcheck maka administrator system akan memperoleh laporan melalui e-mail.

Cara menggunakan Portsentry : 
Berikut adalah langkah-langkah instalasi dan konfigurasi portsentry pada komputer IDS
1.      Pada server IDS menjalankan $ sudo apt-get install portsentry untuk instalasi melalui terminal yang harus terkoneksi dengan internet, karena portsentry sudah ada di repository ubuntu 11.04 seperti pada gambar 1



Gambar 1 Instalasi Portsentry di Ubuntu 11.04

2.      Pada server IDS terdapat file konfigurasi yang ada di direktori /etc/portsentry/portsentry.conf untuk mereject koneksi penyerang dengan iptables dan memfilter IP host penyerang melalui TCP wrapper. Untuk mengedit file /etc/portsentry/portsentry.conf dengan cara mengetikkan perintah # nano /etc/portsentry/portsentry.conf.



Gambar 2 Konfigurasi Blocking TCP dan UDP scans

Pada gambar 2 memperlihatkan konfigurasi blocking UDP/TCP scans pada ignore options ,
memilih angka 1 untuk memblock jika terjadi scanning port TCP dan UDP.




Gambar 3 Konfigurasi Reject Connection Host dengan Iptables

Pada gambar 3 memperlihatkan konfigurasi blocking host dengan Ipchain guna memblokir koneksi, untuk mereject koneksi host penyerang dengan menggunakan iptables ketika tertangkap melakukan kegiatan scanning port pada jaringan dengan cara menghilangkan tanda # pada konfigurasi KILL_ROUTE=”/sbin/iptables –I INPUT –s $TARGET$ -j DROP”.




Gambar 4 Konfigurasi Filtering Host dengan TCP wrapper

Pada gambar 4 memperlihatkan konfigurasi filtering host dengan TCP wrapper, menghilangkan tanda # pada konfigurasi KILL_HOSTS_DENY=”ALL: $TARGET$ : DENY” untuk memfilter acces IP host penyerang ketika tertangkap melakukan scanning port pada jaringan.
3.  Pada sever IDS terdapat file /etc/portsentry/portsentry.ignore.static, isi dengan IP yang tidak ingin terlindungi oleh firewall portsentry, untuk mengedit file /etc/portsentry/portsentry.ignore.static. konfigurasi IP dapat dilakukan seperti pada gambar 5



Gambar 5 Konfigurasi IP di /etc/portsentry/portsentry.ignore.static

Dalam pengisian IP, jika tidak mencantumkan nilai mask length-nya maka akan diasumsikan nilai subnet mask 32 bit, semisal 192.168.1.0, maka akan diasumsikan sama dengan 192.168.1.0/32.

4. Pada server IDS terdapat file /etc/default/portsentry, untuk memilih mode TCP dan UDP ketika portsentry mendeteksi port TCP/UDP, memilih mode deteksi port sesuai dengan yang ditentukan di portsentry.conf atau mode advanced dan menambah deteksi stealth scan.

Untuk konfigurasi mode deteksi port di file /etc/default/portsentry dapat dilihat pada gambar 6.



Gambar 6 Konfigurasi Mode Deteksi Port TCP/UDP

5.      Pada server IDS mengaktifkan sistem portsentry dengan menginsialisasi internet daemon (init.d) yang secara default ada di sistem operasi. Untuk mengaktifkan portsentry dengan cara mengetik perintah # /etc/init.d/portsentry restart seperti pada gambar 7.



Gambar 7 Mengaktifkan Sistem Portsentry

6. Pada server IDS menjalankan perintah # tail –f /var/log/syslog untuk mengetahui aktifitas portsentry melalui data syslog seperti pada gambar 8.



Gambar 8 Aktifitas Portsentry melalui Data Syslog

7.      Pada server IDS coba lakukan scanning port sendiri dengan menggunakan perintah # nmap localhost untuk mengetahui port yang dibuka dan dicek oleh portsentry seperti pada gambar 9 tetapi harus menginstall program nmap di linux dengan mengetikkan perintah apt-get install nmap yang sudah terkoneksi dengan internet.



Gambar 9 Port yang dibuka dan dicek oleh Portsentry







Komentar

Postingan populer dari blog ini

pengertian portsentry, ossec,mod security dan snort

remote access