25 Aturan Firewall IPtable Berguna Yang Harus Diketahui Setiap Administrator Linux


Mengelola lalu lintas jaringan adalah salah satu pekerjaan terberat yang harus dihadapi oleh administrator sistem. Dia harus mengkonfigurasi firewall sedemikian rupa sehingga memenuhi persyaratan sistem dan pengguna untuk koneksi masuk dan keluar, tanpa membuat sistem rentan terhadap serangan.

Di sinilah iptables berguna. Iptables adalah firewall baris perintah Linux yang memungkinkan administrator sistem mengelola lalu lintas masuk dan keluar melalui serangkaian aturan tabel yang dapat dikonfigurasi.

Iptables menggunakan sekumpulan tabel yang memiliki rantai yang berisi kumpulan aturan bawaan atau yang ditentukan pengguna. Berkat mereka, administrator sistem dapat memfilter lalu lintas jaringan sistemnya dengan benar.

Berdasarkan manual iptables, saat ini ada 3 jenis tabel:

    1. FILTER – ini adalah tabel default, yang berisi rantai bawaan untuk:

      1. INPUT   – paket yang ditujukan untuk soket lokal
      2. FORWARD – paket yang dirutekan melalui sistem
      3. OUTPUT – paket yang dihasilkan secara lokal
    2. NAT – tabel yang digunakan ketika sebuah paket mencoba membuat koneksi baru. Ini memiliki bawaan sebagai berikut:

      1. PREROUTING – digunakan untuk mengubah paket segera setelah diterima
      2. OUTPUT – digunakan untuk mengubah paket yang dihasilkan secara lokal
      3. POSTROUTING – digunakan untuk mengubah paket yang akan dikirim
    3. MANGLE – tabel ini digunakan untuk mengubah paket. Hingga versi kernel 2.4 tabel ini hanya memiliki dua rantai, namun sekarang ada 5:

      1. PREROUTING – untuk mengubah koneksi masuk
      2. OUTPUT – untuk mengubah  paket yang dibuat secara lokal
      3. INPUT – untuk paket masuk
      4. POSTROUTING – untuk mengubah paket yang akan dikirim
      5. FORWARD – untuk paket yang dirutekan melalui kotak

Pada artikel ini, Anda akan melihat beberapa perintah berguna yang akan membantu Anda mengelola firewall kotak Linux Anda melalui iptables. Untuk tujuan artikel ini, saya akan memulai dengan perintah yang lebih sederhana, dan melanjutkan ke perintah yang lebih rumit hingga akhir.

1. Mulai/Hentikan/Mulai Ulang Firewall Iptables

Pertama, Anda harus mengetahui cara mengelola layanan iptables di berbagai distribusi Linux. Ini cukup mudah:

Pada Distribusi Linux berbasis SystemD

------------ On Cent/RHEL 7 and Fedora 22+ ------------
systemctl start iptables
systemctl stop iptables
systemctl restart iptables

Pada Distribusi Linux berbasis SysVinit

------------ On Cent/RHEL 6/5 and Fedora ------------
/etc/init.d/iptables start 
/etc/init.d/iptables stop
/etc/init.d/iptables restart

2. Periksa semua Aturan Firewall IPtables

Jika Anda ingin memeriksa aturan yang ada, gunakan perintah berikut:

iptables -L -n -v

Ini akan menghasilkan keluaran yang serupa dengan yang di bawah ini:

Chain INPUT (policy ACCEPT 1129K packets, 415M bytes)
 pkts bytes target prot opt in out source destination 
 0 0 ACCEPT tcp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
 0 0 ACCEPT udp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
 0 0 ACCEPT tcp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
 0 0 ACCEPT udp -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in out source destination 
 0 0 ACCEPT all -- * lxcbr0 0.0.0.0/0 0.0.0.0/0 
 0 0 ACCEPT all -- lxcbr0 * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 354K packets, 185M bytes)
 pkts bytes target prot opt in out source destination

Jika Anda lebih memilih untuk memeriksa aturan untuk tabel tertentu, Anda dapat menggunakan opsi -t diikuti dengan tabel yang ingin Anda periksa. Misalnya, untuk memeriksa aturan di tabel NAT, Anda dapat menggunakan:

iptables -t nat -L -v -n

3. Blokir Alamat IP Tertentu di IPtables Firewall

Jika Anda menemukan aktivitas yang tidak biasa atau kasar dari suatu alamat IP, Anda dapat memblokir alamat IP tersebut dengan aturan berikut:

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

Dimana Anda perlu mengubah "xxx.xxx.xxx.xxx" dengan alamat IP sebenarnya. Berhati-hatilah saat menjalankan perintah ini karena Anda dapat memblokir alamat IP Anda sendiri secara tidak sengaja. Opsi -A menambahkan aturan di akhir rantai yang dipilih.

Jika Anda hanya ingin memblokir lalu lintas TCP dari alamat IP tersebut, Anda dapat menggunakan opsi -p yang menentukan protokolnya. Dengan begitu perintahnya akan terlihat seperti ini:

iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP

4. Buka blokir Alamat IP di IPtables Firewall

Jika Anda telah memutuskan tidak ingin lagi memblokir permintaan dari alamat IP tertentu, Anda dapat menghapus aturan pemblokiran dengan perintah berikut:

iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

Opsi -D menghapus satu atau lebih aturan dari rantai yang dipilih. Jika Anda lebih suka menggunakan opsi yang lebih panjang, Anda dapat menggunakan --delete.

5. Blokir Port Tertentu pada IPtables Firewall

Terkadang Anda mungkin ingin memblokir koneksi masuk atau keluar pada port tertentu. Ini adalah langkah keamanan yang baik dan Anda harus benar-benar memikirkan hal tersebut saat menyiapkan firewall Anda.

Untuk memblokir koneksi keluar pada penggunaan port tertentu:

iptables -A OUTPUT -p tcp --dport xxx -j DROP

Untuk mengizinkan koneksi masuk gunakan:

iptables -A INPUT -p tcp --dport xxx -j ACCEPT

Dalam kedua contoh, ubah "xxx" dengan port sebenarnya yang ingin Anda izinkan. Jika Anda ingin memblokir lalu lintas UDP dan bukan TCP, cukup ubah "tcp" dengan "udp" di aturan iptables di atas.

6. Izinkan Banyak Port di IPtables menggunakan Multiport

Anda dapat mengizinkan beberapa port sekaligus, dengan menggunakan multiport, di bawah ini Anda dapat menemukan aturan tersebut untuk koneksi masuk dan keluar:

iptables -A INPUT  -p tcp -m multiport --dports 22,80,443 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT

7. Izinkan Rentang Jaringan Tertentu pada Port Tertentu di IPtables

Anda mungkin ingin membatasi koneksi tertentu pada port tertentu ke jaringan tertentu. Katakanlah Anda ingin mengizinkan koneksi keluar pada port 22 ke jaringan 192.168.100.0/24.

Anda dapat melakukannya dengan perintah ini:

iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT

8. Blokir Facebook di IPtables Firewall

Beberapa perusahaan suka memblokir akses ke Facebook bagi karyawannya. Di bawah ini adalah contoh cara memblokir lalu lintas ke Facebook.

Catatan: Jika Anda adalah administrator sistem dan perlu menerapkan aturan ini, ingatlah bahwa kolega Anda mungkin berhenti berbicara dengan Anda :)

Pertama temukan alamat IP yang digunakan oleh Facebook:

host facebook.com 
facebook.com has address 66.220.156.68
whois 66.220.156.68 | grep CIDR
CIDR: 66.220.144.0/20

Anda kemudian dapat memblokir jaringan Facebook tersebut dengan:

iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP

Perlu diingat bahwa rentang alamat IP yang digunakan oleh Facebook mungkin berbeda-beda di negara Anda.

9. Atur Port Forwarding di IPtables

Terkadang Anda mungkin ingin meneruskan lalu lintas satu layanan ke port lain. Anda dapat mencapainya dengan perintah berikut:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525

Perintah di atas meneruskan semua lalu lintas masuk pada antarmuka jaringan eth0, dari port 25 ke port 2525. Anda dapat mengubah port dengan yang Anda perlukan.

10. Blokir Banjir Jaringan di Port Apache dengan IPtables

Terkadang alamat IP mungkin meminta terlalu banyak koneksi ke port web di situs web Anda. Hal ini dapat menyebabkan sejumlah masalah dan untuk mencegah masalah tersebut, Anda dapat menggunakan aturan berikut:

iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT

Perintah di atas membatasi koneksi masuk dari per menit hingga 100 dan menetapkan batas burst hingga 200. Anda dapat mengedit limit dan limit-burst sesuai kebutuhan spesifik Anda.

11. Blokir Permintaan Ping Masuk di IPtables

Beberapa administrator sistem suka memblokir permintaan ping yang masuk karena masalah keamanan. Meskipun ancamannya tidak terlalu besar, ada baiknya mengetahui cara memblokir permintaan tersebut:

iptables -A INPUT -p icmp -i eth0 -j DROP

12. Izinkan Akses loopback

Akses loopback (akses dari 127.0.0.1) penting dan Anda harus selalu membiarkannya aktif:

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

13. Simpan Log Paket Jaringan yang Dijatuhkan di IPtables

Jika Anda ingin mencatat paket yang dijatuhkan pada antarmuka jaringan eth0, Anda dapat menggunakan perintah berikut:

iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:"

Anda dapat mengubah nilai setelah "--log-prefix" dengan sesuatu sesuai pilihan Anda. Pesan-pesan tersebut dicatat dalam /var/log/messages dan Anda dapat mencarinya dengan:

grep "IPtables dropped packets:" /var/log/messages

14. Blokir Akses ke Alamat MAC Tertentu di IPtables

Anda dapat memblokir akses ke sistem Anda dari alamat MAC tertentu dengan menggunakan:

iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

Tentu saja, Anda perlu mengubah "00:00:00:00:00:00" dengan alamat MAC sebenarnya yang ingin Anda blokir.

15. Batasi Jumlah Koneksi Bersamaan per Alamat IP

Jika Anda tidak ingin memiliki terlalu banyak koneksi bersamaan yang dibuat dari satu alamat IP pada port tertentu, Anda dapat menggunakan perintah di bawah ini:

iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

Perintah di atas mengizinkan tidak lebih dari 3 koneksi per klien. Tentu saja, Anda dapat mengubah nomor port agar sesuai dengan layanan yang berbeda. --connlimit-above juga harus diubah agar sesuai dengan kebutuhan Anda.

16. Cari dalam Aturan IPtables

Setelah Anda menentukan aturan iptables, Anda mungkin ingin menelusurinya dari waktu ke waktu dan mungkin perlu mengubahnya. Cara mudah untuk menelusuri aturan Anda adalah dengan menggunakan:

iptables -L $table -v -n | grep $string

Pada contoh di atas, Anda perlu mengubah $table dengan tabel sebenarnya yang ingin Anda cari dan $string dengan string sebenarnya yang Anda cari.

Berikut ini contohnya:

iptables -L INPUT -v -n | grep 192.168.0.100

17. Tentukan Rantai IPTable Baru

Dengan iptables, Anda dapat menentukan rantai Anda sendiri dan menyimpan aturan khusus di dalamnya. Untuk mendefinisikan rantai, gunakan:

iptables -N custom-filter

Sekarang Anda dapat memeriksa apakah filter baru Anda ada di sana:

iptables -L
Contoh Keluaran
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain custom-filter (0 references)
target prot opt source destination

18. Flush Rantai atau Aturan Firewall IPtables

Jika Anda ingin menghapus rantai firewall, Anda dapat menggunakan:

iptables -F

Anda dapat membersihkan rantai dari tabel tertentu dengan:

iptables -t nat -F

Anda dapat mengubah "nat" dengan tabel aktual yang rantainya ingin Anda hapus.

19. Simpan Aturan IPtables ke File

Jika Anda ingin menyimpan aturan firewall Anda, Anda dapat menggunakan perintah iptables-save. Anda dapat menggunakan yang berikut ini untuk menyimpan dan menyimpan aturan Anda dalam sebuah file:

iptables-save > ~/iptables.rules

Terserah Anda di mana Anda akan menyimpan file dan bagaimana Anda menamainya.

20. Mengembalikan Aturan IPtables dari File

Jika Anda ingin memulihkan daftar aturan iptables, Anda dapat menggunakan iptables-restore. Perintahnya terlihat seperti ini:

iptables-restore < ~/iptables.rules

Tentu saja jalur ke file aturan Anda mungkin berbeda.

21. Atur Aturan IPtables untuk Kepatuhan PCI

Beberapa administrator sistem mungkin diminta untuk mengonfigurasi server mereka agar kompatibel dengan PCI. Ada banyak persyaratan dari vendor kepatuhan PCI yang berbeda, namun hanya ada sedikit persyaratan umum.

Dalam banyak kasus, Anda harus memiliki lebih dari satu alamat IP. Anda perlu menerapkan aturan di bawah ini untuk alamat IP situs. Berhati-hatilah saat menggunakan aturan di bawah ini dan gunakan hanya jika Anda yakin dengan apa yang Anda lakukan:

iptables -I INPUT -d SITE -p tcp -m multiport --dports 21,25,110,143,465,587,993,995 -j DROP

Jika Anda menggunakan cPanel atau panel kontrol serupa, Anda mungkin perlu memblokir portnya juga. Berikut ini contohnya:

iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports  2082,2083,2095,2096,2525,2086,2087 -j DROP

Catatan: Untuk memastikan Anda memenuhi persyaratan vendor PCI Anda, periksa laporan mereka dengan cermat dan terapkan aturan yang diperlukan. Dalam beberapa kasus, Anda mungkin perlu memblokir lalu lintas UDP pada port tertentu juga.

22. Izinkan Koneksi yang Terbentuk dan Terkait

Karena lalu lintas jaringan terpisah antara masuk dan keluar, Anda sebaiknya mengizinkan lalu lintas masuk yang sudah ada dan terkait. Untuk koneksi masuk lakukan dengan:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Untuk penggunaan keluar:

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

23. Jatuhkan Paket Tidak Valid di IPtables

Ada kemungkinan beberapa paket jaringan ditandai sebagai tidak valid. Beberapa orang mungkin lebih memilih untuk mencatat paket-paket tersebut, namun yang lain lebih memilih untuk membuangnya. Untuk menghapus paket yang tidak valid, Anda dapat menggunakan:

iptables -A INPUT -m conntrack --ctstate INVALID -j DROP 

24. Blokir Koneksi pada Antarmuka Jaringan

Beberapa sistem mungkin memiliki lebih dari satu antarmuka jaringan. Anda dapat membatasi akses ke antarmuka jaringan tersebut atau memblokir koneksi dari alamat IP tertentu.

Misalnya:

iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP

Ubah “xxx.xxx.xxx.xxx ” dengan alamat IP (atau jaringan) sebenarnya yang ingin Anda blokir.

25. Nonaktifkan Surat Keluar melalui IPTables

Jika sistem Anda tidak mengirim email apa pun, Anda dapat memblokir port keluar pada port SMTP. Misalnya Anda dapat menggunakan ini:

iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT

Kesimpulan

Iptables adalah firewall canggih yang dapat Anda manfaatkan dengan mudah. Sangat penting bagi setiap administrator sistem untuk mempelajari setidaknya dasar-dasar iptables. Jika Anda ingin menemukan informasi lebih detail tentang iptables dan opsinya, sangat disarankan untuk membaca manualnya:

man iptables

Jika menurut Anda kami harus menambahkan lebih banyak perintah ke daftar ini, silakan bagikan dengan kami, dengan mengirimkannya di bagian komentar di bawah.