GNU/Linux >> Belajar Linux >  >> Linux

Linux IPTables:Cara Menambahkan Aturan Firewall (Dengan Contoh Izinkan SSH)

Artikel ini menjelaskan cara menambahkan aturan firewall iptables menggunakan perintah “iptables -A” (tambahkan).

"-A" adalah untuk menambahkan. Jika memudahkan Anda untuk mengingat “-A” sebagai aturan tambahan (bukan aturan tambahan), tidak apa-apa. Namun, perlu diingat bahwa “-A” menambahkan aturan di akhir rantai.

Sekali lagi, sangat penting untuk diingat bahwa -A menambahkan aturan di akhir.

Biasanya aturan terakhir adalah menghapus semua paket. Jika Anda sudah memiliki aturan untuk menghapus semua paket, dan jika Anda mencoba menggunakan "-A" dari baris perintah untuk membuat aturan baru, Anda akhirnya akan menambahkan aturan baru setelah aturan "jatuhkan semua paket" saat ini, yang akan membuat aturan baru Anda tidak berguna.

Setelah Anda menguasai iptables, dan ketika Anda menerapkannya pada produksi, Anda harus menggunakan skrip shell, di mana Anda menggunakan perintah -A untuk menambahkan semua aturan. Dalam skrip shell itu, baris terakhir Anda harus selalu menjadi aturan "jatuhkan semua paket". Saat Anda ingin menambahkan aturan baru, ubah skrip shell itu dan tambahkan aturan baru Anda di atas aturan “lepaskan semua paket”.

Sintaks:

iptables -A chain firewall-rule
  • -A chain – Tentukan rantai tempat aturan harus ditambahkan. Misalnya, gunakan rantai INPUT untuk paket masuk, dan OUTPUT untuk paket keluar.
  • firewall-rule – Berbagai parameter membentuk aturan firewall.

Jika Anda tidak tahu apa artinya rantai, Anda sebaiknya membaca tentang dasar-dasar iptables terlebih dahulu.

Parameter Aturan Firewall

Parameter berikut tersedia untuk semua jenis aturan firewall.

-p adalah untuk protokol

  • Menunjukkan protokol untuk aturan.
  • Nilai yang mungkin adalah tcp, udp, icmp
  • Gunakan "semua" untuk mengizinkan semua protokol. Bila Anda tidak menentukan -p, secara default protokol "semua" akan digunakan. Bukan praktik yang baik untuk menggunakan "semua", dan selalu menentukan protokol.
  • Gunakan nama (misalnya:tcp), atau nomor (misalnya:6 untuk tcp) untuk protokol.
  • /etc/protocols file berisi semua nama dan nomor protokol yang diizinkan.
  • Anda juga menggunakan –protokol

-s untuk sumber

  • Menunjukkan sumber paket.
  • Ini bisa berupa alamat ip, atau alamat jaringan, atau nama host
  • Misalnya:-s 192.168.1.101 menunjukkan alamat ip tertentu
  • Untuk network mask gunakan /mask. Misalnya:“-s 192.168.1.0/24” mewakili topeng jaringan 255.255.255.0 untuk jaringan itu. Ini cocok dengan jaringan 192.168.1.x.
  • Bila Anda tidak menentukan sumber, itu cocok dengan semua sumber.
  • Anda juga dapat menggunakan –src atau –source

-d untuk tujuan

  • Menunjukkan tujuan paket.
  • Ini sama dengan “-s” (kecuali ini mewakili host tujuan, atau alamat ip, atau jaringan)
  • Anda juga dapat menggunakan –dst atau –destination

-j adalah target

  • j singkatan dari "lompat ke target"
  • Ini menentukan apa yang perlu terjadi pada paket yang cocok dengan aturan firewall ini.
  • Nilai yang mungkin adalah ACCEPT, DROP, QUEUE, RETURN
  • Anda juga dapat menentukan rantai yang ditentukan pengguna lain sebagai nilai target.

-i untuk antarmuka

  • i adalah singkatan dari "antarmuka masukan"
  • Anda mungkin melihat ini dan menganggap bahwa “-i” adalah untuk antarmuka. Harap dicatat bahwa -i dan -o keduanya untuk antarmuka. Namun, -i untuk antarmuka masukan dan -o untuk antarmuka keluaran.
  • Menunjukkan antarmuka yang dilalui oleh paket-paket yang masuk melalui rantai INPUT, FORWARD, dan PREROUTING.
  • Misalnya:-i eth0 menunjukkan bahwa aturan ini harus mempertimbangkan paket masuk yang datang melalui antarmuka eth0.
  • Jika Anda tidak menentukan opsi -i, semua antarmuka yang tersedia pada sistem akan dipertimbangkan untuk paket input.
  • Anda juga dapat menggunakan –in-interface

-o untuk antarmuka luar

  • o singkatan dari "antarmuka keluaran"
  • Menunjukkan antarmuka yang digunakan untuk mengirim paket keluar melalui rantai INPUT, FORWARD, dan PREROUTING.
  • Jika Anda tidak menentukan opsi -o, semua antarmuka yang tersedia pada sistem akan dipertimbangkan untuk paket keluaran.
  • Anda juga dapat menggunakan –out-interface

Opsi Tambahan untuk Parameter Firewall

Beberapa parameter firewall di atas pada gilirannya memiliki opsi sendiri yang dapat diteruskan bersamanya. Berikut adalah beberapa opsi yang paling umum.

Untuk menggunakan opsi parameter ini, Anda harus menentukan parameter yang sesuai di aturan firewall. Misalnya, untuk menggunakan opsi “–sport”, Anda harus menetapkan parameter “-p tcp” (atau “-p udp”) di aturan firewall Anda.

Catatan:Semua opsi ini memiliki dua tanda hubung di depannya. Misalnya, ada dua tanda hubung di depan olahraga.

–sport adalah untuk port sumber (untuk -p tcp, atau -p udp)

  • Secara default, semua port sumber dicocokkan.
  • Anda dapat menentukan nomor port atau nama. Misalnya, untuk menggunakan port SSH di aturan firewall Anda, gunakan “–sport 22” atau “–sport ssh”.
  • /etc/services file berisi semua nama dan nomor port yang diizinkan.
  • Menggunakan nomor port dalam aturan lebih baik (untuk kinerja) daripada menggunakan nama port.
  • Untuk mencocokkan rentang port, gunakan titik dua. Misalnya, 22:100 cocok dengan nomor port dari 22 hingga 100.
  • Anda juga dapat menggunakan –source-port

–dport adalah untuk port tujuan (untuk -p tcp, atau -p udp)

  • Semuanya sama dengan –sport, kecuali port tujuan.
  • Anda juga dapat menggunakan –destination-port

–tcp-flags adalah untuk flag TCP (untuk -p tcp)

  • Ini dapat berisi beberapa nilai yang dipisahkan dengan koma.
  • Nilai yang mungkin adalah:SYN, ACK, FIN, RST, URG, PSH. Anda juga dapat menggunakan SEMUA atau TIDAK ADA

–icmp-type adalah untuk Tipe ICMP (untuk -p icmp)

  • Bila Anda menggunakan protokol icmp “-p icmp”, Anda juga dapat menentukan jenis ICMP menggunakan parameter “–icmp-type”.
  • Misalnya:gunakan “–icmp-type 0” untuk “Echo Reply”, dan “–icmp-type 8” untuk “Echo”.

Contoh Aturan Firewall untuk Mengizinkan Koneksi SSH Masuk

Sekarang setelah Anda memahami berbagai parameter (dan opsinya) aturan firewall, mari kita buat contoh aturan firewall.

Dalam contoh ini, mari kita izinkan hanya koneksi SSH yang masuk ke server. Semua koneksi lainnya akan diblokir (termasuk ping).

PERINGATAN:Bermain dengan aturan firewall dapat membuat sistem Anda tidak dapat diakses. Jika Anda tidak tahu apa yang Anda lakukan, Anda mungkin mengunci diri sendiri (dan semua orang) keluar dari sistem. Jadi, lakukan semua pembelajaran Anda hanya pada sistem pengujian yang tidak digunakan oleh siapa pun, dan Anda memiliki akses ke konsol untuk memulai ulang iptables, jika Anda terkunci.

1. Hapus Aturan yang Ada

Jika Anda sudah memiliki beberapa aturan iptables, lakukan backup sebelum menghapus aturan yang ada.

Hapus semua aturan yang ada dan biarkan firewall menerima semuanya. Gunakan iptables flush seperti yang telah kita bahas sebelumnya untuk membersihkan semua aturan yang ada dan memulai dari awal.

Uji untuk memastikan Anda dapat melakukan ssh dan melakukan ping ke server ini dari luar.

Ketika kami selesai dengan contoh ini, Anda hanya dapat melakukan SSH ke server ini. Anda tidak akan dapat melakukan ping ke server ini dari luar.

2. Hanya izinkan SSH

Izinkan hanya koneksi SSH yang masuk ke server ini. Anda dapat ssh ke server ini dari mana saja.

iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

Perintah iptables di atas memiliki 4 komponen berikut.

  • “-A INPUT” – Ini menunjukkan bahwa kami menambahkan aturan baru (atau menambahkan) ke rantai INPUT. Jadi, aturan ini untuk lalu lintas masuk.
  • “-i eth0” – Paket yang masuk melalui antarmuka eth0 akan diperiksa berdasarkan aturan ini.
  • “-p tcp –dport 22” – Aturan ini untuk paket TCP. Ini memiliki satu opsi tcp yang disebut “–dport 22”, yang menunjukkan bahwa port tujuan untuk aturan ini di server adalah 22 (yaitu ssh).
  • “-j ACCEPT” – Lompat untuk menerima, yang hanya MENERIMA paket.

Secara sederhana aturan di atas dapat dinyatakan sebagai:Semua paket yang masuk melalui eth0 untuk ssh akan diterima.

3. Lepaskan semua Paket Lainnya

Setelah Anda menentukan aturan khusus untuk menerima paket, Anda juga harus memiliki aturan default untuk menghapus paket lain.

Ini harus menjadi aturan terakhir Anda dalam rantai INPUT.

Untuk menjatuhkan semua paket yang masuk, lakukan hal berikut.

iptables -A INPUT -j DROP

4. Lihat aturan SSH dan Uji

Untuk melihat aturan firewall iptables saat ini, gunakan perintah “iptables -L”.

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
DROP       all  --  anywhere             anywhere

Seperti yang Anda lihat dari output di atas, ia memiliki dua aturan berikut secara berurutan.

  • Terima semua koneksi ssh yang masuk
  • Lepaskan semua paket lainnya.

Daripada menambahkan aturan firewall dari baris perintah, mungkin lebih baik membuat skrip shell yang berisi aturan Anda seperti yang ditunjukkan di bawah ini.

# vi iptables.sh
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP

# sh -x iptables.sh
+ iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
+ iptables -A INPUT -j DROP

# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
DROP       all  --  anywhere             anywhere

Mirip dengan iptables append/add command, ada beberapa perintah lain yang tersedia untuk iptables. Saya akan membahasnya di artikel mendatang dalam seri iptables. Saya juga akan memberikan beberapa contoh aturan firewall praktis yang akan membantu dalam skenario kehidupan nyata.

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
  1. Tambahkan Pengguna ke Grup di Linux, Bagaimana Melakukannya (Dengan Contoh)

  2. Bagaimana cara menambahkan shebang #! dengan skrip php di linux?

  3. Cara Mengatur Server Linux Sebagai Router dengan NAT

  1. Cara Menambahkan Aturan iptables Khusus di CSF Firewall

  2. Cara:Linux Umum – IPTables secara Umum

  3. Cara mengizinkan ssh dengan kata sandi kosong di Linux

  1. Cara Membuat Thread di Linux (Dengan Program Contoh C)

  2. Cara Masuk Linux IPTables Firewall Menjatuhkan Paket ke File Log

  3. CentOS / RHEL :Bagaimana cara menambahkan aturan iptable