Konfigurasi Firewall Menggunakan UFW pada Ubuntu 16.04

Uncomplicated Firewall (UFW) adalah sebuah interface dari Linux iptables. iptables sendiri adalah tools yang sangat bagus untuk melakukan konfigurasi firewall di sistem operasi berbasis Linux. Namun iptables cukup rumit untuk dipahami oleh sebagian orang. UFW hadir untuk mengatasi permasalahan tersebut dengan cara menyederhanakan perintah konfigurasi firewall sehingga memudahkan sistem administrator dalam mengelola firewall.

Panduan ini merupakan panduan sederhana dan ringkas dalam melakukan konfigurasi firewall menggunakan ufw dan hanya mencakup perintah ufw yang paling sering digunakan dalam praktek administrasi sistem sehari-hari.

Mengaktifkan Service UFW

Sebelum anda dapat melakukan konfigurasi firewall menggunakan ufw, anda harus memastikan service ufw telah berjalan di server anda dengan perintah:

$ sudo systemctl status ufw

Bila ternyata status service ufw adalah inactive (dead) maka anda harus mengaktifkannya dengan cara

$ sudo systemctl start ufw
$ sudo systemctl enable ufw

Jalankan perintah sudo systemctl status ufw sekali lagi dan pastikan kali ini status service ufw adalah active (exited).

Mengaktifkan Firewall Menggunakan UFW

Walaupun service ufw telah aktif, namun firewall rule belum diaktifkan. Anda bisa cek dengan perintah

$ sudo ufw status

Bila output perintah tersebut adalah Status: inactive maka artinya ufw belum aktif dan default policy dari firewall adalah ACCEPT. Silahkan recheck dengan perintah sudo iptables -L maka anda akan mendapatkan output kurang lebih seperti ini

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Kondisi seperti ini akan mengijinkan seluruh koneksi keluar dan masuk ke komputer anda. Sekarang aktifkan lah ufw dengan perintah

$ sudo ufw enable

Kemudian tekan y bila mendapatkan pesan Command may disrupt existing ssh connections. Proceed with operation (y|n)? Bila berhasil, maka anda akan mendapatkan pesan Firewall is active and enabled on system startup.

Jalankan perintah

$ sudo ufw status verbose

untuk melihat default policy setelah ufw diaktifkan. Contoh output perintah tersebut adalah

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

Policy tersebut akan:

  1. melarang (deny) seluruh paket masuk, kecuali yang diijinkan,
  2. mengijinkan (allow) seluruh paket yang masuk,
  3. tidak mengaktifkan (disabled) paket routing.

UFW Application Profile

ufw telah menyediakan berbagai Application profile yang berisi default rule berbagai aplikasi populer. Anda dapat melihat daftar Application profile tersebut dengan menggunakan perintah

$ sudo ufw app list

Output perintah tersebut bergantung pada aplikasi yang anda install dalam komputer anda. Pada komputer yang saya gunakan terdapat aplikasi Apache, OpenSSH, dan Postfix sehingga output perintah sudo ufw app list menjadi seperti ini

$ sudo ufw app list
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Postfix
Postfix SMTPS
Postfix Submission

Anda dapat mengijinkan aplikasi tertentu dengan perintah sudo ufw allow <nama aplikasi>, misalkan sudo ufw allow OpenSSH. Anda dapat melihat policy yang ada dalam masing-masing Application profile dengan perintah sudo ufw app info <application>. Berikut adalah contoh output ketika menjalankan perintah sudo ufw app info OpenSSH

$ sudo ufw app info OpenSSH
Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp

Mengijinkan Akses Layanan

Mengijinkan Layanan SSH

Untuk mengijinkan layanan SSH menggunakan ufw dapat anda lakukan dengan mengijinkan Application profile OpenSSH dengan perintah

$ sudo ufw allow OpenSSH

atau anda dapat melakukannya secara manual dengan cara

$ sudo ufw allow 22/tcp

Tapi sebenarnya, secara default ufw akan mengijinkan layanan SSH, karena bila tidak diijinkan maka akan menjadi masalah ketika anda melakukan konfigurasi dari remote komputer.

Mengijinkan Layanan Apache

Cara paling mudah mengijinkan layanan Web server Apache, baik itu port 80 untuk protokol HTTP dan port 443 untuk protokol HTTPS adalah dengan perintah

$ sudo ufw allow 'Apache Full'

atau anda dapat melakukannya secara manual dengan cara

$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp

Jalankan perintah sudo ufw status verbose untuk mengecek dampak perubahan firewall policy.

Mengijinkan Port dan Protokol Tertentu

Anda dapat mengijinkan port dan protokol tertentu dengan format perintah sudo ufw allow <port>/<protokol>, misalkan perintah

$ sudo ufw allow 80/tcp

akan mengijinkan akses ke port 80 dengan protokol TCP, sedangkan perintah

$ sudo ufw allow 53/udp

akan mengijinkan akses ke port 53 dengan protokol UDP.

Mengijinkan Port dengan Range dan Protokol Tertentu

Anda dapat mengijinkan port dengan range dan protokol tertentu dengan format perintah sudo ufw allow <first port>:<last port>/<protokol>, misalkan perintah

$ sudo ufw allow 8000:8100/tcp

akan mengijinkan akses ke port 8000 hingga 8100 dengan protokol TCP, sedangkan perintah

$ sudo ufw allow 5300:5500/udp

akan mengijinkan akses ke port 5300 hingga 5500 dengan protokol UDP.

Mengijinkan IP Tertentu

Anda dapat mengijinkan IP tertentu dengan format perintah sudo ufw allow from <ip>, misalkan perintah

$ sudo ufw allow from 104.16.124.127

akan mengijinkan semua akses dari IP 104.16.124.127 masuk ke komputer anda. Bila anda ingin IP tertentu dapat mengakses port tertentu di komputer anda maka anda dapat menjalankan perintah dengan format sudo ufw allow from <ip> to any port <port>, misalkan

$ sudo ufw allow from 104.16.124.127 to any port 22

akan mengijinkan akses dari IP 104.16.124.127 masuk ke port 22 di komputer anda.

Mengijinkan Subnet Tertentu

Anda dapat mengijinkan subnet tertentu dengan format perintah sudo ufw allow from <network address>/<subnet>, misalkan perintah

$ sudo ufw allow from 104.16.124.0/24

akan mengijinkan semua akses dari subnet 104.16.124.0/24 masuk ke komputer anda. Bila anda ingin subnet tertentu dapat mengakses port tertentu di komputer anda maka anda dapat menjalankan perintah dengan format sudo ufw allow from <network address>/<subnet> to any port <port>, misalkan

$ sudo ufw allow from 104.16.124.0/24 to any port 22

akan mengijinkan akses dari IP 104.16.124.0/24 masuk ke port 22 di komputer anda.

Memblokir Akses

Memblokir Akses dari IP atau Subnet Tertentu

ufw dapat anda manfaatkan untuk memblokir IP atau Subnet tertentu. Untuk memblokir IP tertentu gunakan perintah dengan format sudo ufw deny from <ip> misalkan

$ sudo ufw deny from 104.16.124.127

Bila anda ingin memblokir Subnet tertentu, maka gunakan perintah dengan format udo ufw deny from <ip>/<subnet> misalkan

$ sudo ufw deny from 104.16.124.0/24