GNU/Linux >> Belajar Linux >  >> Linux

Firewall Linux:Apa yang perlu Anda ketahui tentang iptables dan firewalld

Artikel ini dikutip dari buku saya, Linux in Action, dan proyek Manning kedua yang belum dirilis.

Firewall

Firewall adalah seperangkat aturan. Ketika sebuah paket data bergerak masuk atau keluar dari ruang jaringan yang dilindungi, isinya (khususnya, informasi tentang asalnya, target, dan protokol yang akan digunakannya) diuji terhadap aturan firewall untuk melihat apakah paket itu harus diizinkan. Berikut ini contoh sederhananya:

Di satu sisi, iptables adalah alat untuk mengelola aturan firewall di mesin Linux.

Di sisi lain, firewalld juga merupakan alat untuk mengelola aturan firewall di mesin Linux.

Anda punya masalah dengan itu? Dan apakah akan merusak hari Anda jika saya memberi tahu Anda bahwa ada alat lain di luar sana, yang disebut nftables?

Oke, saya akui bahwa semuanya berbau agak lucu, jadi izinkan saya menjelaskannya. Semuanya dimulai dengan Netfilter, yang mengontrol akses ke dan dari tumpukan jaringan di tingkat modul kernel Linux. Selama beberapa dekade, alat baris perintah utama untuk mengelola kait Netfilter adalah kumpulan aturan iptables.

Terminal Linux

  • 7 emulator terminal teratas untuk Linux
  • 10 alat baris perintah untuk analisis data di Linux
  • Unduh Sekarang:lembar contekan SSH
  • Lembar contekan perintah Linux tingkat lanjut
  • Tutorial baris perintah Linux

Karena sintaks yang diperlukan untuk menjalankan aturan-aturan tersebut dapat terlihat sedikit misterius, berbagai implementasi yang mudah digunakan seperti ufw dan firewalld diperkenalkan sebagai penafsir Netfilter tingkat tinggi. Ufw dan firewalld, bagaimanapun, terutama dirancang untuk memecahkan jenis masalah yang dihadapi oleh komputer yang berdiri sendiri. Membangun solusi jaringan berukuran penuh sering kali membutuhkan kekuatan ekstra iptables atau, sejak 2014, penggantinya, nftables (melalui alat baris perintah nft).

iptables belum kemana-mana dan masih banyak digunakan. Bahkan, Anda harus berharap untuk mengalami jaringan yang dilindungi iptables dalam pekerjaan Anda sebagai admin selama bertahun-tahun yang akan datang. Namun nftables, dengan menambahkan ke perangkat Netfilter klasik, telah membawa beberapa fungsi baru yang penting.

Dari sini, saya akan menunjukkan melalui contoh bagaimana firewalld dan iptables menyelesaikan masalah konektivitas sederhana.

Konfigurasikan akses HTTP menggunakan firewalld

Seperti yang mungkin sudah Anda duga dari namanya, firewalld adalah bagian dari keluarga systemd. Firewalld dapat diinstal pada mesin Debian/Ubuntu, tetapi ada secara default di Red Hat dan CentOS. Jika Anda memiliki server web seperti Apache yang berjalan di mesin Anda, Anda dapat mengonfirmasi bahwa firewall berfungsi dengan menjelajahi root web server Anda. Jika situs tidak dapat dijangkau, maka firewalld melakukan tugasnya.

Anda akan menggunakan firewall-cmd alat untuk mengelola pengaturan firewalld dari baris perintah. Menambahkan –state argumen mengembalikan status firewall saat ini:

# firewall-cmd --state
running

Secara default, firewalld akan aktif dan akan menolak semua lalu lintas masuk dengan beberapa pengecualian, seperti SSH. Artinya website Anda tidak akan mendapatkan terlalu banyak pengunjung, yang tentunya akan menghemat banyak biaya transfer data. Karena itu mungkin bukan yang Anda pikirkan untuk server web Anda, Anda akan ingin membuka port HTTP dan HTTPS yang menurut konvensi masing-masing ditetapkan sebagai 80 dan 443. firewalld menawarkan dua cara untuk melakukannya. Salah satunya adalah melalui –add-port argumen yang mereferensikan nomor port secara langsung bersama dengan protokol jaringan yang akan digunakannya (TCP dalam hal ini). –permanent argumen memberitahu firewalld untuk memuat aturan ini setiap kali server melakukan booting:

# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --permanent --add-port=443/tcp

–reload argumen akan menerapkan aturan tersebut ke sesi saat ini:

# firewall-cmd --reload

Ingin tahu tentang pengaturan saat ini di firewall Anda? Jalankan –list-services :

# firewall-cmd --list-services
dhcpv6-client http https ssh

Dengan asumsi Anda telah menambahkan akses browser seperti yang dijelaskan sebelumnya, port HTTP, HTTPS, dan SSH sekarang semuanya harus terbuka—bersama dengan dhcpv6-client , yang memungkinkan Linux meminta alamat IP IPv6 dari server DHCP lokal.

Konfigurasikan kios pelanggan yang terkunci menggunakan iptables

Saya yakin Anda pernah melihat kios—ini adalah tablet, layar sentuh, dan PC mirip ATM di dalam kotak yang ditinggalkan bandara, perpustakaan, dan bisnis, mengundang pelanggan dan orang yang lewat untuk menelusuri konten. Hal tentang sebagian besar kios adalah Anda biasanya tidak ingin pengguna membuat diri mereka sendiri di rumah dan memperlakukan mereka seperti perangkat mereka sendiri. Mereka umumnya tidak dimaksudkan untuk menjelajah, melihat video YouTube, atau meluncurkan serangan penolakan layanan terhadap Pentagon. Jadi untuk memastikan mereka tidak disalahgunakan, Anda harus menguncinya.

Salah satu caranya adalah dengan menerapkan beberapa jenis mode kios, apakah itu melalui penggunaan pengelola tampilan Linux yang cerdas atau di tingkat browser. Tetapi untuk memastikan Anda memiliki semua lubang yang terpasang, Anda mungkin juga ingin menambahkan beberapa kontrol jaringan keras melalui firewall. Di bagian berikut, saya akan menjelaskan bagaimana saya akan melakukannya menggunakan iptables.

Ada dua hal penting yang perlu diingat tentang penggunaan iptables:Urutan yang Anda berikan pada aturan Anda sangat penting, dan aturan iptables sendiri tidak akan bertahan dari reboot. Saya akan membahasnya di sini satu per satu.

Proyek kios

Untuk mengilustrasikan semua ini, bayangkan kita bekerja untuk sebuah toko yang merupakan bagian dari rantai yang lebih besar yang disebut BigMart. Mereka sudah ada selama beberapa dekade; pada kenyataannya, kakek-nenek imajiner kita mungkin tumbuh berbelanja di sana. Namun akhir-akhir ini, orang-orang di kantor pusat perusahaan BigMart mungkin hanya menghitung jam sebelum Amazon menjatuhkan mereka untuk selamanya.

Namun demikian, departemen TI BigMart melakukan yang terbaik, dan mereka baru saja mengirimi Anda beberapa perangkat kios siap-WiFi yang diharapkan dapat Anda pasang di lokasi strategis di seluruh toko Anda. Idenya adalah bahwa mereka akan menampilkan browser web yang masuk ke halaman produk BigMart.com, memungkinkan mereka untuk mencari fitur barang dagangan, lokasi lorong, dan tingkat stok. Kios juga memerlukan akses ke bigmart-data.com, tempat banyak media gambar dan video disimpan.

Selain itu, Anda ingin mengizinkan pembaruan dan, bila perlu, unduhan paket. Terakhir, Anda ingin mengizinkan akses SSH masuk hanya dari stasiun kerja lokal Anda, dan memblokir semua orang lainnya. Gambar di bawah mengilustrasikan cara kerjanya:

Skrip

Inilah cara semuanya masuk ke dalam skrip Bash:

#!/bin/bash
iptables -A OUTPUT -p tcp -d bigmart.com -j ACCEPT
iptables -A OUTPUT -p tcp -d bigmart-data.com -j ACCEPT
iptables -A OUTPUT -p tcp -d ubuntu.com -j ACCEPT
iptables -A OUTPUT -p tcp -d ca.archive.ubuntu.com -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j DROP
iptables -A OUTPUT -p tcp --dport 443 -j DROP
iptables -A INPUT -p tcp -s 10.0.3.1 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP

Anatomi dasar aturan kami dimulai dengan -A , memberi tahu iptables bahwa kita ingin menambahkan aturan berikut. OUTPUT berarti bahwa aturan ini harus menjadi bagian dari rantai OUTPUT. -p menunjukkan bahwa aturan ini hanya akan berlaku untuk paket yang menggunakan protokol TCP, di mana, sebagai -d memberitahu kami, tujuannya adalah bigmart.com. -j tandai menunjuk ke ACCEPT sebagai tindakan yang harus diambil ketika sebuah paket cocok dengan aturan. Dalam aturan pertama ini, tindakan itu adalah mengizinkan, atau menerima, permintaan. Namun lebih jauh, Anda dapat melihat permintaan yang akan dibatalkan, atau ditolak.

Ingatlah bahwa urutan itu penting. Dan itu karena iptables akan menjalankan permintaan melewati setiap aturannya, tetapi hanya sampai ada kecocokan. Jadi permintaan browser keluar untuk, katakanlah, youtube.com akan melewati empat aturan pertama, tetapi ketika sampai ke –dport 80 atau –dport 443 aturan—bergantung pada apakah itu permintaan HTTP atau HTTPS—itu akan dihapus. iptables tidak akan repot-repot memeriksa lebih jauh karena itu cocok.

Di sisi lain, permintaan sistem ke ubuntu.com untuk pemutakhiran perangkat lunak akan diterima ketika mencapai aturan yang sesuai. Apa yang kami lakukan di sini, jelas, mengizinkan permintaan HTTP atau HTTPS keluar hanya ke tujuan BigMart atau Ubuntu kami dan bukan yang lain.

Dua aturan terakhir akan menangani permintaan SSH yang masuk. Mereka tidak akan ditolak oleh dua aturan drop sebelumnya karena mereka tidak menggunakan port 80 atau 443, tetapi 22. Dalam hal ini, permintaan login dari workstation saya akan diterima tetapi permintaan untuk tempat lain akan dibatalkan. Ini penting:Pastikan alamat IP yang Anda gunakan untuk aturan port 22 cocok dengan alamat mesin yang Anda gunakan untuk masuk—jika Anda tidak melakukannya, Anda akan langsung terkunci. Ini bukan masalah besar, tentu saja, karena cara konfigurasinya saat ini, Anda cukup mem-boot ulang server dan semua aturan iptables akan dihapus. Jika Anda menggunakan penampung LXC sebagai server dan masuk dari host LXC, gunakan alamat IP yang digunakan host Anda untuk terhubung ke penampung, bukan alamat publiknya.

Anda harus ingat untuk memperbarui aturan ini jika IP mesin saya pernah berubah; jika tidak, Anda akan terkunci.

Bermain bersama di rumah (semoga di semacam VM sekali pakai)? Besar. Buat skrip Anda sendiri. Sekarang saya dapat menyimpan skrip, gunakan chmod untuk membuatnya dapat dieksekusi, dan jalankan sebagai sudo . Jangan khawatir tentang bigmart-data.com not found kesalahan—tentu saja tidak ditemukan; itu tidak ada.

chmod +X scriptname.sh
sudo ./scriptname.sh

Anda dapat menguji firewall Anda dari baris perintah menggunakan cURL . Meminta ubuntu.com berhasil, tetapi manning.com gagal.

curl ubuntu.com
curl manning.com

Mengonfigurasi iptables untuk dimuat pada boot sistem

Terminal Linux

  • 7 emulator terminal teratas untuk Linux
  • 10 alat baris perintah untuk analisis data di Linux
  • Unduh Sekarang:lembar contekan SSH
  • Lembar contekan perintah Linux tingkat lanjut
  • Tutorial baris perintah Linux

Sekarang, bagaimana cara agar aturan ini dimuat secara otomatis setiap kali kios melakukan booting? Langkah pertama adalah menyimpan aturan saat ini ke file .rules menggunakan iptables-save alat. Itu akan membuat file di direktori root yang berisi daftar aturan. Pipa, diikuti dengan perintah tee, diperlukan untuk menerapkan sudo . saya otoritas ke bagian kedua dari string:penyimpanan sebenarnya dari file ke direktori root yang dibatasi.

Saya kemudian dapat memberi tahu sistem untuk menjalankan alat terkait yang disebut iptables-restore setiap kali boot. Pekerjaan cron biasa seperti yang kita lihat di modul sebelumnya tidak akan membantu karena dijalankan pada waktu yang ditentukan, tetapi kita tidak tahu kapan komputer kita mungkin memutuskan untuk mogok dan reboot.

Ada banyak cara untuk menangani masalah ini. Ini dia:

Di mesin Linux saya, saya akan menginstal program bernama anacron yang akan memberi kita file di direktori /etc/ bernama anacrontab. Saya akan mengedit file dan menambahkan iptables-restore perintah, menyuruhnya memuat nilai saat ini dari file .rules itu ke dalam iptables setiap hari (bila perlu) satu menit setelah boot. Saya akan memberi pekerjaan pengenal (iptables-restore ) dan kemudian tambahkan perintah itu sendiri. Karena Anda bermain bersama saya di rumah, Anda harus menguji semua ini dengan me-reboot sistem Anda.

sudo iptables-save | sudo tee /root/my.active.firewall.rules
sudo apt install anacron
sudo nano /etc/anacrontab
1 1 iptables-restore iptables-restore < /root/my.active.firewall.rules

Saya harap contoh praktis ini telah mengilustrasikan cara menggunakan iptables dan firewalld untuk mengelola masalah konektivitas pada firewall berbasis Linux.


Linux
  1. Apa yang perlu diketahui oleh pengguna dan pembuat paket Linux tentang Podman 4.0 di Fedora

  2. Daftar kontrol akses dan drive eksternal di Linux:Apa yang perlu Anda ketahui

  3. Apa Itu VPN? Semua yang Perlu Anda Ketahui Tentang VPN

  1. 15 hal yang perlu Anda ketahui tentang Struktur Direktori Linux

  2. Apa yang perlu Anda ketahui tentang IPv6

  3. Semua yang Perlu Anda Ketahui Tentang Sistem File Linux

  1. Semua yang Perlu Anda Ketahui Tentang Perintah Chmod Linux

  2. Semua yang Perlu Anda Ketahui tentang Linux Containers (LXC)

  3. Semua yang Perlu Anda Ketahui Tentang Server Linux Ubuntu