Konfigurasi Firewall Ubuntu dengan UFW
Pendahuluan
Firewall adalah sistem keamanan untuk jaringan yang memantau semua lalu lintas masuk dan keluar. Firewall mengizinkan atau memblokir paket data berdasarkan aturan keamanan yang telah ditetapkan sebelumnya.
Jika Anda menjalankan sistem produksi, penting bagi Anda untuk memahami cara mengonfigurasi firewall. Sistem yang dilindungi firewall lebih kecil kemungkinannya untuk terinfeksi oleh informasi berbahaya, karena sistem tersebut lebih jarang terpapar ke Internet, karena lalu lintas masuk dan keluar disaring secara ketat sesuai dengan aturan keamanan.
Apa itu UFW?
UFW, yang juga disebut Uncomplicated Firewall, adalah kerangka kerja front-end yang menyediakan antarmuka sederhana untuk menggunakan utilitas iptables guna mengelola netfilter - sistem penyaringan paket kernel Linux bawaan. Ini adalah sistem firewall bawaan untuk Ubuntu 20.04 yang menyederhanakan perintah iptables yang rumit dan memungkinkan Anda membuat konfigurasi firewall dasar dengan lebih mudah.
UFW menggunakan antarmuka baris perintah dengan sejumlah kecil perintah sederhana. Ia mendukung semua aturan firewall dasar, berbagai protokol jaringan, pencatatan log, dan banyak fitur lainnya. Anda dapat memeriksa daftar lengkap fitur dalam dokumentasi resmi UFW .
Prasyarat sebelum melakukan konfigurasi
Untuk mengonfigurasi UFW, Anda perlu memiliki hal-hal berikut sebelumnya:
- Sistem Ubuntu dengan hak akses root
- Pengetahuan dasar tentang antarmuka baris perintah (CLI)
CATATAN: Tutorial ini tidak hanya berlaku untuk Ubuntu 20.04, tetapi juga versi LTS lainnya. Versi awal UFW telah tersedia sejak Ubuntu 12.04.
Instal Firewall UFW
UFW sudah terinstal di sistem operasi Ubuntu. Namun, Anda dapat memastikan bahwa Anda memiliki versi UFW terbaru dengan mencoba menginstalnya menggunakan perintah berikut:
apt install ufw
Sekarang setelah Anda menginstal UFW versi terbaru, mari periksa statusnya dengan menggunakan perintah berikut:
ufw status
Seperti yang Anda lihat, UFW tidak aktif secara default. Kita akan mengaktifkannya setelah membuat beberapa perubahan penting terlebih dahulu.
Kebijakan Firewall Default UFW
Jika Anda baru pertama kali menggunakan UFW, sebaiknya periksa kembali kebijakan firewall default. Untuk melakukannya, periksa berkas konfigurasi default UFW:
nano /etc/default/ufw
Secara default, UFW dikonfigurasi untuk menolak semua lalu lintas masuk dan mengizinkan semua lalu lintas keluar. Ini berarti tidak seorang pun dapat mengakses sistem Anda, sementara Anda dapat membuat permintaan keluar dari aplikasi atau layanan apa pun.
Kebijakan UFW default dapat diubah dengan pola perintah berikut:
ufw default <policy> <chain>
Misalnya, jika Anda ingin mengizinkan semua lalu lintas masuk gunakan perintah berikut:
ufw default allow incoming
Sementara perintah berikut akan menolak semua lalu lintas keluar:
ufw default deny outgoing
Pesan konfirmasi akan ditampilkan setelah setiap perubahan kebijakan, misalnya:
Izinkan Koneksi SSH
Secara default, UFW akan memblokir semua lalu lintas masuk termasuk SSH dan HTTP. Jika Anda mengaktifkan firewall sebelum menetapkan pengecualian, sesi jarak jauh Anda saat ini akan dihentikan dan Anda tidak akan dapat terhubung ke server lagi.
Untuk menghindari hal ini, Anda perlu mengizinkan koneksi SSH masuk dengan menggunakan perintah berikut:
ufw allow ssh
Ini akan membuka port 22 yang merupakan port default. Seperti yang Anda lihat, dua aturan firewall baru telah ditambahkan untuk protokol IPv4 dan IPv6:
Jika Anda telah mengonfigurasi SSH untuk menggunakan port lain, gunakan perintah yang lebih spesifik untuk membuat aturan izin bagi koneksi SSH. Misalnya, jika Anda memiliki layanan ssh yang mendengarkan port 4422, gunakan perintah berikut:
ufw allow 4422/tcp
Aturan firewall ini mengizinkan koneksi TCP ke port 4422.
Aktifkan Firewall UFW
Sekarang UFW Anda telah dikonfigurasi, Anda perlu mengaktifkannya dengan menggunakan perintah berikut:
ufw enable
Ini akan segera memulai daemon UFW dan mengaktifkannya saat sistem dinyalakan. Terima perintah yang diberikan dengan mengetik y dan tekan ENTER untuk melanjutkan.
Anda dapat memeriksa ulang apakah layanan tersebut berjalan menggunakan systemctl service manager:
systemctl status ufw
Tambahkan Aturan Firewall UFW
Ada berbagai aturan firewall yang dapat Anda terapkan ke sistem Anda melalui UFW:
- allow– izinkan lalu lintas
- deny– diam-diam membuang lalu lintas
- reject– menolak lalu lintas dan mengirim kembali paket kesalahan ke pengirim
- limit– membatasi koneksi dari alamat IP tertentu yang telah mencoba memulai 6 atau lebih koneksi dalam 30 detik terakhir
Anda dapat menerapkan aturan firewall ini dalam cakupan generik atau lebih spesifik. Cakupan generik menerapkan aturan UFW untuk lalu lintas masuk dan keluar. Anda dapat menggunakannya dengan pola perintah berikut:
ufw [rule] [target]
Di sisi lain, Anda mungkin ingin menerapkan aturan tersebut pada lalu lintas masuk atau keluar secara khusus. Dalam kasus seperti itu, Anda harus menggunakan pola perintah berikut:
ufw [rule] in [target]
ufw [rule] out [target]
Kami akan membahas beberapa contoh praktis nanti, sehingga Anda dapat melihat beberapa penerapan dalam kehidupan nyata.
Aturan firewall UFW dapat beroperasi pada banyak target yang berbeda. Anda dapat menargetkan nama layanan, alamat ip, port, dan bahkan antarmuka jaringan. Sekarang mari kita bahas masing-masing pola penargetan ini untuk melihat apa saja yang mungkin dilakukan.
Profil Aplikasi Target
Bila ufw terinstal, sebagian besar aplikasi yang mengandalkan jaringan untuk komunikasi mendaftarkan profil mereka dengan ufw, sehingga pengguna dapat dengan cepat mengizinkan atau menolak akses eksternal ke aplikasi tersebut.
Anda dapat memeriksa aplikasi mana yang terdaftar di UFW dengan perintah berikut:
ufw app list
Berikut ini adalah tampilan output Anda:
Untuk mengizinkan akses masuk dan keluar ke salah satu aplikasi ini gunakan pola perintah berikut:
ufw allow [App name]
Misalnya, Anda dapat mengizinkan koneksi OpenSSH dengan perintah berikut:
ufw allow OpenSSH
Aturan firewall ini mengizinkan semua lalu lintas masuk dan keluar untuk aplikasi OpenSSH. Anda dapat lebih spesifik dan hanya mengizinkan lalu lintas SSH masuk dengan perintah berikut:
ufw allow in OpenSSH
Namun, praktik terbaik untuk mengaktifkan akses SSH di server jarak jauh adalah dengan menggunakan rangkaian aturan limit. Rangkaian ini hanya mengizinkan 6 koneksi dari alamat IP yang sama dalam waktu 30 detik, sehingga Anda terhindar dari potensi serangan brute-force. Gunakan rangkaian aturan limit daripada allow untuk aplikasi OpenSSH di lingkungan produksi:
ufw limit OpenSSH
Alamat IP Target
Di UFW Anda dapat mengizinkan atau menolak alamat IP tertentu dengan pola perintah berikut:
ufw [rule] from [ip_address]
Misalnya, jika Anda melihat beberapa aktivitas berbahaya dari alamat IP 192.168.100.20, Anda dapat memblokir semua lalu lintas dari sana dengan menggunakan perintah berikut:
ufw deny from 192.168.100.20
Meskipun Anda telah memblokir semua lalu lintas masuk dari alamat IP berbahaya ini, dalam beberapa kasus, lalu lintas tersebut mungkin masih mencapai server Anda. Hal ini dapat terjadi karena UFW menerapkan aturannya dari atas ke bawah. Misalnya, aturan pertama Anda mungkin akan memblokir allowsemua lalu lintas masuk ke port 22 dan aturan Anda deny from 192.168.100.20mungkin akan menjadi satu langkah lebih maju.
Untuk menghindari situasi seperti itu, gunakan prependopsi untuk menambahkan aturan firewall yang paling spesifik ke bagian paling atas daftar aturan Anda. Perintah terakhir akan terlihat seperti ini:
ufw prepend deny from 192.168.100.20
Pelabuhan Sasaran
Anda juga dapat menargetkan port atau rentang port tertentu dengan UFW. Misalnya, Anda dapat mengizinkan koneksi ke port 8080 menggunakan protokol apa pun:
ufw allow 8080
Biasanya, Anda mungkin ingin lebih spesifik dan hanya mengizinkan koneksi ke port tertentu menggunakan protokol jaringan tertentu. Misalnya, Anda dapat mengizinkan koneksi TCP ke port 8080 hanya dengan perintah berikut:
ufw allow 8080/tcp
Namun, terkadang aplikasi Anda mungkin menggunakan sejumlah port untuk berbagai aktivitas. Dalam kasus seperti itu, Anda dapat menggunakan perintah berikut untuk memasukkan sejumlah port ke dalam daftar putih:
ufw allow 8080:9090/tcp
Ingat kemungkinan untuk menargetkan alamat IP? Jika Anda tidak ingin memblokir semua lalu lintas dari alamat IP apa pun, Anda mungkin sedikit lebih spesifik dan hanya memblokir lalu lintas ke port tertentu:
ufw deny from 192.168.100.20 to any port 53 proto udp
Dengan cara ini Anda akan memblokir semua lalu lintas dari 192.168.100.20 ke port 53 menggunakan protokol UDP, yang biasanya disediakan untuk layanan DNS.
Berikut adalah tampilan output Anda:
Antarmuka Jaringan Target
Beberapa sistem memiliki beberapa antarmuka jaringan yang dikonfigurasi yang mungkin memerlukan aturan firewall yang berbeda. Untungnya, UFW memungkinkan Anda menargetkan antarmuka jaringan tertentu dan hanya menerapkan aturan firewall untuknya. Mari kita coba.
Pertama, daftarkan antarmuka jaringan sistem Anda dengan perintah berikut:
ip addr
Seperti yang dapat Anda lihat, saat ini terdapat tiga antarmuka jaringan yang dikonfigurasi pada sistem Ubuntu 20.04. Mari kita targetkan yang kedua bernama eth0. Untuk melakukannya, Anda harus menggunakan on eth0opsi dalam perintah UFW Anda:
ufw allow in on eth0 from 192.168.100.255
Sekarang semua lalu lintas dari 192.168.100.255 hanya diizinkan ke antarmuka jaringan eth0:
Periksa Aturan Firewall UFW
Setelah Anda selesai menambahkan aturan firewall, sebaiknya periksa kembali tabel aturan untuk melihat hasilnya. Anda dapat memeriksa aturan UFW yang aktif dengan menggunakan perintah berikut:
ufw status
Untuk melihat versi aturan firewall UFW yang lebih rinci, gunakan opsi verbose:
ufw status verbose
Dan jika Anda hanya ingin melihat daftar aturan seperti saat Anda mengetiknya pertama kali, gunakan perintah berikut:
ufw show added
Sebaliknya ufw status, ufw showperintah menampilkan aturan firewall bahkan saat UFW dinonaktifkan.
Hapus Aturan Firewall UFW
Sekarang setelah Anda selesai menambahkan aturan firewall, bagaimana jika Anda ingin menghapus beberapa di antaranya? Untuk tujuan tersebut, kami memiliki dua metode yang tersedia: Anda dapat menghapus aturan berdasarkan nomornya, atau menghapusnya berdasarkan namanya. Mari kita bahas masing-masing.
Hapus berdasarkan Nomor
Anda dapat menghapus aturan UFW dengan memberi nomor pada tabel aturan Anda, lalu menghapus aturan tertentu menggunakan nomor terkait.
Pertama, periksa daftar aturan UFW bernomor dengan menggunakan perintah berikut:
ufw status numbered
Seperti yang dapat Anda lihat, aturan firewall Anda kini memiliki nomor yang terkait dengannya yang dapat Anda gunakan untuk menargetkannya. Misalnya, mari kita hapus aturan nomor 6 dengan menggunakan perintah berikut:
ufw delete 6
Cukup tekan y untuk menerima perintah konfirmasi dan aturan 3 akan dihapus.
Hapus berdasarkan Nama Aturan
Metode kedua untuk menghapus aturan UFW adalah dengan menentukannya berdasarkan namanya. Pertama-tama, cantumkan aturan tersebut dengan cara yang sama seperti saat Anda mengetiknya:
ufw show added
Misalnya Anda ingin menghapus aturan yang menolak semua lalu lintas dari alamat IP 192.168.100.20. Untuk melakukannya, Anda harus menggunakan perintah deletedengan nama aturan deny from 192.168.100.20. Perintah terakhir akan terlihat seperti ini:
ufw delete deny from 192.168.100.20
Kelola Log UFW
UFW mendukung beberapa tingkat pencatatan, sehingga Anda dapat mengamati aktivitas jaringan Anda dengan saksama. Secara default, UFW mencatat semua paket yang diblokir yang tidak sesuai dengan kebijakan yang ditetapkan, serta paket yang sesuai dengan aturan yang ditetapkan. Ini adalah lowtingkat pencatatan yang dapat Anda ubah jika diperlukan.
Anda dapat memeriksa ulang aktivitas pencatatan Anda dengan perintah berikut:
ufw status verbose
Baris kedua dari output memperlihatkan bahwa pencatatan aktif dengan level pencatatan ditetapkan ke rendah.
Tetapkan Tingkat Pencatatan UFW
Ada lima level pencatatan UFW. Masing-masing level memiliki kebijakan pencatatan yang berbeda dan mengumpulkan lebih banyak data. Harap perhatikan bahwa level pencatatan di atas sedang dapat menghasilkan banyak keluaran pencatatan, dan dapat dengan cepat memenuhi disk pada sistem yang sibuk, jadi gunakan dengan hati-hati.
- off- menonaktifkan pencatatan yang dikelola UFW.
- low- mencatat semua paket yang diblokir yang tidak cocok dengan kebijakan default, serta paket yang cocok dengan aturan yang telah ditetapkan sebelumnya.
- medium- sama seperti di atas, ditambah semua paket yang diizinkan yang tidak sesuai dengan kebijakan yang ditetapkan, semua paket yang tidak valid, dan semua koneksi baru.
- high- sama seperti di atas, hanya saja tanpa pembatasan kecepatan, ditambah semua paket dengan pembatasan kecepatan.
- full- sama seperti di atas, hanya saja tanpa pembatasan kecepatan.
Anda dapat mengubah level pencatatan rendah default dengan pola perintah berikut:
ufw logging [level]
Misalnya, gunakan perintah berikut untuk mengubah level pencatatan ke sedang:
ufw logging medium
Dengan cara ini Anda telah mengaktifkan tingkat pencatatan sedang dengan cakupan pencatatan yang ditingkatkan.
Memahami Log UFW
Berkas log disimpan di direktori /var/log/. Anda dapat menggunakan perintah ls untuk mencantumkan semua berkas log yang dibuat oleh UFW:
ls /var/log/ufw*
Anda sekarang dapat memeriksa berkas log Anda untuk menemukan informasi relevan tentang aktivitas UFW, misalnya:
less /var/log/ufw.log
Seperti yang Anda lihat, ada banyak sekali informasi yang tersedia bagi Anda untuk memahami aktivitas UFW. Satu baris mungkin terlihat seperti ini:
Jan 2 00:00:14 ubuntu-sandbox kernel: [142705.160851] [UFW BLOCK] IN=eth0 OUT= MAC=52:54:21:9a:ca:d7:fe:54:21:9a:ca:d7:08:00 SRC=198.144.159.22 DST=5.199.162.56 LEN=40 TOS=0x00 PREC=0x00 TTL=239 ID=61187 PROTO=TCP SPT=49194 DPT=10164 WINDOW=1024 RES=0x00 SYN URGP=0
Sekarang mari kita bahas baris log UFW ini untuk lebih memahami maknanya. Variabel yang paling informatif mungkin adalah alamat IP SRC dan DST dengan nomor port terkait SPT dan DPT, tetapi ada baiknya untuk memahami semuanya:
- [UFW BLOCK]: menunjukkan bahwa paket tersebut diblokir
- IN=eth0: Perangkat lalu lintas masuk.
- OUT=: Perangkat lalu lintas keluar kosong, karena lalu lintasnya masuk.
- MAC=52:54:21:9a:ca:d7:fe:54:21:9a:ca:d7:08:00: Alamat MAC perangkat.
- SRC=198.144.159.22: Alamat IP sumber pengirim paket.
- DST=5.199.162.56: Alamat IP tujuan yang dimaksudkan untuk menerima paket. Dalam kasus ini, alamat IP saya.
- LEN=40: Panjang paket.
- TOS=0x00dan PREC=0x00: Variabel yang tidak digunakan lagi dan tidak relevan lagi ditetapkan ke 0.
- TTL=239: Waktu yang dibutuhkan untuk satu paket. Setiap paket hanya dapat melewati sejumlah router yang ditentukan sebelum paket tersebut dihentikan.
- ID=61187: ID unik untuk datagram IP, dibagikan oleh fragmen paket yang sama.
- PROTO=TCP: Protokol yang digunakan.
- SPT=49194: Port sumber koneksi. Port ini dapat menunjukkan layanan apa yang memulai upaya koneksi.
- DPT=10164: Port tujuan koneksi. Port ini dapat menunjukkan layanan apa yang dimaksudkan untuk menerima upaya koneksi.
- WINDOW=1024: Ukuran paket yang bersedia diterima pengirim.
- RES=0x00: Bit ini dicadangkan untuk penggunaan di masa mendatang. Saat ini tidak relevan dan ditetapkan ke 0.
- SYN URGP=0: SYN mengindikasikan bahwa koneksi ini memerlukan jabat tangan tiga arah, URGP adalah singkatan dari relevansi penunjuk mendesak yang tidak relevan dan ditetapkan ke 0.
Setel Ulang Konfigurasi UFW
Ada kalanya Anda perlu memulai konfigurasi dari awal. Jika Anda ingin mengatur ulang konfigurasi UFW ke pengaturan default, ada perintah untuk tujuan tersebut:
ufw reset
Masukkan ysaat diminta dan tekan ENTERuntuk mereset semua aturan firewall yang aktif dan menonaktifkan daemon UFW. Seperti yang Anda lihat, UFW secara otomatis membuat file cadangan untuk aturan yang baru saja Anda atur ulang, jika Anda berubah pikiran atau ingin meninjaunya di masa mendatang.
Kesimpulan
Sekarang Anda tahu cara mengatur dan mengelola sistem firewall UFW di Ubuntu 20.04. Untuk referensi di masa mendatang, silakan gunakan dokumentasi resmi Ubuntu untuk menyegarkan ingatan Anda tentang fitur-fitur dasar dan mempelajari fungsionalitas UFW tingkat lanjut: disini