Pengenalan Firewall dan IPTables

Firewall adalah sistem keamanan di komputer dimana melindungi sebuah jaringan agar aman dari ancaman yang ada di Internet.

IPTables adalah tools firewall di linux yang bisa digunakan untuk memfilter/menyaring lalu lintas jaringan yang masuk,keluar dan melewati server. Kita juga bisa menggunakan IPTables ini untuk mengelola jenis paket, port, source address, destination address dan lainnya.

IPTables memiliki sebuah tabel untuk menentukan data, di dalam sebuah tabel tersebut ada sebuah aturan yang biasa disebut chain. Berikut beberapa Tabel di IPTables:

  1. Tabel Filter
  2. Tabel NAT
  3. Tabel Mangle

Di dalam tabel Filter ada 3 Chain:

  1. Chain INPUT (Aturan paket yang masuk ke server)
  2. Chain FORWARD(Aturan paket yang melewati server)
  3. Chain OUTPUT(Aturan paket yang keluar dari server)

Di dalam tabel NAT ada 4 Chain:

  1. PREROUTING/DST-NAT (Mengubah tujuan alamat)
  2. INPUT(Aturan NAT yang masuk ke server)
  3. OUTPUT(Aturan NAT yang keluar dari server)
  4. POSTROUTING/SRC-NAT(Mengubah sumber alamat)

Di dalam tabel Mangle bisa menggunakan semua chain diatas untuk menandai sebuah paket.

Selanjutnya kita akan coba menggunakan IPTables untuk keamanan di server.

Instalasi IPTables di Linux

Lakukan dengan menggunakan user root atau dengan sudo

Debian Based

apt -y install iptables-persistent

RHEL/Centos Based

dnf -y install iptables-services

Konfigurasi Policy/Aturan Default di Chain

Secara default di semua chain paket akan di ACCEPT atau diizinkan, untuk melihat list dari iptables bisa menggunakan perintah

iptables -nvL
Firewall

Terlihat di sebelah nama chain ada policy ACCEPT berarti kita mengizinkan paket masuk, untuk mengubahnya kita gunakan perintah

iptables -P namachain ACCEPT/DROP

Contoh mengubah policy INPUT agar menjadi DROP

iptables -P INPUT DROP
IPTables

Ketika kita mengubah chain default INPUT menjadi DROP agar kita bisa mengakses si server maka diperlukan rule perizinan, jadi rule IPTables ini dibaca urut dari atas ke bawah, misal kita menambahkan rule untuk mengizinkan akses SSH

Menambah Rule di Chain Input

iptables -A INPUT -p tcp –dport 22 -j ACCEPT
Firewall

Keterangan perintah:

-A INPUTAppend atau menambah rule ke chain INPUT
-p tcpProtokol TCP
– -dportDestinasi Port
-jJump atau akses yang diberikan misal ACCEPT

Terlihat bahwa kita mengizinkan paket dengan protokol TCP dan Tujuan Port 22(SSH), untuk source addressnya 0.0.0.0/0 berarti siapa saja bisa mengakses server kita melalui koneksi SSH. Kita bisa melimit source addressnya misal hanya Network IP Tertentu yang bisa mengakses server kita, tambahkan parameter -s

iptables -A INPUT -p tcp –dport 22 -s 172.23.0.0/20 -j ACCEPT
Pengenalan firewall

Menambahkan Rule untuk mengizinkan akses web server

iptables -A INPUT -p tcp –dport 80 -j ACCEPT iptables -A INPUT -p tcp –dport 443 -j ACCEPT
Firewall

Menghapus Rule

Kita bisa menghapus langsung dengan cara menggunakan perintah kemudian ditambah -D, contoh

menghapus rule di chain INPUT yang mengizinkan akses web server

iptables -D INPUT -p tcp –dport 80 -j ACCEPT

Atau bisa juga berdasarkan nomor, untuk melihat list nomor rule di setiap chain gunakan perintah

iptables -nvL –line-number
IPTables

Terlihat ada nomor urut di setiap rule untuk menghapus rulenya cukup menggunakan perintah

iptables -D INPUT nomor

misal

iptables -D INPUT 1
Pengertian Firewall

Rule pertama berhasil dihapus

Menghapus Semua Rule Firewall di Chain

Untuk menghapus semua rule firewall bisa menggunakan perintah

iptables -F namachain

misal ingin menghapus semua rule di chain input

iptables -F INPUT
Firewall

Forward dan NAT

Forward biasanya digunakan untuk meneruskan sebuah paket bisa dari satu interface ke interface lain, di linux secara default fitur IP forwarding dimatikan, untuk mengaktifkannya kita bisa menggunakan perintah sysctl

sysctl -w net.ipv4.ip_forward=1

Perintah tadi mengaktifkan IP Forwarding saat itu juga, ketika mesin restart/mati maka IP Forwarding akan mati lagi, untuk mengaktifkan secara permanen kita bisa konfigurasi di file /etc/sysctl.conf

vi /etc/sysctl.conf ….. net.ipv4.ip_forward = 0 Ubah menjadi net.ipv4.ip_forward = 1 …..

Untuk menambah rule di chain forward berikut perintahnya

iptables -A FORWARD -i ens33 -j ACCEPT iptables -A FORWARD -o ens33 -j ACCEPT

Keterangan perintah

-A FORWARDAppend atau menambah rule di chain FORWARD
-i ens33In Interface / Di dalam interface ens33
-o ens33Out Interface /Keluar dari interface ens33
-j ACCEPTJump atau akses yang diberikan misal ACCEPT

IP Masquerade / POSTROUTING

Biasanya digunakan untuk mentranslasikan IP, dari private ke publik. Contohnya ketika klien ingin mengakses ke internet maka kita perlu menambahkan rule ini.

iptables -t nat -A POSTROUTING -o ens33 -s 172.23.2.0/24 -j MASQUERADE
IPTables

Keterangan perintah

-t natTarget NAT
-A POSTROUTINGMenambah rule ke chain POSTROUTING(src-nat)
-o ens33Out Interface/ Interface dimana paket tersebut keluar di interface ens33
-sSource Address, sumber alamat yang ingin di translasikan
-j MASQUERADEJump atau akses yang diberikan yaitu MASQUERADE

PRERouting / DNAT

Fungsinya biasanya untuk port forwarding, misal kita mau mengekspos port 80 ke External Network. Jadi semisal kita punya web server di internal network akan bisa diakses dari ip publik server

iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to 172.23.0.201:80

Jadi ketika ada klien mengakses ke server kita dengan port 80 maka akan diteruskan ke 172.23.0.201.

IPTables Log

Jadi jika kita ingin menyimpan log yang ada di IPTables kita cukup buat rule baru dengan action/jump LOG. Contohnya kita membuat log untuk semua chain INPUT

iptables  -A INPUT -j LOG
Pengertian Firewall

Dimana lokasi log nya?

Untuk log nya ada di file /var/log/kern.log

Kita gunakan perintah tail untuk melihatnya

tail -f /var/log/kern.log
IPTables

Terlihat pada gambar diatas log iptables berhasil dibaca.

Mengubah Lokasi File Log

Pastikan server sudah terinstall rsyslog

IPTables

Kemudian buat rule LOG baru(hapus yang tadi), misal kita buat seperti tadi tapi dengan tambahan parameter – – log-prefix agar log iptables mudah dikenali.

iptables -A INPUT -j LOG –log-prefix “[IPTABLES]: “
Firewall

Buat konfigurasi rsyslog baru, yang berisi seperti ini

nano /etc/rsyslog.d/10-iptables.conf :msg, contains, “[IPTABLES]: ” -/var/log/iptablesl.log & ~

Restart layanan rsyslog

systemctl restart rsyslog

Cek Log file baru

IPTables Statefull Firewall

Apa bedanya statefull firewall dengan firewall yang kita konfigurasi tadi? bedanya ada di connection tracking nya jadi di Statefull Firewall kita bisa menginspek sebuah koneksi berdasarkan connection state seperti NEW,ESTABLISHED, & RELATED

Penjelasan paket connection state:

  • NEW (Paket yang meminta koneksi baru)
  • ESTABLISHED (Paket yang sudah saling terkoneksi/saling kenal)
  • RELATED(Paket yang berhubungan dengan koneksi yang sudah ada)
  • INVALID(Paket yang tidak ada dalam connection state diatas)

Konfigurasi Statefull Firewall di IPTables

Contoh:

Mengizinkan paket baru,paket yang sudah ada, dan paket yang berhubungan dengan paket yang sudah ada untuk melakukan koneksi menuju ke server

iptables -A INPUT -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT

Mengizinkan hanya paket yang dikenali dan berhubungan/mirip saja yang diizinkan melewati server

iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT

Menyimpan Konfigurasi IPTables secara permanen

iptables-save > /etc/iptables/rules.v4

Mengembalikan Konfigurasi IPTables seperti semula(seperti file yang kita simpan tadi)

iptables-restore < /etc/iptables/rules.v4

Untuk mempelajari lebih lanjut tentang firewall, bisa mengikuti training Ubuntu Server atau Redhat

Penulis: Arya Pramudika