Seri RHCSA: Esensi Firewall dan Kontrol Lalu Lintas Jaringan Menggunakan FirewallD dan Iptables - Bagian 11


Dengan kata sederhana, firewall adalah sistem keamanan yang mengontrol lalu lintas masuk dan keluar dalam jaringan berdasarkan serangkaian aturan yang telah ditentukan (seperti tujuan/sumber paket atau jenis lalu lintas, misalnya) .

Dalam artikel ini kita akan meninjau dasar-dasar firewalld, daemon firewall dinamis default di Red Hat Enterprise Linux 7, dan layanan iptables, layanan lama layanan firewall untuk Linux, yang sudah dikenal baik oleh sebagian besar administrator sistem dan jaringan, dan juga tersedia di RHEL 7.

Perbandingan Antara FirewallD dan Iptables

Di balik terpalnya, baik layanan firewalld dan iptables berkomunikasi dengan kerangka kerja netfilter di kernel melalui antarmuka yang sama, tidak mengherankan jika perintah iptables . Namun, berbeda dengan layanan iptables, firewalld dapat mengubah pengaturan selama pengoperasian sistem normal tanpa kehilangan koneksi yang ada.

Firewalld harus diinstal secara default di sistem RHEL Anda, meskipun mungkin tidak berjalan. Anda dapat memverifikasi dengan perintah berikut (firewall-config adalah alat konfigurasi antarmuka pengguna):


yum info firewalld firewall-config

Dan,


systemctl status -l firewalld.service

Di sisi lain, layanan iptables tidak disertakan secara default, namun dapat diinstal melaluinya.


yum update && yum install iptables-services

Kedua daemon dapat dimulai dan diaktifkan untuk memulai saat boot dengan perintah systemd yang biasa:


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Baca Juga: Perintah Berguna untuk Mengelola Layanan Systemd

Sedangkan untuk file konfigurasi, layanan iptables menggunakan /etc/sysconfig/iptables (yang tidak akan ada jika paket tidak diinstal di sistem Anda). Pada kotak RHEL 7 yang digunakan sebagai node cluster, file ini terlihat sebagai berikut:

Sedangkan firewalld menyimpan konfigurasinya di dua direktori, /usr/lib/firewalld dan /etc/firewalld:


ls /usr/lib/firewalld /etc/firewalld

Kami akan memeriksa file konfigurasi ini lebih lanjut nanti di artikel ini, setelah kami menambahkan beberapa aturan di sana-sini. Sekarang cukuplah untuk mengingatkan Anda bahwa Anda selalu dapat menemukan informasi lebih lanjut tentang kedua alat tersebut.


man firewalld.conf
man firewall-cmd
man iptables

Selain itu, ingatlah untuk melihat Meninjau Perintah Penting & Dokumentasi Sistem – Bagian 1 dari seri saat ini, di mana saya menjelaskan beberapa sumber di mana Anda bisa mendapatkan informasi tentang paket yang diinstal pada sistem RHEL 7 Anda .

Menggunakan Iptables untuk Mengontrol Lalu Lintas Jaringan

Anda mungkin ingin merujuk ke Konfigurasi Firewall Iptables – Bagian 8 dari seri Linux Foundation Certified Engineer (LFCE) untuk menyegarkan ingatan Anda tentang internal iptables sebelum melanjutkan lebih jauh. Dengan demikian, kita akan dapat langsung melihat contoh-contohnya.

Contoh 1: Mengizinkan lalu lintas web masuk dan keluar

Port TCP 80 dan 443 adalah port default yang digunakan oleh server web Apache untuk menangani normal (HTTP) dan aman (HTTPS<) lalu lintas web. Anda dapat mengizinkan lalu lintas web masuk dan keluar melalui kedua port pada antarmuka enp0s3 sebagai berikut:


iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Contoh 2: Blokir semua (atau beberapa) koneksi masuk dari jaringan tertentu

Mungkin ada saatnya Anda perlu memblokir semua (atau beberapa) jenis lalu lintas yang berasal dari jaringan tertentu, misalnya 192.168.1.0/24:


iptables -I INPUT -s 192.168.1.0/24 -j DROP

akan menghapus semua paket yang berasal dari jaringan 192.168.1.0/24, sedangkan,


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

hanya akan mengizinkan lalu lintas masuk melalui port 22.

Contoh 3: Mengalihkan lalu lintas masuk ke tujuan lain

Jika Anda menggunakan kotak RHEL 7 tidak hanya sebagai firewall perangkat lunak, namun juga sebagai firewall berbasis perangkat keras, sehingga berada di antara dua jaringan berbeda, penerusan IP harus sudah diaktifkan di sistem Anda . Jika tidak, Anda perlu mengedit /etc/sysctl.conf dan menetapkan nilai net.ipv4.ip_forward menjadi 1, sebagai berikut:


net.ipv4.ip_forward = 1

lalu simpan perubahannya, tutup editor teks Anda dan terakhir jalankan perintah berikut untuk menerapkan perubahan:


sysctl -p /etc/sysctl.conf

Misalnya, Anda mungkin memasang printer pada kotak internal dengan IP 192.168.0.10, dengan layanan CUPS mendengarkan pada port 631 (keduanya di server cetak dan di firewall Anda). Untuk meneruskan permintaan pencetakan dari klien di sisi lain firewall, Anda harus menambahkan aturan iptables berikut:


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

Harap diingat bahwa iptables membaca aturannya secara berurutan, jadi pastikan kebijakan default atau aturan selanjutnya tidak mengesampingkan kebijakan yang diuraikan dalam contoh di atas.

Memulai dengan FirewallD

Salah satu perubahan yang diperkenalkan dengan firewalld adalah zona. Konsep ini memungkinkan untuk memisahkan jaringan ke dalam zona berbeda dengan tingkat kepercayaan yang telah diputuskan pengguna untuk ditempatkan pada perangkat dan lalu lintas dalam jaringan tersebut.

Untuk membuat daftar zona aktif:


firewall-cmd --get-active-zones

Pada contoh di bawah, zona publik aktif, dan antarmuka enp0s3 telah ditetapkan ke zona tersebut secara otomatis. Untuk melihat semua informasi tentang zona tertentu:


firewall-cmd --zone=public --list-all

Karena Anda dapat membaca selengkapnya tentang zona di panduan Keamanan RHEL 7, kami hanya akan mencantumkan beberapa contoh spesifik di sini.

Contoh 4: Mengizinkan layanan melalui firewall

Untuk mendapatkan daftar layanan yang didukung, gunakan.


firewall-cmd --get-services

Untuk mengizinkan lalu lintas web http dan https melalui firewall, berlaku segera dan pada boot berikutnya:


firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload

Jika kode>–zona dihilangkan, zona default (Anda dapat memeriksanya dengan firewall-cmd –get-default-zone) yang digunakan.

Untuk menghapus aturan tersebut, ganti kata tambah dengan hapus pada perintah di atas.

Contoh 5: Penerusan IP/Port

Pertama, Anda perlu mencari tahu apakah penyamaran diaktifkan untuk zona yang diinginkan:


firewall-cmd --zone=MyZone --query-masquerade

Pada gambar di bawah, kita dapat melihat bahwa penyamaran diaktifkan untuk zona eksternal, namun tidak untuk publik:

Anda dapat mengaktifkan penyamaran untuk publik:


firewall-cmd --zone=public --add-masquerade

atau gunakan penyamaran di eksternal. Inilah yang akan kami lakukan untuk mereplikasi Contoh 3 dengan firewalld:


firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

Dan jangan lupa memuat ulang firewall.

Anda dapat menemukan contoh lebih lanjut di Bagian 9 dari seri RHCSA, di mana kami menjelaskan cara mengizinkan atau menonaktifkan port yang biasanya digunakan oleh server web dan server ftp, dan cara mengubah aturan terkait ketika port default untuk layanan tersebut diubah. Selain itu, Anda mungkin ingin merujuk ke wiki firewalld untuk contoh lebih lanjut.

Baca Juga: Contoh FirewallD yang Berguna untuk Mengonfigurasi Firewall di RHEL 7

Kesimpulan

Dalam artikel ini kami telah menjelaskan apa itu firewall, layanan apa saja yang tersedia untuk mengimplementasikannya di RHEL 7, dan memberikan beberapa contoh yang dapat membantu Anda memulainya tugas. Jika Anda memiliki komentar, saran, atau pertanyaan, silakan beri tahu kami menggunakan formulir di bawah. Terima kasih sebelumnya!