dalam artikel ini akan di contohkan penggunaan beberapa perintah iptables semoga dapat membantu dalam memanagement rule2 yang di inginkan

1. Hapus Rule yang ada

Sebelum Anda mulai membangun set baru aturan, Anda mungkin ingin membersihkan-up semua aturan default, dan aturan yang ada. Gunakan iptables perintah flush seperti yang ditunjukkan di bawah ini.

 iptables-F
 (Atau)
 iptables - flush

2. Set Default Chain Policy

Chain policy default ACCEPT. Rubbah ini untuk DROP semua INPUT, FORWARD, dan chain OUTPUT seperti di bawah ini.

 iptables -P INPUT DROP
 iptables -P MAJU DROP
 iptables -P OUTPUT DROP

Ketika Anda membuat kedua INPUT dan OUTPUT chain menjadi DROP, untuk setiap ke

butuhan aturan firewall yang anda miliki, kita harus mendefinisikan dua aturan. yaitu satu untuk incoming dan satu untuk outgoing.

Jika Anda percaya internal Anda, Anda dapat menghilangkan baris terakhir di atas. yaitu Jangan DROP semua paket keluar secara default. Dalam hal ini, untuk setiap kebutuhan rule firewall yang Anda miliki, Anda hanya perlu mendefinisikan hanya satu aturan. yaitu mendefinisikan aturan untuk masuk, dan keluar ACCEPT untuk semua paket.

Catatan: lehin jauh tentang CHAINS silahkan cek link berikut IPTables fundamental .

3. Memblokir ip-address Spesifik

jika ingin memblokir ip-alamat tertentu, seperti yang contoh di bawah ini. Mengubah “xxxx” dengan spesifik ip-address yang anda ingin blokir.

 BLOCK_THIS_IP = "xxxx"
 iptables -A INPUT -s "$ BLOCK_THIS_IP"-j DROP

Hal ini bermanfaat ketika menemukan beberapa kegiatan yang aneh dari ip-alamat tertentu dalam file log, dan ingin memblokir ip-address tersebut sementara saat untuk melakukan cek lebih lanjut.

Anda juga dapat menggunakan salah satu variasi berikut, yang blok hanya TCP lalu lintas pada koneksi eth0 untuk ip-address ini.

iptables -A INPUT -i eth0 -s "$ BLOCK_THIS_IP" -j DROP
iptables -A INPUT -i eth0 -p tcp -s "$ BLOCK_THIS_IP" -j DROP

4. membolehkan SEMUA SSH masuk

Aturan berikut memungkinkan semua koneksi ssh masuk pada interface eth0.

iptables -A INPUT -i eth0-p tcp --dport 22 -m state --state 
NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0-p tcp --sport 22 -m state --state 
ESTABLISHED -j ACCEPT

Catatan: lebih lanjut  Bagaimana Tambahkan IPTables Firewall

5. Izinkan SSH masuk hanya dari Jaringan tertentu

Aturan berikut memungkinkan koneksi ssh masuk hanya dari jaringan 192.168.100.X.

iptables-A INPUT-i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables-A OUTPUT-o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Dalam contoh di atas, selain  / 24, Anda juga dapat menggunakan subnet mask “192.168.100.0/255.255.255.0”.

6. Biarkan HTTP dan HTTPS masuk

Aturan berikut mengizinkan semua lalu lintas web yang masuk. lalu lintas HTTP ke port 80.

iptables -A INPUT-i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT-o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Aturan berikut mengizinkan semua  HTTPS ke port 443.

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

7. mengkombinasikan Beberapa rule bersamaan menggunakan MultiPorts

Contoh berikut ini memungkinkan semua SSH , HTTP dan HTTPS traffic.

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

8. membolehkan SSH keluar

Aturan berikut memungkinkan koneksi ssh keluar. yaitu Bila Anda ssh dari dalam ke server luar.

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

9. Memungkinkan SSH keluar hanya untuk Jaringan Tertentu

Aturan berikut memungkinkan koneksi ssh keluar hanya ke jaringan tertentu. yaitu Anda ssh hanya untuk 192.168.100.0/24 jaringan dari dalam.

 iptables -A OUTPUT -o eth0 -p tcp -d 192.168.100.0/24 --dport 22 -m state --state NEW,STABLISHED -j ACCEPT
 iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

10. Izinkan HTTPS keluar

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED-j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED-j ACCEPT

Catatan: Untuk keluar lalu lintas HTTP web, menambahkan dua aturan tambahan seperti di atas, dan mengubah 443-80.

11. Load Balancing Web

Berikut ini contoh beban menyeimbangkan HTTPS ketiga ip server yang berbeda dan memberikan beban seimbang ke server yang sesuai (menggunakan counter 0).

iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:443
iptables -A PREROUTING -i eth0 -p tcp --dport 443 -m state --state NEW -m nth --counter 0 --every 3 --packet 2 -j DNAT --to-destination 192.168.1.103:443

12. Izinkan Ping dari luar ke dalam

Aturan berikut memungkinkan pengguna di luar  dapat melakukan ping ke server .

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT 
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

13. Izinkan Ping dari dalam ke luar

Aturan berikut memungkinkan Anda untuk melakukan ping dari dalam ke salah satu server di luar.

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT 
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

14. Izinkan Loopback Access

akses loopback penuh pada server Anda. yaitu akses 127.0.0.1

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

15. Jaringan internal ke jaringan eksternal.

  iptables-A FORWARD-i eth0-o eth1-j ACCEPT

16. membolehkan DNS keluar

iptables -A OUTPUT -p udp -o eth0 –dport 53 -j ACCEPT

iptables -A INPUT -p udp -i eth0 –sport 53 -j ACCEPT

17. Biarkan Rsync Dari Jaringan Tertentu

Aturan berikut ini memungkinkan rsync hanya dari jaringan tertentu.

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

19. Izinkan koneksi MySQL hanya dari jaringan tertentu

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

20. Sendmail atau Postfix

Aturan berikut mengizinkan lalu lintas mail. sendmail atau postfix.

iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

21. Biarkan IMAP dan IMAPS

Aturan berikut mengizinkan lalu lintas IMAP/IMAP2.

iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

Aturan berikut mengizinkan lalu lintas IMAPS.

iptables -A INPUT -i eth0 -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 993 -m state --state ESTABLISHED -j ACCEPT

22. Biarkan POP3 dan POP3S

Aturan berikut memungkinkan akses POP3.

iptables -A INPUT -i eth0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

Aturan berikut memungkinkan akses POP3S.

iptables -A INPUT -i eth0 -p tcp --dport 995 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 995 -m state --state ESTABLISHED -j ACCEPT

23. Mencegah Serangan DoS

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

Dalam contoh di atas:

  • -M limit: membatasi iptables ekstensi
  • -Limit 25/minute: membatasi hanya maksimal 25 koneksi per menit. ubah nilai ini berdasarkan pada kebutuhan Anda
  • -Limit-burst 100: Nilai ini menunjukkan limit/minute berlaku setelah jumlah koneksi telah mencapai limit-burst.

24. Port Forwarding

Rute Contoh berikut semua lalu lintas yang datang ke port 442-22. Ini berarti bahwa koneksi ssh masuk dari kedua port 22 dan 422.

iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22

mengijinkan koneksi masuk pada port 422.

iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT

25. Log  Paket drop

Anda juga mungkin ingin log semua drop packet. rule ini harus di bagian paling bawah.

Pertama, ciptakan rantai baru yang disebut LOGGING.

iptables -N LOGGING

Selanjutnya, pastikan semua koneksi masuk yang tersisa  ke rantai LOGGING seperti yang ditunjukkan di bawah ini.

iptables -A INPUT -j LOGGING

Berikutnya, log paket kustom “log-prefix”.

iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

terakhir , drop paket tersebut.

 iptables -A DROP LOGGING -j