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.
- Beberapa fitur utama dari PortSentry:
- Berjalan di atas soket TCP & UDP untuk
mendeteksi scan port ke sistem kita.
- Mendeteksi stealth scan, seperti SYN/half-open,
FIN, NULL, X-MAS.
- 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.
- 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.
- 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
Posting Komentar