Pengendalian Akses Sistem oleh firewalld

Richard Gregory, Petr Bokoc (pbokoc), Peter Boy (pboy) Versi F34 onwards Last review: 2023-08-23
Sebuah firewall adalah cara untuk melindungi mesin dari akses yang tidak diinginkan dari luar. Di Fedora, firewall diinstal secara default selama proses instalasi sistem operasi, diaktifkan, dan dikonfigurasi untuk memastikan operasi yang aman bahkan tanpa tindakan tambahan dari administrator. Secara default, firewall ini memblokir semua akses kecuali SSH.

Bagaimana cara kerjanya

Firewall memungkinkan pengguna untuk mengontrol lalu lintas jaringan masuk pada mesin host dengan mendefinisikan serangkaian aturan firewall. Aturan-aturan ini digunakan untuk menyortir lalu lintas masuk dan memblokirnya atau mengizinkannya melewati.

firewalld adalah daemon layanan firewall yang menyediakan firewall berbasis host yang dinamis dan dapat disesuaikan dengan antarmuka D-Bus. Karena sifatnya yang dinamis, daemon ini memungkinkan pembuatan, perubahan, dan penghapusan aturan tanpa perlu me-restart daemon firewall setiap kali aturan diubah.

firewalld menggunakan konsep zona dan layanan, yang mempermudah pengelolaan lalu lintas.

Zones adalah kumpulan aturan yang telah ditentukan sebelumnya. Antarmuka jaringan dan sumber dapat ditugaskan ke suatu zona. Lalu lintas yang diizinkan bergantung pada jaringan yang terhubung ke komputer Anda dan tingkat keamanan yang ditetapkan untuk jaringan tersebut. Layanan firewall adalah aturan yang telah ditentukan sebelumnya yang mencakup semua pengaturan yang diperlukan untuk mengizinkan lalu lintas masuk untuk layanan tertentu, dan aturan ini berlaku di dalam suatu zona.

Services menggunakan satu atau lebih port atau alamat untuk komunikasi jaringan. Tembok api (firewall) menyaring komunikasi berdasarkan port. Untuk mengizinkan lalu lintas jaringan untuk suatu layanan, port-portnya harus dibuka. firewalld memblokir semua lalu lintas pada port yang tidak secara eksplisit ditetapkan sebagai terbuka. Beberapa zona, seperti zona tepercaya (trusted), mengizinkan semua lalu lintas secara default.

Sumber daya tambahan

Untuk informasi lebih lanjut tentang penggunaan firewalld dan konfigurasi zona serta layanan, lihat Dokumentasi firewalld atau Wiki Fedora: firewalld

Mengonfigurasi firewalld

Semua edisi Fedora menginstal, mengonfigurasi, dan mengaktifkan firewall secara default. Tidak diperlukan tindakan lebih lanjut. Satu-satunya pengecualian adalah Cloud Edition, yang bergantung pada sistem cloud tingkat atas.

Beberapa varian dan redistribusi pihak ketiga mungkin berbeda. Dalam hal ini, administrator bertanggung jawab untuk menginstal dan mengaktifkan firewall setelahnya.

Anda memeriksa apakah firewalld telah dikonfigurasi di terminal dengan menjalankan perintah

systemctl status firewalld

Anda sebaiknya mendapatkan sesuatu seperti

● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset>
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: active (running) since Sat 2023-08-19 19:05:18 CEST; 3 days ago
     ...

Menginstal dan mengaktifkan firewalld

Jika Anda menjalankan perintah di atas, Anda mungkin akan mendapatkan sesuatu seperti

Unit firewalld.service tidak dapat ditemukan.

Anda harus menginstalnya. Jalankan di baris perintah:

$ sudo dnf install firewalld
$ sudo systemctl unmask firewalld
$ sudo systemctl start firewalld
$ sudo systemctl enable firewalld

Urutan ini menginstal, memulai, dan memastikan restart otomatis setelah sistem boot.

Menyesuaikan operasi firewalld selama pemeliharaan sistem

Terkadang seorang administrator sistem perlu menghentikan atau me-restart firewalld selama tugas pemeliharaan sistem.

Matikan firewalld
$ sudo systemctl stop firewalld
Mencegah program berjalan otomatis saat sistem boot
$ sudo systemctl disable firewalld
Mulai firewalld
$ sudo systemctl start firewalld
Aktifkan autostart saat sistem boot
$ sudo systemctl enable firewalld
Memutuskan koneksi firewall dari pengontrol d-bus
$ sudo systemctl mask firewalld
Hubungkan kembali firewall ke pengontrol d-bus
$ sudo systemctl unmask firewalld

Menginstal alat konfigurasi antarmuka pengguna (GUI) firewall-config

Untuk menggunakan alat konfigurasi antarmuka pengguna grafis (GUI) firewall-config, instal paket firewall-config sebagai root:

$ sudo dnf install firewall-config

Alternatifnya, di GNOME, tekan tombol Super dan ketik Software untuk membuka aplikasi Software Sources. Ketik firewall ke kotak pencarian, yang muncul setelah Anda mengklik tombol pencarian di pojok kanan atas. Pilih item Firewall dari hasil pencarian, lalu klik tombol Install.

Untuk menjalankan firewall-config, gunakan perintah firewall-config atau tekan tombol Super untuk masuk ke Activities Overview, ketik firewall, dan tekan tombol Enter.

Mengelola firewalld

Melihat status saat ini dari firewalld

Layanan firewall, firewalld, sudah terpasang secara default pada sistem. Gunakan antarmuka baris perintah (CLI) firewalld untuk memeriksa apakah layanan tersebut sedang berjalan.

$ sudo firewall-cmd --state

Untuk informasi lebih lanjut tentang status layanan, gunakan perintah systemctl.

$ sudo systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor pr
   Active: active (running) since Mon 2017-12-18 16:05:15 CET; 50min ago
     Docs: man:firewalld(1)
 Main PID: 705 (firewalld)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/firewalld.service
           └─705 /usr/bin/python3 -Es /usr/sbin/firewalld --nofork --nopid

Selain itu, penting untuk mengetahui bagaimana firewalld dikonfigurasi dan aturan mana yang berlaku sebelum Anda mencoba mengedit pengaturannya. Untuk menampilkan pengaturan firewall, lihat Melihat pengaturan firewalld saat ini

Melihat pengaturan firewalld saat ini

Melihat layanan yang diizinkan menggunakan antarmuka grafis (GUI)

Untuk melihat daftar layanan menggunakan alat grafis firewall-config, tekan tombol Super untuk masuk ke Ringkasan Aktivitas, ketik perintah firewall, dan tekan tombol Enter. Alat firewall-config akan muncul. Anda sekarang dapat melihat daftar layanan di bawah tab Services.

Sebagai alternatif, untuk memulai alat konfigurasi firewall grafis menggunakan baris perintah, masukkan perintah berikut:

$ firewall-config

Jendela Konfigurasi Firewall terbuka. Perhatikan bahwa perintah ini dapat dijalankan sebagai pengguna biasa, tetapi Anda akan diminta untuk memasukkan kata sandi administrator sesekali.

Melihat pengaturan firewalld menggunakan CLI

Dengan klien CLI, Anda dapat melihat berbagai tampilan pengaturan firewall saat ini. Opsi --list-all menampilkan ringkasan lengkap pengaturan firewalld.

firewalld menggunakan zona untuk mengelola lalu lintas. Jika zona tidak ditentukan oleh opsi --zone, perintah tersebut berlaku di zona default yang ditugaskan ke antarmuka jaringan aktif dan koneksi.

Untuk mencantumkan semua informasi yang relevan untuk zona default:

$ firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Untuk menentukan zona yang akan ditampilkan pengaturannya, tambahkan argumen --zone=zone-name ke perintah firewall-cmd --list-all, misalnya:

~]# firewall-cmd --list-all --zone=home
home
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh mdns samba-client dhcpv6-client
... [output truncated]

Untuk melihat pengaturan untuk informasi tertentu, seperti layanan atau port, gunakan opsi khusus. Lihat halaman manual firewalld atau dapatkan daftar opsi menggunakan perintah help:

$ firewall-cmd --help

Penggunaan: firewall-cmd [OPSI...]

Opsi Umum
-h, --help Menampilkan teks bantuan singkat dan keluar
-V, --version Menampilkan string versi firewalld
-q, --quiet Tidak menampilkan pesan status

Opsi Status
--state Menampilkan dan mencetak status firewalld
--reload Memuat ulang firewall dan mempertahankan informasi status...
 [output dipotong]

Misalnya, untuk melihat layanan apa saja yang diizinkan di zona saat ini:

$ firewall-cmd --list-services
samba-client ssh dhcpv6-client

Menampilkan pengaturan untuk suatu subbagian menggunakan alat CLI terkadang sulit untuk diinterpretasikan. Misalnya, Anda mengizinkan layanan SSH dan firewalld membuka port yang diperlukan (22) untuk layanan tersebut. Kemudian, jika Anda menampilkan layanan yang diizinkan, daftar tersebut menampilkan layanan SSH, tetapi jika Anda menampilkan port yang terbuka, tidak ada yang ditampilkan. Oleh karena itu, disarankan untuk menggunakan opsi --list-all agar Anda mendapatkan informasi yang lengkap.

Pengaturan runtime dan pengaturan permanen

Perubahan apa pun yang dilakukan saat firewalld sedang berjalan akan hilang saat firewalld di-restart. Saat firewalld di-restart, pengaturan akan kembali ke nilai permanennya.

Perubahan ini dikatakan dilakukan dalam mode runtime.

Untuk membuat perubahan tetap berlaku setelah reboot, terapkan kembali perubahan tersebut menggunakan opsi --permanent. Sebagai alternatif, untuk membuat perubahan tetap berlaku saat firewalld sedang berjalan, gunakan opsi --runtime-to-permanent firewall-cmd.

Jika Anda melakukan perubahan saat firewalld sedang berjalan menggunakan opsi --permanent saja, perubahan tersebut tidak akan berlaku hingga firewalld di-restart. Namun, me-restart firewalld akan menghentikan sementara lalu lintas jaringan, yang dapat menyebabkan gangguan pada sistem Anda.

Mengubah pengaturan dalam runtime dan konfigurasi permanen menggunakan CLI

Menggunakan CLI, Anda hanya dapat mengubah mode runtime atau mode permanen. Untuk mengubah pengaturan firewall dalam mode permanen, gunakan opsi --permanent bersama perintah firewall-cmd.

$ sudo firewall-cmd --permanent <other options>

Tanpa opsi ini, perintah akan mengubah mode runtime. Untuk mengubah pengaturan di kedua mode, Anda dapat menggunakan dua metode:

  • Ubah pengaturan runtime dan kemudian jadikan permanen sebagai berikut:

    1. Ubah pengaturan runtime:

      firewall-cmd <other options>

    2. Gunakan --runtime-to-permanent untuk membuat perubahan menjadi permanen.

      firewall-cmd --runtime-to-permanent

  • Atur pengaturan permanen dan muat ulang pengaturan ke mode runtime:

    1. Lakukan perubahan dalam mode permanen:

      firewall-cmd --permanent <other options>

    2. Muat ulang pengaturan:

      firewall-cmd --reload

Metode pertama memungkinkan Anda untuk menguji pengaturan sebelum menerapkannya ke mode permanen.

Ada kemungkinan pengaturan yang salah dapat menyebabkan pengguna terkunci dari mesin. Untuk mencegah hal ini, gunakan opsi --timeout. Penggunaan opsi ini berarti bahwa setelah waktu yang ditentukan, perubahan apa pun akan kembali ke keadaan sebelumnya. Anda tidak dapat menggunakan opsi --permanent bersama dengan opsi --timeout.

Misalnya, untuk menambahkan layanan SSH selama 15 menit, gunakan perintah berikut:

$ sudo firewall-cmd --add-service=ssh --timeout 15m

Layanan SSH akan tersedia hingga akses dihapus setelah 15 menit.

Mengontrol port menggunakan firewalld

Apa itu port?

Port adalah perangkat logis yang memungkinkan sistem operasi untuk menerima dan membedakan lalu lintas jaringan, serta meneruskannya ke layanan sistem yang sesuai. Port ini biasanya diwakili oleh daemon yang mendengarkan pada port tersebut, artinya daemon tersebut menunggu lalu lintas yang datang ke port tersebut.

Secara normal, layanan sistem mendengarkan (listen) pada port standar yang telah disediakan khusus untuk mereka. Misalnya, daemon httpd mendengarkan pada port 80. Namun, administrator sistem dapat mengonfigurasi daemon untuk mendengarkan pada port yang berbeda guna meningkatkan keamanan.

Membuka port

Melalui port yang terbuka, sistem dapat diakses dari luar, yang merupakan risiko keamanan. Secara umum, tutup semua port dan hanya buka port yang diperlukan untuk layanan tertentu.

Membuka port menggunakan baris perintah
  1. Dapatkan daftar port yang diizinkan di zona saat ini:

    $ firewall-cmd --list-ports
  2. Tambahkan port ke daftar port yang diizinkan untuk membukanya bagi lalu lintas masuk:

    $ sudo firewall-cmd --add-port=port-number/port-type
  3. Jadikan pengaturan baru tetap berlaku:

    $ sudo firewall-cmd --runtime-to-permanent

Jenis port dapat berupa TCP, UDP, SCTP, atau DCCP. Jenis port harus sesuai dengan jenis komunikasi jaringan.

Menutup port

Ketika sebuah port terbuka tidak lagi diperlukan, tutup port tersebut di firewalld. Sangat disarankan untuk menutup semua port yang tidak diperlukan segera setelah tidak digunakan, karena meninggalkan port terbuka dapat menimbulkan risiko keamanan.

Menutup port menggunakan baris perintah

Untuk menutup sebuah port, hapus port tersebut dari daftar port yang diizinkan:

  1. Daftar semua port yang diizinkan:

    $ firewall-cmd --list-ports

    Perintah ini hanya akan menampilkan daftar port yang telah dibuka sebagai port. Anda tidak akan dapat melihat port terbuka yang telah dibuka sebagai layanan. Oleh karena itu, disarankan untuk menggunakan opsi --list-all daripada --list-ports.

  2. Hapus port dari daftar port yang diizinkan untuk menutupnya bagi lalu lintas masuk:

    $ sudo firewall-cmd --remove-port=port-number/port-type
  3. Jadikan pengaturan baru tetap berlaku:

    $ sudo firewall-cmd --runtime-to-permanent