Cara Menyiapkan UFW Firewall di VPS dengan Aman
Pelajari cara mengamankan VPS dengan UFW: gunakan kebijakan default-deny, izinkan hanya port yang diperlukan, dan aktifkan firewall tanpa terkunci dari SSH.
Apa itu UFW dan mengapa Anda membutuhkannya
UFW adalah singkatan dari Uncomplicated Firewall, dan namanya sesuai dengan fungsinya. UFW merupakan antarmuka yang mudah digunakan untuk firewall yang sudah tersedia di kernel Linux. Jadi, Anda tidak perlu menulis aturan mentah. Anda cukup memasukkan perintah singkat seperti ufw allow 22/tcp. Pada VPS baru, setiap layanan yang mendengarkan koneksi dapat diakses dari internet secara default. Firewall membalikkan kondisi ini: Anda menolak semua koneksi, lalu mengizinkan beberapa port yang benar-benar digunakan. Satu perubahan ini mengurangi sebagian besar permukaan serangan hanya dengan sekitar empat perintah.
Sebelum mengubah konfigurasinya, ketahui layanan yang sedang mendengarkan koneksi. Layanan tersebut menentukan koneksi yang akan diizinkan atau ditolak oleh firewall. Memeriksa layanan yang sedang mendengarkan dengan ss -tlnp adalah langkah pertama yang tepat.
Satu aturan yang mencegah Anda terkunci dari server
Inilah kesalahan yang membuat orang enggan menggunakan firewall. Anda mengaktifkan UFW dengan kebijakan default-deny, tetapi tidak pernah mengizinkan SSH. Akibatnya, begitu firewall aktif, koneksi Anda sendiri terputus dan Anda tidak dapat masuk kembali. Cegah hal ini dengan selalu mengizinkan SSH sebelum mengaktifkan UFW. Itulah intinya, dan langkah-langkah di bawah ini menerapkannya dalam urutan yang aman.
Jika hal itu tetap terjadi, Anda belum buntu: konsol web penyedia Anda, melalui VNC atau serial, tidak menggunakan SSH. Anda dapat masuk melalui konsol tersebut, lalu menjalankan ufw disable atau menambahkan aturan yang hilang.
Langkah 1: Tetapkan kebijakan default
Mulailah dengan memberi tahu UFW untuk menolak semua koneksi masuk dan mengizinkan semua koneksi keluar:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming adalah bagian yang penting. Artinya, port apa pun yang tidak memiliki aturan allow eksplisit akan tertutup dari luar, meskipun ada layanan yang mendengarkannya. allow outgoing memungkinkan server Anda mengakses internet secara normal untuk pembaruan dan keperluan lainnya. Kedua perintah ini hanya mengubah kebijakan; tidak ada yang diterapkan sampai Anda mengaktifkan UFW pada langkah 3.
Langkah 2: Izinkan port yang benar-benar diperlukan
Sebelum mengaktifkan UFW, buka SSH agar koneksi Anda tetap tersambung:
sudo ufw allow 22/tcpUFW juga dapat membatasi laju koneksi SSH: sudo ufw limit 22/tcp mengizinkan port tersebut, tetapi memblokir alamat apa pun yang membuat enam koneksi atau lebih dalam tiga puluh detik. Cara ini mengurangi efektivitas skrip brute-force tanpa perangkat lunak tambahan.
Jika Anda menjalankan server web, izinkan HTTP dan HTTPS juga:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpIzinkan hanya layanan yang Anda sajikan kepada publik. Database seperti Postgres pada port 5432 hampir tidak pernah perlu diberi aturan allow. Bind database tersebut ke 127.0.0.1 agar hanya dapat dijangkau dari mesin itu sendiri. Setiap port yang Anda buka harus Anda lindungi, jadi buat daftar tersebut tetap singkat.
Anda juga dapat menyusun rangkaian lengkap perintah ufw untuk server Anda di sini, lalu menjalankannya secara berurutan:
Langkah 3: Aktifkan dan pastikan sudah aktif
sudo ufw enablePerintah ini memperingatkan bahwa perintah tersebut dapat mengganggu koneksi SSH yang sedang berjalan. Karena Anda mengizinkan 22/tcp pada langkah 2, sesi Anda tetap tersambung. Konfirmasikan hasilnya:
sudo ufw status verboseStatus: active
Default: deny (incoming), allow (outgoing)
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp ALLOW IN AnywherePerhatikan dua hal di sini. Status: active berarti firewall sedang berjalan. Setiap aturan juga muncul dua kali, satu kali tanpa keterangan tambahan dan satu kali dengan (v6). Ini menunjukkan bahwa UFW mencakup IPv6 dan IPv4. Jika baris (v6) tidak ada, sisi IPv6 Anda tidak dikelola. Ini merupakan masalah tersendiri yang dibahas dalam postingan firewall IPv6.
Mengelola aturan nanti
Untuk melihat aturan beserta nomornya agar Anda dapat menghapus salah satunya:
sudo ufw status numbered
sudo ufw delete 3Untuk mengizinkan suatu port hanya dari satu alamat, yang merupakan cara yang baik untuk mengekspos layanan administrasi hanya ke IP Anda sendiri:
sudo ufw allow from 10.0.0.24 to any port 5432 proto tcpPendekatan tersebut tidak lagi memadai ketika alamat Anda sendiri berubah atau beberapa mesin perlu mengaksesnya. Solusi yang umum adalah berhenti membuka port ke publik dan mengakses service melalui jaringan privat. Untuk itulah mengiklankan subnet privat server ke tailnet digunakan.
Firewall adalah salah satu lapisan. Firewall mengontrol apa yang dapat mengakses suatu port, tetapi tidak memperlambat pihak yang terus-menerus membanjiri port yang Anda biarkan terbuka, seperti SSH. Untuk itu, tambahkan Fail2ban di depan SSH untuk memblokir pelanggar berulang. Pertahanan berlapis berarti setiap lapisan menangani hal yang tidak dapat ditangani lapisan lainnya.
Firewall hanya berguna setelah Anda memahami port dan cara layanan menerima koneksi, dan mengonfigurasinya merupakan langkah dalam 10 menit pertama pada VPS baru.
FAQ
Apakah mengaktifkan UFW akan memutus sesi SSH saya?
Tidak, jika Anda mengizinkan SSH terlebih dahulu. Jalankan sudo ufw allow 22/tcp sebelum sudo ufw enable. Koneksi Anda tetap aktif karena firewall kini mengizinkan port 22. Risikonya muncul jika Anda mengaktifkan firewall dengan kebijakan default-deny tanpa aturan untuk mengizinkan SSH. Hal ini akan memutus akses Anda. Jika itu terjadi, masuk melalui VNC atau konsol serial dari provider Anda, lalu jalankan ufw disable.
Port apa yang harus saya buka pada VPS?
Hanya port yang digunakan untuk layanan publik. Gunakan SSH (22/tcp) agar Anda dapat mengelola server, serta HTTP dan HTTPS (80/tcp, 443/tcp) jika Anda menjalankan situs web. Biarkan semua port lainnya ditolak. Layanan internal seperti database sebaiknya melakukan binding ke 127.0.0.1 dan tidak memiliki aturan firewall sama sekali, sehingga layanan tersebut tidak dapat diakses dari jaringan.
Apakah UFW menangani IPv6?
Pada Ubuntu modern, ya. IPV6=yes diatur dalam /etc/default/ufw, sehingga setiap aturan berlaku untuk kedua stack. ufw status menampilkan aturan IPv6 dengan akhiran (v6). Cara masalah ini tetap dapat terjadi dibahas dalam jebakan firewall IPv6.
Bagaimana cara menghapus aturan UFW?
Jalankan sudo ufw status numbered untuk menampilkan aturan beserta nomor indeksnya. Kemudian jalankan sudo ufw delete N, dengan N sebagai nomor aturan yang ingin Anda hapus. Anda juga dapat menghapus aturan berdasarkan spesifikasinya, misalnya sudo ufw delete allow 80/tcp.
Bagaimana cara mengizinkan port hanya dari satu alamat IP?
Gunakan aturan from, bukan allow biasa. Agar hanya alamat kantor Anda yang dapat mengakses PostgreSQL, jalankan sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp. Dengan kebijakan default-deny, port tersebut tertutup bagi semua pihak sampai sebuah aturan mengizinkan akses. Karena itu, aturan from ini menjadi satu-satunya jalur masuk: seluruh internet tetap diblokir dan hanya alamat yang Anda tentukan yang dapat mengaksesnya. Jangan menambahkan allow 5432/tcp biasa karena aturan tersebut akan membuka port bagi semua pihak. Ini adalah cara paling aman untuk mengekspos database atau panel administrasi. Konfirmasikan dengan sudo ufw status verbose, yang menampilkan alamat sumber di samping port.