Tutor [iptables] Port Knocking

Kali ini ane mau bikin tutorial cara untuk meningkatkan keamanan sepler dengan menggunakan teknik port knocking.


Mbok Darmi : Bused, apaan tuh port knocking om?
Suprapta : Jadi begini , port knocking adalah sebuah cara untuk membuka port tertentu dengan cara mengirimkan paket ke sedetetan port2 tertentu yang telah ditentukan sebelumnya.

Mbok Darmi : Tujuannya buat apaan om?
Suprapta : Tujuannya untuk menghindari serangan dari heker yang melakukan scanning port untuk mendapatkan service2 yang mungkin bisa diexploitasi oleh mereka. Karena jika heker yang melakukan scanning tersebut tidak mengetuk port yang telah ditentukan sebelumnya secara berurutan, maka port yang ingin kita lindungi tersebut tidak akan terbuka.

Mbok Darmi : Oooo.. ( manggut2 sambil elus2 jenggot ) Ane masih ga ngerti maksudnya gimana om. Bisa lebih detail ga ?
Suprapta : Misalnya aja kita punya service SSH yang listen di port 22, sedangkan attacker punya 0day remote root exploit untuk aplikasi open ssh tersebut. Maka sepler akan terancam keperawanannya karena port 22 tersebut terbuka. Dengan menggunakan teknik port knocking, hanya mereka yang mengetahui port2 mana yang harus di hit terlebih dahulu yang dapat membuka dan mengakses port 22 tersebut.

Mbok Darmi : Ane justru makin pusing..
Suprapta : ya udah, yuk pelan2 belajar..

Percakapan sampai di sini...
======================

Supaya lebih jelas, ane ambil contoh dari trid ane sebelumnya tentang celeng Lawang Sewu CTF.
Challange yang ke-2 adalah mengenai port knocking.
Port knocking ini bisa kita konfigurasi dengan iptables firewall ( yang biasanya sudah terinstall pada kebanyakan distro linux )

Pada kesempatan kali ini ane mau share gimana cara konfigurasi port knocking menggunakan iptables.


Disclaimer :
Dengan mengikuti tutorial ini, author tidak bertanggung jawab jika ada kesalahan dan kehilangan remote akses ke server.

VIDEO TUTORIAL : http://youtu.be/0zFQocf7C_0


Yang dibutuhkan pada tutorial kali ini :
Server & Client dengan OS Linux ( pada tutorial kali ini ane menggunakan CentOS )
iptables ( firewall )
nmap ( untuk scan dan knocking port )
Pengetahuan dasar mengenai protocol, iptables, dan networking (UDP, TCP, ICMP).


Studi Kasus :
Ane punya sebuah server ( IP : 192.168.0.100 ), ane menggunakan SSH untuk melakukan manajemen server tersebut. SSH port untuk remote aksesnya adalah default ( Port 22 ). Ane sengaja untuk menutup port 22 dan hanya terbuka pada saat yang dibutuhkan. Disinilah kita gunakan teknik port knocking, dimana saya sudah menge-set konfigurasi supaya user harus mengirimkan paket TCP ke port 1111 lalu 2222, lalu 3333, dan terakhir 4444 baru kembudian port 22 (SSH) tersebut terbuka.
Jadi :

IP Server : 192.168.0.100
OS : CentOS
SSH Port : 22
Skema Port Knocking : Paket TCP Port 1111 => 2222 => 3333 => 4444 => Port 22 terbuka


untuk bawaan server CentOS, konfigurasi firewall sudah membuka port 22 untuk SSH.


[Image: pk-01.png]
Maka kita perlu mengkonfigurasi ulang iptables firewallnya. Kita dapat menggunakan perintah iptables-save > iptables.rules untuk melakukan dump / backup rules firewall.

Coba lihat pada hasil konfigurasi firewall yang baru saja kita dump, kurang lebih seperti berikut ( untuk OS CentOS )
Code:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

[Image: pk-02.png]
Perhatikan pada rules berikut :
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

terlihat bahwa iptables memperbolehkan akses melalui port 22.
Karena pada kasus ini kita ingin menutup port 22 tersebut, dan hanya terbuka pada saat port Port 1111,2222,3333,4444 mendapatkan paket TCP.

Note : sebelum edit copy dulu konfigurasi firewallnya.
Code:
# cp iptables.rules iptables-new.rules

Kaku kita edit konfigurasi firewall tersebut menjadi :
Code:
# vi iptables-new.rules
dan edit seperti pada gambar dibawah :


[Image: pk-03.png]
Dengan kata lain, saya membuka port 80, kemudian menambahkan firewall rules baru yang secara dinamis dapat membuka port 22 selama 15 detik jika port 1111, 2222, 3333, 4444 mendapatkan kiriman paket TCP secara berurutan dalam jangka waktu 5 detik.

Setelah dirasa udah oke, kita restore konfigurasi firewall yang baru dengan menggunakan iptables-restore, lalu restart iptables servicenya
Code:
# iptables-restore < iptables-new.rules
# service iptables save
# service iptables restart

kemudian untuk memastikan rules yang baru sudah berjalan gunakan perintah :
Code:
# iptables -L -n

[Image: pk-04.png]
Nah kalau udah, mari kita coba cek scan port 22 pada server dari komputer kita menggunakan nmap, maka akan terlihat port tersebut tertutup oleh firewall.

Code:
# nmap -Pn 192.168.0.100 -p22
[Image: pk-05.png]
Setelah itu kita buat script bash sederhana untuk melakukan knocking port.

Code:
#!/bin/bash
HOST=$1
shift
for ARG in "$@"
do
    nmap -PN --host_timeout 201 --max-retries 0 -p $ARG $HOST
done


Simpan dengan nama knock.sh lalu chmod +x agar script tersebut dapat dieksekusi.

cara penggunaan :
./knock.sh [ip server] [list port]
Code:
# ./knock.sh 192.168.0.100 1111 2222 3333 4444

Dengan mengetuk port 1111,2222,3333,4444 secara berurutan maka port 22 yang telah kita tentukan dari rules firewall akan terbuka. Dengan begitu kita dapat melakukan koneksi SSH ke server.

[Image: pk-06.png]

Sekian tutorial mengenai port knocking.
Silahkan dikembangkan sendiri dengan kreatifitas masing2, protocol dan paket yang dikirimkan tidak hanya terbatas pada TCP saja, kita juga bisa memanfaatkan kombinasi protokol TCP, UDP atau bahkan ICMP.
Previous
Next Post »

Selamat Datang Di Blog AnimeSubz-Cyber
Thanks for visiting ~

Kalau mau berkomentar ada baiknya baca peraturannya dulu sebelum berkomentar !

Rules:

- Blogger yang baik adalah blogger yang meninggalkan jejak
- Anda komentar, saya komen balik and follow blog anda
- No spam, No flood, No junk, No iklan, N sara,No s*x,
- Jangan menggunakan Live Link !
- Gunakan bahasa yang sopan
- Blog Ini Dofollow jadi Berkomentarlah dengan Sopan!!

Thanks For Your Attention ! ConversionConversion EmoticonEmoticon