Menggunakan Firewall Linux: A. Lankah-lankah tahap proses instalasi iptables sebenarnya sudah terinstal pada setiap distribusi Linux. Untuk melakukan update/instal, gunakan perintah ini: sudo apt-get install iptables B. MENGGUNAKAN FIREWALL iptables menggunakan tiga chains berbeda: input, forward, dan output. Input Chain yang digunakan untuk koneksi masuk. Contohnya, jika seseorang mencoba untuk melakukan SSH ke komputer Anda, iptables akan mencoba mencocokan alamat IP dan memberikan port pada input chain. Forward Chain yang digunakan untuk koneksi masuk yang tidak dihantarkan secara lokal. Ada cara yang bisa Anda lakukan untuk memeriksa apakah sistem Anda menggunakan/membutuhkan forward chain. Output Chain yang digunakan untuk koneksi keluar. C. PENGATURAN DEFAULT CHAIN Sebelum Anda mengkonfigurasi pengaturan tertentu, Anda harus menentukan apakah default behavior dari ketiga chaintersebut. Dengan kata lain, Anda harus menentukan apakah yang harus dilakukan iptables jika sebuah sambungan tidak cocok dengan aturan yang ada. Untuk mengetahui apakah pengaturan yang sedang digunakan, jalankan perintah iptables -L Pada gambar diatas, chain digunakan untuk menerima sambungan. Jika Anda ingin menerima sambungan secara default, Anda dapat menggunakan perintah dibawah ini: iptables policy INPUT ACCEPT iptables policy OUTPUT ACCEPT iptables policy FORWARD ACCEPT dengan menggunakan pengaturan accept, Anda dapat menggunakan Firewall Linux ini untuk menolak alamat IP atau porttertentu, disamping menerima sambungan lainnya. Jika Anda ingin menolak semua sambungan dan ingin menentukan sambungan apa saja yang ingin Anda lakukan secara manual, Anda harus merubah
pengaturan default dari chain menjadi drop. Cara ini hanya dapat berguna untuk server yang memiliki informasi sensitif, dan hanya digunakan alamat IP yang sama untuk terhubung kepada server tersebut. iptables policy INPUT DROP iptables policy OUTPUT DROP iptables policy FORWARD DROP D. RESPON SAMBUNGAN TERTENTU Setelah Anda menggunakan Firewall Linux dan mengkonfigurasi default chain, Anda bisa mulai menambahkan rule untuk iptables agar program ini tahu apakah yang harus dilakukan saat sambungan dari alamat IP atau port tertentu terjadi. Pada artikel ini, akan digunakan 3 perintah paling dasar yang paling sering digunakan. Accept Menerima sambungan. Drop Mengacuhkan sambungan. Reject Menolak sambungan, dan mengirimkan pesan eror. Menggunakan Firewall Linux Keempat: Menerima Atau Memblokir Sambungan Tertentu Setelah chain dikonfigurasi sepenuhnya, sekarang Anda dapat mengkonfigurasi iptables untuk menerima atau memblokir alamat IP, rentang alamat IP, dan port tertentu. Dibawah ini, akan digunakan pengaturan DROP, tetapi Anda bisa mengubahnyam nejadi ACCEPT atau REJECT, tergantung dari kebutuhan Anda, dan bagaimanakah Anda mengkonfigurasichain. Catatan: Pada beberapa contoh dibawah, akan digunakan perintah iptables A untuk menambahkan rule kepada chainyang ada. Iptables akan memulai dari daftar teratas dan menyortir setiap rule sampai iptables mendapatkan rule yang cocok. Jika Anda ingin memasukkan satu rule diatas rule lainnya, gunakan perintah -I [chain] [angka] untuk menentukan angka yang harus ada dalam daftar. Sambungan Dari Satu Alamat IP Tertentu Perintah menggunakan Firewall Linux dibawah ini digunakan untuk memblokir semua sambungan dari alamat IP 10.10.10.10. iptables -A INPUT -s 10.10.10.10 -j DROP Sambungan Dari Rentang Alamat IP Perintah menggunakan Firewall Linux dibawah ini, digunakan untuk memblokir semua alamat IP dalam rentang IP 10.10.10.0/24, dan Anda dapat menggunakan netmask atau notasi slash standar untuk menentukan rentang alamat IP. iptables -A INPUT -s 10.10.10.0/24 -j DROP
atau iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP Sambungan ke Port Tertentu Contoh dibawah ini digunakan untuk memblokir sambungan SSH dari 10.10.10.10. iptables -A INPUT -p tcp dport ssh -s 10.10.10.10 -j DROP Anda bisa mengubah ssh dengan protokol atau port lainnya. Bagian -p tcp pada kode memberitahukan kepada iptables jenis protokol apakah yang digunakan oleh sambungan tersebut. Jika Anda memblokir protokol UDP, dan bukan TCP, gunakan -p udp. Contoh dibawah ni digunakan untuk memblokir sambungan SSH dari alamt IP manapun: iptables -A INPUT -p tcp dport ssh -j DROP Fungsi Connection States Seperti yang telah disinggung sebelumnya, ada banyak protokol yang membutuhkan komunikasi dua arah. Contohnya, jika Anda ingin membolehkan sambungan SSH ke sistem, chain input dan output membutuhkan rule untuk menambahkan sambungan tersebut. tetapi, bagaimanakah jika Anda ingin membolehkan SSH yang hanya berasal dari sistem Anda saja? Apakah menambahkan rule output chain juga akan membolehkan sambungan SSH keluar? Maka dari itu, digunakan fungsi connetion states, dimana Anda memiliki kemampuan untuk membolehkan komunikasi dua arah, tetapi hanya membolehkan satu sambungan saja untuk dibuat. Contohnya pada perintah dibawah ini, dimana sambungan SSH yang berasal dari 10.10.10.10 dibolehkan, tetapi sambungan SSH ke 10.10.10.10 tidak dibolehkan. Meskipun begitu, sistem diperbolehkan untuk mengirimkan informasi melalui SSH, sepanjang sesi telah dibangun sebelumnya, yang membuat komunikasi SSH dapat dimungkinkan antara dua host. iptables -A INPUT -p tcp dport ssh -s 10.10.10.10 -m state state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp sport 22 -d 10.10.10.10 -m state state ESTABLISHED -j ACCEPT E. MENYIMPAN PERUBAHAN Perubahan rule dalam menggunakan Firewall Linux akan dihapuskan jika services iptables mengalami restart, kecuali jika Anda menjalankan perintah untuk menyimpan semua perubahan. Perintah tersebut bisa berbeda, tergantung dari distribusi yang Anda gunakan: Pada Ubuntu: sudo /sbin/iptables-save Pada Red Hat / CentOS:
/sbin/service iptables save Atau /etc/init.d/iptables save F. PERINTAH LAINNYA Menampilkan daftar dari rule iptables yang telah dikonfigurasi: iptables -L Menambahkan opsi -v akan memberikan Anda informasi packet dan byte, dan menambahkan opsi -n akan membuat semua daftar terlihat secara numerik. Dengan kata lain, nama host, protokol, dan jaringan akan didaftarkan sebagai angka. Untuk menghapus semua rule yang telah dikonfigurasi, Anda apat menggunakan perintah flush, yaitu: iptables -F Saya baru-baru ini mengalami suatu kasus yang cukup membuat saya harus sedikit memutar otak. Gara-garanya seperti ini, seperti yang kalian tahu kalau kita mempunyai sebuah proxy server dan menginginkan agar seluruh client yang browsing ke internet harus melewati proxy server terlebih dahulu adalah dengan mengetikkan perintah berikut ini : # iptables -t nat -A PREROUTING -j REDIRECT -p tcp --dport 80 --to-ports
3128 Cara diatas itu memang selalu berhasil apabila topologinya adalah seperti ini : internet-----router+proxy----client Nah, bagaimana jika topologinya adalah sebagai berikut? : internet-----(eth2)router(eth0)----(172.16.20.0/24)client (eth1:192.168.20.1) (192.168.20.2) proxy Tentunya jika kita masih menggunakan perintah Iptables yang pertama tadi, tidak akan ada efeknya. Karena disitu diperintahkan agar seluruh akses ke port 80 akan dialihkan langsung ke port 3128. Padahal di router tidak ada port 3128, karena port 3128 milik proxy berada di mesin yang lain, yaitu di pc server. Nah, solusinya bagaimana? Caranya adalah sebagai berikut : # iptables -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT # iptables -A FORWARD -p tcp -d 192.168.20.2 --dport 3128 -j ACCEPT # iptables -t nat -A PREROUTING -p tcp -s 172.16.20.0/24 --dport 80 -j DNAT --to 192.168.20.2:3128 # iptables -t nat -A POSTROUTING -p tcp -d 192.168.20.2 --dport 3128 -j MASQUERADE # iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE Sekarang coba tes, seluruh aliran data yang menuju port 80 pasti akan dialihkan terlebih dahulu menuju PC Server baru diarahkan kembali ke internet.