GNU/Linux >> Belajar Linux >  >> Linux

Lembar contekan perintah IPtables

Ringkasan

IPtables adalah salah satu firewall yang paling terkenal (dan juga cukup efektif) yang juga hadir di banyak distro Linux yang sudah diinstal sebelumnya secara default. Tujuan dari posting ini adalah untuk bertindak sebagai lembar contekan perintah Iptables, mengingat betapa kuatnya Iptables, ia juga memiliki banyak perintah untuk banyak skenario jaringan. Iptables menggunakan berbagai aturan tabel yang berbeda dengan beberapa rantai untuk memblokir dan mengizinkan lalu lintas:

  • FILTER: ini adalah tabel default yang dimaksudkan untuk memfilter aturan lalu lintas
    • MASUKKAN :Di bawah rantai input, kami mendefinisikan aturan dan perilaku untuk mengontrol koneksi masuk.
    • OUTPUT :Di bawah rantai keluaran, kami mengontrol koneksi keluar
    • MAJU :seperti namanya, KAMI menggunakan rantai maju untuk menentukan koneksi masuk yang akan kami arahkan segera ke rute, alamat, atau port lain (teruskan). Penerusan biasanya digunakan bersama dengan NAT.
  • NAT – tabel terjemahan alamat jaringan yang digunakan untuk memetakan beberapa sumber lalu lintas lokal ke koneksi keluar untuk membuat rute baru. Tabel NAT memiliki aturan rantai berikut termasuk:
    • PREOUTING – digunakan untuk mengontrol/memodifikasi paket segera setelah tiba (koneksi masuk)
    • OUTPUT – digunakan untuk memodifikasi paket yang dibuat secara lokal
    • POSTROUTING – digunakan untuk mengontrol/memodifikasi paket segera setelah paket akan keluar (koneksi keluar)
  • MANGLE – tabel mangle digunakan untuk modifikasi paket atau pengubahan paket. Tabel Mangle memiliki 5 aturan rantai:
    • PREOUTING – untuk mengubah koneksi masuk
    • OUTPUT – untuk mengubah paket yang dibuat secara lokal
    • MASUKKAN – untuk paket masuk
    • POSTROUTING – untuk mengubah paket saat akan keluar
    • MAJU – untuk paket yang dirutekan melalui kotak (atau perlu diteruskan ke koneksi/rute baru)

Untuk lembar contekan ini ada repo github dengan versi yang dapat diunduh di .pdf:LINK

Perintah IPtables

Cara menampilkan aturan firewall

– Tampilkan semua aturan

# iptables -L

– Menampilkan semua aturan dengan nomor baris

# iptables -L --line-numbers

– Menampilkan semua aturan dengan keluaran verbose dari paket aktif

# iptables -n -L -v

-Menampilkan aturan untuk rantai NAT

# iptables -t nat -L

Opsi output/tampilan ini juga dapat digabungkan dengan perintah tampilan lain, seperti:

# iptables -t nat -L --line-numbers

– Menampilkan aturan untuk aturan rantai tertentu

# iptables -L INPUT

– Aturan tampilan tetapi dengan spesifikasi rantai

# iptables -S INPUT

-Menampilkan aturan untuk rantai dan dengan paket aktif

# iptables -S INPUT -v

Cara menghapus dan menambahkan aturan

– Menghapus aturan dengan nomor baris

# iptables -D INPUT 10

– Menghapus aturan dengan spesifikasi

# iptables -D INPUT -m conntrack --ctstate

– Hapus semua rantai (hapus semua aturan rantai)

# iptables -F

– Siram satu rantai

# iptables -F INPUT
# Iptables -t nat -F
# Iptables -t mangle -F

– Tambahkan rantai baru

# iptables -N custom-filter

– Tambahkan aturan baru

# iptables -I INPUT -s 123.123.123.133 -j DROP
# iptables -A INPUT -p tcp --dport 22 -j REJECT

Catatan tentang menambahkan aturan – seperti yang Anda lihat di sini, kami memiliki dua aturan berbeda dengan opsi berbeda. Perhatikan opsi yang ditentukan pertama tepat setelah iptables:-I dan -A.
Opsi ini memberi tahu Anda di mana aturan akan ditempatkan di tabel, di awal (opsi -I) aturan rantai atau di bottom (-A).
Iptables membaca aturan dengan pergi dari aturan pertama di bagian atas rantai kemudian turun ke bawah dan menerapkannya dalam urutan itu.

Contoh dan perintah IPtables yang paling umum digunakan

Blokir lalu lintas

– Memblokir alamat IP untuk memiliki akses masuk

# iptables -A INPUT -s 192.168.100.1 -j DROP

– Memblokir subnet IP tertentu untuk masuk

# iptables -A INPUT -s 192.168.1.100/24 -j DROP

– Memblokir alamat IP untuk menolak semua paket

# iptables -A INPUT -s 192.168.1.100 -j REJECT

– Memblokir alamat IP ke antarmuka jaringan tertentu saat masuk

# iptables -A INPUT -i eth0 -s 192.168.1.102 -j DROP

– Hanya memblokir lalu lintas TCP untuk alamat IP atau rentang IP tertentu

# iptables -A INPUT -p tcp -s 192.168.1.100 -j DROP
# iptables -A INPUT -p tcp -s 192.168.1.100/24 -j DROP

– Turunkan lalu lintas untuk port tertentu (tutup port)

# iptables -A INPUT -p tcp --dport xxx -j DROP
# iptables -A INPUT -p tcp --dport 22 -j DROP

– Jatuhkan semua paket jaringan yang tidak valid saat masuk

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

Izinkan lalu lintas atau buka port dengan IPtables

– Izinkan lalu lintas (masuk dan keluar) di SSH

# iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Catatan :untuk memblokir lalu lintas di port ini, ubah opsi ACCEPT menjadi DROP

– Izinkan IP atau rentang jaringan tertentu pada SSH masuk (hapus CIDR untuk menyetel IP saja)

# iptables -A INPUT -p tcp -s 192.168.1.100/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Catatan :Konfigurasi yang sama untuk jangkauan jaringan dapat diterapkan pada aturan masuk lainnya yang tercantum di bawah

Catatan :untuk memblokir lalu lintas di port ini, ubah opsi ACCEPT menjadi DROP

– Izinkan lalu lintas di HTTP dan HTTPS (masuk dan keluar)

# iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
# iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

– Konfigurasi multiport

# iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Catatan:untuk memblokir lalu lintas di port ini, ubah opsi ACCEPT menjadi DROP

– Izinkan lalu lintas di MySQL 

# iptables -A INPUT -p tcp -s 192.168.1.100/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

– Izinkan lalu lintas MySQL ke antarmuka jaringan tertentu

# iptables -A INPUT -i eth1 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -o eth1 -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

– Izinkan lalu lintas PostgreSQL

# iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT

– Izinkan lalu lintas PostgreSQL ke antarmuka jaringan tertentu

# iptables -A INPUT -i eth1 -p tcp --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -o eth1 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT

– Izinkan masuk di SMTP/IMAP/IMAPS/POP3/POP3S/

SMPT
# iptables -A INPUT -p tcp --dport 25 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 25 -m conntrack --ctstate ESTABLISHED -j ACCEPT

IMAP
# iptables -A INPUT -p tcp --dport 143 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 143 -m conntrack --ctstate ESTABLISHED -j ACCEPT

IMAPS
# iptables -A INPUT -p tcp --dport 993 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 993 -m conntrack --ctstate ESTABLISHED -j ACCEPT

POP3
# iptables -A INPUT -p tcp --dport 110 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 110 -m conntrack --ctstate ESTABLISHED -j ACCEPT

POP3S
# iptables -A INPUT -p tcp --dport 995 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 995 -m conntrack --ctstate ESTABLISHED -j ACCEPT

– Cara mengonfigurasi penerusan port di IPtables

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

Perintah ini misalnya akan mengalihkan semua lalu lintas masuk di eth0 port dari port 25 ke port 2525

Parameter ini di sini juga digunakan sebagai contoh. Apa yang akan dicapai di sini adalah – pada port 80, semua yang masuk akan dibatasi/dikurangi menjadi 100 koneksi yang sudah ada per menit dan menetapkan batas 200 paket yang cocok.

– Memblokir permintaan ping masuk

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

– Memblokir atau mengizinkan akses untuk alamat mac tertentu

# iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP
# iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT

– Izinkan akses loopback

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

– Batasi jumlah koneksi bersamaan per alamat IP

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

Perintah di atas akan membatasi jumlah koneksi ke port 22(ssh) dan tidak mengizinkan lebih dari koneksi per klien. Nomor port tentu saja dapat diubah.

Log paket yang dijatuhkan

# iptables -A INPUT -i eth0 -j LOG --log-prefix "Dropped packets:"

Anda dapat mengubah –log-prefix sesuai pilihan Anda. Log dapat dicari dengan perintah berikut:

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

– Log paket yang dijatuhkan dari jangkauan jaringan tertentu

# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: "

– Cara mencari entri/aturan dalam IPtables dengan grep

# iptables -L INPUT -v -n | grep 192.168.0.100

Iptables memerintahkan untuk mencegah serangan cyber yang lebih canggih

– Cara memblokir banjir jaringan pada port http

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

– Mengonfigurasi perlindungan pemindaian port

# iptables -N port-scanning
# iptables -A port-scanning -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s --limit-burst 2 -j RETURN
# iptables -A port-scanning -j DROP

– Perlindungan brute force untuk SSH

# iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --set
# iptables -A INPUT -p tcp --dport ssh -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 10 -j DROP

– Perlindungan terhadap serangan banjir SYN

# iptables -N syn_flood
# iptables -A INPUT -p tcp --syn -j syn_flood
# iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
# iptables -A syn_flood -j DROPiptables -A INPUT -p icmp -m limit --limit  1/s --limit-burst 1 -j ACCEPT
# iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j LOG --log-prefix PING-DROP:
# iptables -A INPUT -p icmp -j DROPiptables -A OUTPUT -p icmp -j ACCEPT

– Mengurangi serangan banjir SYN dengan SYNPROXY

# iptables -t raw -A PREROUTING -p tcp -m tcp --syn -j CT --notrack
# iptables -A INPUT -p tcp -m tcp -m conntrack --ctstate INVALID,UNTRACKED -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460
# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

– Memblokir paket masuk yang bukan SYN

# iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

– Memaksa fragmen memeriksa semua paket saat masuk

# iptables -A INPUT -f -j DROP

– Blokir semua paket yang masuk untuk mencegah serangan paket XMAS

# iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

– Blokir semua paket NULL saat masuk

# iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

– Mencegat dan menjatuhkan semua paket dengan flag TCP palsu

# iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,FIN FIN -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL ALL -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j DROP
# iptables -t mangle -A PREROUTING -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

– Simpan aturan IPtables ke file dan pulihkan

# iptables-save > ~/iptables.rules
# iptables-restore < ~/iptables.rules

– Simpan aturan IPtables secara permanen dengan netfilter

Catatan:membutuhkan plugin iptables “iptables-persistent” untuk dipasang. Dapat menginstalnya dengan “apt install iptables-persistent” di distro Debian/Ubuntu.

# netfilter-persistent save

Ringkasan

Untuk meringkas posting – kami menyusun daftar daftar contekan perintah IPtables dengan beberapa aturan paling umum cara mengkonfigurasi IPtables untuk berbagai kasus penggunaan (memiliki beberapa aturan izinkan dan lepas yang digunakan setiap hari untuk banyak layanan web dan layanan yang bekerja melalui jaringan ) dan juga mencantumkan beberapa perintah IPtables lanjutan yang dapat mencegah berbagai serangan cyber.

Meskipun iptables adalah firewall yang luar biasa, berhati-hatilah dengan aturan yang Anda terapkan.


Linux
  1. Perintah Docker Lembar Cheat Referensi Cepat

  2. Restart Berbagai Perintah Layanan Cheat Sheet

  3. Lembar Cheat Perintah Yum

  1. Lembar contekan untuk perintah umum Linux

  2. Memperkenalkan lembar contekan Groff Macros

  3. Lembar Cheat Perintah Linux

  1. Cara Menggunakan Tmux + Cheat Sheet

  2. Perintah vi dasar (lembar contekan)

  3. Lembar Cheat Perintah Dasar Linux