GNU/Linux >> Belajar Linux >  >> Linux

25 Contoh Aturan IPTables Linux yang Paling Sering Digunakan

Pada pandangan pertama, aturan IPTables mungkin terlihat samar.

Dalam artikel ini, saya telah memberikan 25 aturan praktis IPTables yang dapat Anda salin/tempel dan gunakan untuk kebutuhan Anda.

Contoh-contoh ini akan bertindak sebagai template dasar bagi Anda untuk menyesuaikan aturan ini agar sesuai dengan kebutuhan spesifik Anda.

Untuk referensi mudah, semua 25 aturan iptables ini dalam format skrip shell:iptables-rules

1. Hapus Aturan yang Ada

Sebelum Anda mulai membuat kumpulan aturan baru, Anda mungkin ingin membersihkan semua aturan default, dan aturan yang ada. Gunakan perintah flush iptables seperti yang ditunjukkan di bawah ini untuk melakukannya.

iptables -F
(or)
iptables --flush

2. Tetapkan Kebijakan Rantai Default

Kebijakan rantai default adalah ACCEPT. Ubah ini menjadi DROP untuk semua rantai INPUT, FORWARD, dan OUTPUT seperti yang ditunjukkan di bawah ini.

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Saat Anda membuat kebijakan default rantai INPUT dan OUTPUT sebagai DROP, untuk setiap persyaratan aturan firewall yang Anda miliki, Anda harus menetapkan dua aturan. yaitu satu untuk masuk dan satu untuk keluar.

Dalam semua contoh kami di bawah, kami memiliki dua aturan untuk setiap skenario, karena kami telah menetapkan DROP sebagai kebijakan default untuk rantai INPUT dan OUTPUT.

Jika Anda mempercayai pengguna internal Anda, Anda dapat menghilangkan baris terakhir di atas. yaitu Jangan DROP semua paket keluar secara default. Dalam hal ini, untuk setiap persyaratan aturan firewall yang Anda miliki, Anda hanya perlu mendefinisikan satu aturan saja. yaitu menentukan aturan hanya untuk yang masuk, karena yang keluar DITERIMA untuk semua paket.

Catatan: Jika Anda tidak tahu apa arti rantai, Anda harus terlebih dahulu membiasakan diri dengan dasar-dasar IPTables.

3. Blokir alamat ip tertentu

Sebelum kita melangkah lebih jauh akan contoh lainnya, jika Anda ingin memblokir ip-address tertentu, Anda harus melakukannya terlebih dahulu seperti gambar di bawah ini. Ubah “x.x.x.x” pada contoh berikut ke alamat ip tertentu yang ingin Anda blokir.

BLOCK_THIS_IP="x.x.x.x"
iptables -A INPUT -s "$BLOCK_THIS_IP" -j DROP

Ini berguna ketika Anda menemukan beberapa aktivitas aneh dari alamat ip tertentu di file log Anda, dan Anda ingin memblokir sementara alamat ip tersebut saat Anda melakukan penelitian lebih lanjut.

Anda juga dapat menggunakan salah satu variasi berikut, yang hanya memblokir lalu lintas TCP pada koneksi eth0 untuk alamat ip 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. Izinkan SEMUA SSH Masuk

Aturan berikut mengizinkan SEMUA koneksi ssh masuk pada antarmuka 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 :Jika Anda ingin memahami dengan tepat apa arti setiap argumen, Anda harus membaca Cara Menambahkan Aturan Firewall IPTables

5. Izinkan SSH Masuk hanya dari Jaringan Tertentu

Aturan berikut mengizinkan 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, alih-alih /24, Anda juga dapat menggunakan subnet mask lengkap. yaitu “192.168.100.0/255.255.255.0”.

6. Izinkan HTTP dan HTTPS Masuk

Aturan berikut mengizinkan semua lalu lintas web masuk. yaitu 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 lalu lintas web aman yang masuk. yaitu lalu lintas 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. Gabungkan Beberapa Aturan Bersama menggunakan MultiPort

Saat Anda mengizinkan koneksi masuk dari dunia luar ke beberapa port, alih-alih menulis aturan individual untuk setiap port, Anda dapat menggabungkannya bersama menggunakan ekstensi multiport seperti yang ditunjukkan di bawah ini.

Contoh berikut mengizinkan semua lalu lintas SSH, HTTP, dan HTTPS yang masuk.

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. Izinkan SSH Keluar

Aturan berikut mengizinkan koneksi ssh keluar. yaitu Ketika 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

Harap dicatat bahwa ini sedikit berbeda dari aturan yang masuk. yaitu Kami mengizinkan status BARU dan ESTABLISHED pada rantai OUTPUT, dan hanya status ESTABLISHED pada rantai INPUT. Untuk aturan yang masuk, sebaliknya.

9. Izinkan SSH Keluar hanya untuk Jaringan Tertentu

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

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

10. Izinkan HTTPS Keluar

Aturan berikut mengizinkan lalu lintas web aman keluar. Ini berguna ketika Anda ingin mengizinkan lalu lintas internet untuk pengguna Anda. Di server, aturan ini juga berguna saat Anda ingin menggunakan wget untuk mengunduh beberapa file dari luar.

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 lalu lintas web HTTP keluar, tambahkan dua aturan tambahan seperti di atas, dan ubah 443 menjadi 80.

11. Load Balance Lalu Lintas Web Masuk

Anda juga dapat menyeimbangkan lalu lintas web masuk menggunakan aturan firewall iptables.

Ini menggunakan ekstensi iptables n. Contoh berikut memuat keseimbangan lalu lintas HTTPS ke tiga alamat ip yang berbeda. Untuk setiap paket ke-3, beban seimbang ke server yang sesuai (menggunakan penghitung 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 luar untuk dapat melakukan ping ke server Anda.

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 melakukan ping dari dalam ke salah satu server luar.

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

14. Izinkan Akses Putar Balik

Anda harus mengizinkan akses loopback penuh di server Anda. yaitu akses menggunakan 127.0.0.1

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

15. Izinkan Jaringan Internal ke Jaringan Eksternal.

Pada server firewall di mana satu kartu ethernet terhubung ke eksternal, dan kartu ethernet lain terhubung ke server internal, gunakan aturan berikut untuk mengizinkan jaringan internal berbicara dengan jaringan eksternal.

Dalam contoh ini, eth1 terhubung ke jaringan eksternal (internet), dan eth0 terhubung ke jaringan internal (Misalnya:192.168.1.x).

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

16. Izinkan DNS keluar

Aturan berikut mengizinkan koneksi 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. Izinkan Koneksi NIS

Jika Anda menjalankan NIS untuk mengelola akun pengguna Anda, Anda harus mengizinkan koneksi NIS. Bahkan ketika koneksi SSH diizinkan, jika Anda tidak mengizinkan koneksi ypbind terkait NIS, pengguna tidak akan bisa login.

Port NIS bersifat dinamis. yaitu Ketika ypbind mulai, ypbind mengalokasikan port.

Pertama lakukan rpcinfo -p seperti yang ditunjukkan di bawah ini dan dapatkan nomor port. Dalam contoh ini, ia menggunakan port 853 dan 850.

rpcinfo -p | grep ypbind

Sekarang izinkan koneksi masuk ke port 111, dan port yang digunakan oleh ypbind.

iptables -A INPUT -p tcp --dport 111 -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
iptables -A INPUT -p tcp --dport 853 -j ACCEPT
iptables -A INPUT -p udp --dport 853 -j ACCEPT
iptables -A INPUT -p tcp --dport 850 -j ACCEPT
iptables -A INPUT -p udp --dport 850 -j ACCEPT

Hal di atas tidak akan berfungsi saat Anda me-restart ypbind, karena akan memiliki nomor port yang berbeda saat itu.

Ada dua solusi untuk ini:1) Gunakan alamat ip statis untuk NIS Anda, atau 2) Gunakan beberapa teknik skrip shell pintar untuk secara otomatis mengambil nomor port dinamis dari output perintah "rpcinfo -p", dan gunakan yang ada di atas aturan iptables.

18. Izinkan Rsync Dari Jaringan Tertentu

Aturan berikut mengizinkan 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

Jika Anda menjalankan MySQL, biasanya Anda tidak ingin mengizinkan koneksi langsung dari luar. Dalam kebanyakan kasus, Anda mungkin memiliki server web yang berjalan di server yang sama dengan tempat database MySQL dijalankan.

Namun DBA dan pengembang mungkin perlu masuk langsung ke MySQL dari laptop dan desktop mereka menggunakan klien MySQL. Dalam kasus tersebut, Anda mungkin ingin mengizinkan jaringan internal Anda untuk berbicara dengan MySQL secara langsung seperti yang ditunjukkan di bawah ini.

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. Izinkan Lalu Lintas Sendmail atau Postfix

Aturan berikut mengizinkan lalu lintas email. Bisa berupa 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. Izinkan IMAP dan IMAPS

Aturan berikut mengizinkan lalu lintas IMAP/IMAP2.

iptables -A INPUT -i eth0 -p tcp --dport 143 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 143 -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. Izinkan POP3 dan POP3S

Aturan berikut mengizinkan 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

Aturan iptables berikut akan membantu Anda mencegah serangan Denial of Service (DoS) di server web Anda.

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

Pada contoh di atas:

  • -m limit:Ini menggunakan ekstensi limit iptables
  • –batas 25/menit:Batas ini hanya maksimal 25 koneksi per menit. Ubah nilai ini berdasarkan kebutuhan spesifik Anda
  • –limit-burst 100:Nilai ini menunjukkan bahwa batas/menit akan diterapkan hanya setelah jumlah total koneksi mencapai level limit-burst.

24. Penerusan Port

Contoh berikut merutekan semua lalu lintas yang datang ke port 442 ke 22. Ini berarti koneksi ssh yang masuk dapat berasal dari 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

Jika Anda melakukan hal di atas, Anda juga perlu secara eksplisit mengizinkan 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 yang Dijatuhkan

Anda mungkin juga ingin mencatat semua paket yang dijatuhkan. Aturan ini harus berada di bagian bawah.

Pertama, buat rantai baru bernama LOGGING.

iptables -N LOGGING

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

iptables -A INPUT -j LOGGING

Selanjutnya, log paket-paket ini dengan menentukan “log-prefix” khusus.

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

Terakhir, jatuhkan paket ini.

iptables -A LOGGING -j DROP

Semua 25 aturan iptables di atas dalam format skrip shell:iptables-rules

Artikel sebelumnya dalam seri iptables:

  • Tutorial Firewall Linux:Tabel IPTables, Rantai, Dasar Aturan
  • IPTables Flush:Hapus / Hapus Semua Aturan Di RedHat dan CentOS Linux
  • Linux IPTables:Cara Menambahkan Aturan Firewall (Dengan Contoh Izinkan SSH)
  • Linux IPTables:Contoh Aturan Masuk dan Keluar (SSH dan HTTP)

Linux
  1. 40 Perintah Dasar Linux yang Sering Digunakan

  2. 7 Contoh Perintah Linux df

  3. lsof :Contoh yang paling umum digunakan

  1. 7 namespace Linux yang paling banyak digunakan

  2. [Linux]:15 Perintah YUM yang paling sering digunakan dengan contoh

  3. Perintah Linux Paling Sederhana Dengan 10 Contoh

  1. Cara Mengkonfigurasi Firewall iptables Di Linux

  2. Cara Menemukan Perintah Paling Banyak Digunakan Di Linux

  3. 80 Aplikasi Linux Esensial Paling Banyak Digunakan Tahun 2021