Konfigurasi Firewall UFW

UFW adalah front-end untuk iptables, untuk membuat pengelolaan firewall Netfilter lebih mudah, maka nama "Uncomplicated Firewall". Ini menyediakan antarmuka baris perintah dengan sintaks yang mirip dengan Filter Paket OpenBSD. Ini sangat cocok sebagai firewall berbasis host. UFW adalah iptables front-end yang direkomendasikan pada Distro Linux berbasis Debian dan biasanya sudah diinstal sebelumnya pada distro ini. Secara default, UFW menetapkan aturan firewall untuk alamat IPv4 dan IPv6. Front-end iptables terkenal lainnya adalah firewalld, yang merupakan aplikasi firewall default pada distro Linux berbasis RPM (RHEL, CentOS, Fedora, OpenSUSE, dll).

Memulai UFW di Server Debian/Ubuntu/Linux Mint

sudo ufw status

UFW hadir dengan kebijakan penolakan masuk default, kebijakan penolakan penerusan default, dan kebijakan izin keluar default, dengan pelacakan stateful untuk koneksi baru untuk koneksi masuk dan diteruskan. Sebelum mengaktifkan UFW, Anda perlu mengetahui port apa yang dibuka pada alamat IP publik server Anda.

Setelah mendapatkan port TCP dan UDP yang terbuka di server Anda, Anda perlu memutuskan port mana yang harus diizinkan untuk menerima koneksi masuk. Jika ada server openSSH yang berjalan, maka Anda harus selalu mengizinkan port TCP 22 sebelum mengaktifkan UFW. Ini dicapai melalui perintah berikut.

  • Port SSH default
sudo ufw allow 22/tcp
  • Port HTTP
sudo ufw allow 80/tcp
  • Port HTTPS
sudo ufw allow 443/tcp
  • Membuka seluruh port yang digunakan Nginx
sudo ufw allow "Nginx Full"
  • Membuka semua port yang digunakan Apache
sudo ufw allow "Apache Full"

Membuat Backlist IP

  • Katakanlah ada spammer yang terus-menerus mencoba mengirim spam ke server email Anda. Anda dapat menggunakan UFW untuk memblokir alamat IP spammer agar tidak mengakses port TCP 25 dari server email Anda, dengan perintah berikut. Ganti 12.34.56.78 dengan alamat IP spammer.
sudo ufw insert 1 deny in from 12.34.56.78 to any port 25 proto tcp
  • Perhatikan bahwa aturan firewall yang baru ditambahkan diletakkan di bagian bawah secara default. Jika sebelumnya Anda mengizinkan akses ke port 25 dari mana saja, maka Anda perlu memasukkan aturan penolakan sebagai aturan pertama, seperti di atas, sehingga aturan penolakan akan diterapkan terlebih dahulu. Anda selalu dapat memasukkan aturan penolakan baru sebagai aturan pertama.
  • Anda juga dapat memblokir rentang alamat IP seperti di bawah ini.
sudo ufw insert 1 deny in from 192.168.0.0/24 to any port 25 proto tcp
  • Untuk memblokir alamat IP agar tidak mengakses semua port di server Anda
sudo ufw insert 1 deny in from 12.34.56.78

Deleting UFW rules by rule number

sudo ufw status numbered
  • Output
     To                         Action      From
     --                         ------      ----
[ 1] 80/tcp                     ALLOW IN    Anywhere                  
[ 2] 443/tcp                    ALLOW IN    Anywhere                  
[ 3] 6789/tcp                   ALLOW IN    Anywhere                  
[ 4] 22/tcp                     DENY IN     Anywhere                  
[ 5] 80/tcp (v6)                ALLOW IN    Anywhere (v6)             
[ 6] 443/tcp (v6)               ALLOW IN    Anywhere (v6)             
[ 7] 6789/tcp (v6)              ALLOW IN    Anywhere (v6)             
[ 8] 22/tcp (v6)                DENY IN     Anywhere (v6) 

Jika ingin menghapus port 80/tcp masukkan perintah berikut

sudo ufw delete 1

Removing UFW rules by ufw syntax

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw deny 23/tcp
  • Deleted
sudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp
sudo ufw delete deny 23/tcp

Block ping (ICMP)

In order to deny any incoming ICMP ping requests we need to modify /etc/ufw/before.rules UFW’s configuration file. First, make a backup copy:

sudo cp /etc/ufw/before.rules /etc/ufw/before.rules_backup

Next, open the file with root privileges using your favorite text editor and change:

FROM:

 # ok icmp codes for INPUT
 -A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
 -A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
 -A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
 -A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
 -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

TO:

  # ok icmp codes for INPUT
 -A ufw-before-input -p icmp --icmp-type destination-unreachable -j DROP
 -A ufw-before-input -p icmp --icmp-type source-quench -j DROP
 -A ufw-before-input -p icmp --icmp-type time-exceeded -j DROP
 -A ufw-before-input -p icmp --icmp-type parameter-problem -j DROP
 -A ufw-before-input -p icmp --icmp-type echo-request -j DROP

Source