Meminimalisir serangan dos/ddos pada server

by darkranger - 05-08-2019 at 01:50 PM
Junior Member
Posts:
3
Joined:
May 2019
Likes:
0
Reputation:
0
2 Year Of Member
#1
OP
Posted: 05-08-2019, 01:50 PM (This post was last modified: 05-08-2019, 11:45 PM by darkranger.)
Hallo kembali lagi dengan saya di sini,
Untuk melanjutkan artikel sebelumnya tentang cara mengamankan server dari berbagai serangan.
Di post kali ini saya akan membahas bagaimana cara meminimalisir serangan DOS/DDOS pada server yang kita kelola secara teknisnya.
Yang akan kita bahas kali ini adalah:

  1. Blok traffic masuk ICMP
  2. Blok IP yang di sinyalir membahayakan server dengan iptables
  3. Batasi jumlah traffic masuk pada server
  4. Tutup port yang tidak di perlukan
  5. Batasi ukuran file yang di upload
  6. Pasang IDS & IPS untuk meminimalisir serangan

Pertama:
Oke langsung saja ke bahasan pertama yaitu mem blok traffic masuk ICMP.
Kenapa ICMP harus di batasi??
Karena perlu kita ketahui juga dalam serangan DOS/DDOS itu ada namanya teknik "Ping of death" atau bisa di sebut sebagai serangan yang di tujukan pada protokol ICMP.
Untuk cara menangkalnya cukup mudah, kita hanya menambahkan rule iptables saja.
Tetapi sebelum mengeksekusi perintahnya kita harus menggunakan user root terlebih dahulu.
Perintahnya kurang lebih seperti ini

Code:
$ iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

dan jika kalian ingin menghapus rute tersebut cukup mengganti "-A" menjadi "-D".

Code:
$ iptables -D INPUT -p icmp --icmp-type echo-request -j DROP

Cukup mudah bukan?? :)

Kedua:
Oke kita lanjut ke pembahasan kedua, yaitu membloking ip address yang di sinyalir membahayakan server.
Seperti biasa tools yang di gunakan masih menggunakan iptables.
Perintahnya serperti ini

Code:
$ iptables -A INPUT -s ipaddress -j DROP

Sebagai contoh kita akan memblok ip 1.1.1.1, dan perintahnya seperti ini.

Code:
$ iptables -A INPUT -s 1.1.1.1 -j DROP

Seperti pembahasan di atas, jika kita ingin meng unblock tinggal mengganti "-A" menjadi "-D".

Code:
$ iptables -D INPUT -s 1.1.1.1 -j DROP

Sudah mulai sedikit paham dengan iptables?? :)

Ketiga:
Lanjut ke pembahasan ke tiga yaitu tentang cara membatasi maksimal request yang masuk.
Kali ini masih seputar iptables, dan tidak perlu lagi seting di webserver.
Tujuannya yaitu menghidari bruteforce, DOS/DDOS pada web server, dan bisa juga di terapkan ke service yang lain.
Sebagai contoh bisa di terapkan juga ke port ssh agar tidak terjadi serangan bruterforce secara berturut turut.
Ketika ada salah satu ip yang mencoba mem bruteforce maka ip tersebut akan di block oleh iptables untuk sementara.
Perintahnya kurang lebih seperti ini

Code:
$ iptables -I INPUT -p tcp --dport [port] -i [interface] -m state --state NEW -m recent --set
$ iptables -I INPUT -p tcp --dport [port] -i [interface] -m state --state NEW -m recent  --update --seconds [waktu] --hitcount 4 -j DROP

Keterangan:
[port] = port yang akan kita batasi koneksinya
[interface] = interface jaringan yang di gunakan pada server
[waktu] = waktu tunggu setelah di blok oleh ip tables

Sebagai contoh apabila di server kita mempunyai 3 port yang di buka maka perintahnya seperti ini

Code:
$ iptables -I INPUT -p tcp --dport 22 -i ens3 -m state --state NEW -m recent --set
$ iptables -I INPUT -p tcp --dport 80 -i ens3 -m state --state NEW -m recent --set
$ iptables -I INPUT -p tcp --dport 443 -i ens3 -m state --state NEW -m recent --set
$ iptables -I INPUT -p tcp --dport 22 -i ens3 -m state --state NEW -m recent  --update --seconds 60 --hitcount 4 -j DROP
$ iptables -I INPUT -p tcp --dport 80 -i ens3 -m state --state NEW -m recent  --update --seconds 60 --hitcount 4 -j DROP
$ iptables -I INPUT -p tcp --dport 443 -i ens3 -m state --state NEW -m recent  --update --seconds 60 --hitcount 4 -j DROP

Port 22 = SSH
Port 80 = Web server
Port 443 = Web server
ens3 = Interface jaringan

Kurang lebih seperti itu teknisnya dalam membatasi koneksi yang masuk pada server menggunakan iptables.
Dan jangan lupa juga kalau kita sudah menginput rule iptables di atas, kita harus menyimpan rule tersebut dengan perintah iptables-save.

Code:
$ iptables-save


Keempat:
Untuk tahap ke empat yaitu menutup port yang tidak terpakai.
Kali ini caranya agak sedikit berbeda, yang di mana sebelum mematikan service kita harus mengecek terlebih dahulu port yang terbuka dengan netstat.
Perintah dasarnya seperti ini

Code:
$ netstat -ntlp

Untuk melihat service apa saja yang di jalankan, kita harus menggunakan user root agar bisa terlihar name servicenya.
Karena kalo kita menjalankan netstat menggunakan user biasa, nama service dan nomer pid nya tidak akan muncul di outputnya.

Setelah kita mengetahui pid dan port mana yang tidak terpakai, tahap selanjutnya adalah memberhentikan service tersebut.
Sebagai contoh

[Image: Screenshot-2019-05-08-20-20-41.png]

Di gambar tersebut terlihat service haproxy dan python yang sedang berjalan tetapi proses tersebut sebenernya tidak terpakai.
Selain itu juga port 31337 itu adalah port backdoor (bind shell), dan ini yang akan menyebabkan server kita menjadi tidak aman.
Untuk cara memberhentikan service dan backdoor tersebut ada banyak cara, yang pertama memberhentikan terlebih dahulu service haproxy yang sedang berjalan dengan cara seperti ini.

Code:
$ /etc/init.d/haproxy stop

atau

$ systemctl stop haproxy

Kemudian cara selanjutnya yaitu mendisable service tersebut saat restart dengan perintah ini.

Code:
$ systemctl disable haproxy

Selanjutnya jika service yang berjalan tidak ada di dalam systemctl atau init.d kita bisa mematikan proses secara paksa dengan perintah ini.

Code:
$ kill -9 <pid>

<pid> ini adalah pid proses yang keluar di dalam output netstat tadi, sebagai contoh pid yang menjalankan python yaitu 5615 dan perintahnya seperti ini.

Code:
$ kill -9 5615

Kalo kalian sudah terbiasa dengan perintah linux pastinya cara ini sangat mudah di lakukan. :)

Kelima:
Yang ke lima adalah bagaimana caranya agar koneksi yang di terima pada server bisa kita limit.
Karena secara default, bandwidth koneksi yang di gunakan itu rata" tanpa ada batasan ukurannya.
Di sini kita akan coba me limit bandwidth yang akan kita gunakan menggunakan aplikasi wondershaper.
Untuk installasi nya cukup mudah, kita tinggal mengetik saja perintah ini di terminal.

Code:
$ apt install make
$ git clone https://github.com/magnific0/wondershaper
$ cd wondershaper
$ make install
$ chmod +x /usr/bin/wondershaper
$ systemctl enable wondershaper

Setelah installasi selesai, kita tinggal menyesuaikan interface yang di pakai, kecepatan download dan upload pada setingan wondershaper dengan mengedit file /etc/conf.d/wondershaper.conf kemudian mengaktifkan service nya.

Code:
$ nano /etc/conf.d/wondershaper.conf
$ cat /etc/conf.d/wondershaper.conf
[wondershaper]
IFACE="ens3"
DSPEED="2048"
USPEED="2048"
$ systemctl start wondershaper

Kemudian jika kita ingin mengecek apakah wondershaper nya sudah bekerja dengan baik, kita bisa cek menggunakan aplikasi speedtest di terminal.

[Image: Screenshot-2019-05-09-05-45-30.png]

Kenapa hal ini harus kita lakukan??
Karena sebagai kita ketahui bahwa service DDOS itu bisa di beli secara online, dan bisa di jalankan juga tanpa menggunakan koneksi yang kita pakai.
Sehingga serangan yang di hasilkan bisa sangat besar jika server kita tidak di batasi bandwidth nya.

Keenam:
Dan yang terakhir adalah memasang IDS dan IPS pada web server.
Cara ini cukup mudah juga dalam proses installasinya, kita tinggal install saja aplikasi snort di terminal server kita.

Code:
$ apt install snort

Setelah proses installasi selesai, snort akan berjalan secara otomatis di system.
Dia juga akan menganalisa setiap request yang masuk apakah request tersebut mencurigakan atau tidak.
Kemudian hasil analisa tersebut akan masuk ke dalam log server untuk di analisa oleh kita.
Selain itu juga kita bisa membuat rule sendiri untuk pengamanan pada server kita.

Mungkin cukup sekian pembahasan kali ini tentang cara meminimalisir serangan DOS/DDOS pada server.
Kurang lebih nya mohon, di maklumi.
Karena saya sendiri pun masih belajar dan mendalami bagaimana cara mengamankan server dari berbagai serangan.
Next saya akan melanjutkan tulisan berikutnya.

Sekian...
Reply
Find Posts
Register an account or login to reply
Create an account
Create a free account today and start posting right away. It only takes a few seconds.
Login
Log into an existing account.
1 Guest(s)