SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor · Dikemas kini 2026-08-27

Cara Sediakan UFW Firewall untuk VPS

Pelajari cara menetapkan UFW pada VPS dengan dasar default-deny, membenarkan port yang diperlukan dan mengaktifkannya tanpa terkunci di luar melalui SSH.

Apakah UFW dan sebab anda memerlukannya

UFW ialah singkatan bagi Uncomplicated Firewall, dan namanya tepat. UFW ialah antara muka mesra pengguna untuk firewall yang sudah tersedia dalam kernel Linux. Jadi, anda boleh menaip perintah ringkas seperti ufw allow 22/tcp dan bukannya menulis peraturan mentah. Pada VPS baharu, setiap perkhidmatan yang mendengar boleh dicapai dari internet secara lalai. Firewall mengubah keadaan ini: anda menolak semua sambungan, kemudian membenarkan beberapa port yang benar-benar anda gunakan. Perubahan tunggal ini mengurangkan sebahagian besar pendedahan anda dengan kira-kira empat perintah.

Sebelum mengkonfigurasinya, ketahui perkara yang sedang mendengar. Itulah perkhidmatan yang akan ditentukan nasibnya oleh firewall. Membaca perkara yang sedang mendengar dengan ss -tlnp ialah langkah pertama yang betul.

Satu peraturan yang menghalang anda daripada terkunci di luar

Inilah kesilapan yang menyebabkan orang takut menggunakan firewall. Anda mendayakan UFW dengan dasar default-deny, tetapi tidak pernah membenarkan SSH. Oleh itu, sebaik sahaja firewall diaktifkan, sambungan anda sendiri terputus dan anda tidak dapat menyambung semula. Elakkan perkara ini dengan sentiasa membenarkan SSH sebelum mendayakan UFW. Itulah keseluruhan langkahnya, dan langkah di bawah melaksanakannya mengikut urutan yang selamat.

Jika perkara ini tetap berlaku, anda masih boleh mendapatkan semula akses. Konsol web pembekal anda melalui VNC atau serial tidak menggunakan SSH. Oleh itu, anda boleh log masuk melalui konsol tersebut dan menjalankan ufw disable atau menambah peraturan yang tiada.

Langkah 1: Tetapkan dasar lalai

Mulakan dengan mengarahkan UFW untuk menolak semua sambungan masuk dan membenarkan semua sambungan keluar:

sudo ufw default deny incoming
sudo ufw default allow outgoing

deny incoming ialah bahagian penting. Ini bermaksud mana-mana port yang tiada peraturan benarkan secara jelas akan ditutup kepada rangkaian luar, walaupun terdapat perkhidmatan yang mendengar pada port tersebut. allow outgoing membolehkan pelayan anda mengakses internet seperti biasa untuk kemas kini dan keperluan lain. Kedua-dua arahan ini hanya mengubah dasar; tiada peraturan dikuatkuasakan sehingga anda mendayakan UFW dalam langkah 3.

Langkah 2: Benarkan port yang benar-benar diperlukan

Sebelum mendayakan UFW, buka SSH supaya sambungan anda kekal:

sudo ufw allow 22/tcp

UFW juga boleh mengehadkan kadar sambungan SSH untuk anda: sudo ufw limit 22/tcp membenarkan port tersebut tetapi menyekat sebarang alamat yang membuat enam atau lebih sambungan dalam tempoh tiga puluh saat. Langkah ini mengurangkan keberkesanan skrip brute-force tanpa perisian tambahan.

Jika anda menjalankan pelayan web, benarkan HTTP dan HTTPS juga:

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

Benarkan hanya perkhidmatan yang anda sediakan kepada umum. Pangkalan data seperti Postgres pada port 5432 hampir tidak sepatutnya mempunyai peraturan allow. Ikatkannya pada 127.0.0.1 supaya ia hanya boleh dicapai pada mesin tersebut. Setiap port yang anda buka perlu anda lindungi, jadi pastikan senarainya pendek.

Anda juga boleh membina urutan lengkap arahan ufw untuk pelayan anda di sini, kemudian menjalankannya mengikut turutan:

ToolUFW rule generator

Langkah 3: Dayakan dan sahkan bahawa ia aktif

sudo ufw enable

Amaran ini menyatakan bahawa arahan tersebut mungkin mengganggu sambungan SSH yang sedia ada. Oleh sebab anda membenarkan 22/tcp dalam langkah 2, sesi anda kekal bersambung. Sahkan hasilnya:

sudo ufw status verbose
Status: 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    Anywhere

Perhatikan dua perkara di sini. Status: active bermaksud firewall sedang berjalan. Setiap peraturan juga dipaparkan dua kali, sekali dalam bentuk biasa dan sekali dengan (v6), yang menunjukkan bahawa UFW melindungi IPv6 dan IPv4. Jika baris (v6) tiada, bahagian IPv6 anda tidak diuruskan. Ini ialah masalah tersendiri yang dibincangkan dalam artikel firewall IPv6.

Mengurus peraturan kemudian

Untuk melihat peraturan bersama nombornya supaya anda boleh membuang salah satu daripadanya:

sudo ufw status numbered
sudo ufw delete 3

Untuk membenarkan port hanya daripada satu alamat, yang merupakan cara baik untuk mendedahkan perkhidmatan pentadbiran kepada IP anda sendiri sahaja:

sudo ufw allow from 10.0.0.24 to any port 5432 proto tcp

Pendekatan itu tidak lagi berkesan apabila alamat anda sendiri berubah atau beberapa mesin perlu mengaksesnya. Penyelesaian lazim ialah tidak membuka port kepada umum langsung, sebaliknya mengakses servis melalui rangkaian peribadi. Itulah kegunaan mengiklankan subnet peribadi pelayan kepada tailnet anda.

Firewall ialah satu lapisan perlindungan. Firewall mengawal perkara yang boleh mencapai sesuatu port, tetapi tidak memperlahankan pihak yang terus mencuba port yang anda biarkan terbuka, seperti SSH. Untuk itu, tambah Fail2ban di hadapan SSH bagi menyekat pesalah berulang. Pertahanan berlapis bermaksud setiap lapisan melindungi daripada perkara yang tidak dapat dikendalikan oleh lapisan lain.

Firewall hanya berguna selepas anda memahami apakah port dan cara perkhidmatan mendengar, dan mengkonfigurasikannya ialah salah satu langkah dalam 10 minit pertama pada VPS baharu.

FAQ

Adakah mengaktifkan UFW akan memutuskan sesi SSH saya?

Tidak jika anda membenarkan SSH terlebih dahulu. Jalankan sudo ufw allow 22/tcp sebelum sudo ufw enable, dan sambungan anda kekal kerana tembok api kini membenarkan port 22. Bahayanya ialah mengaktifkan tembok api default-deny tanpa peraturan allow untuk SSH, yang akan memutuskan akses anda. Jika itu berlaku, log masuk melalui VNC atau konsol bersiri penyedia anda dan jalankan ufw disable.

Apakah port yang patut saya buka pada VPS?

Hanya port untuk perkhidmatan yang anda sediakan kepada umum. SSH (22/tcp) supaya anda boleh mengurus pelayan, serta HTTP dan HTTPS (80/tcp, 443/tcp) jika anda menjalankan laman web. Biarkan semua yang lain dalam keadaan denied. Perkhidmatan dalaman seperti pangkalan data hendaklah bind kepada 127.0.0.1 dan tidak mempunyai peraturan tembok api langsung, supaya perkhidmatan tersebut tidak boleh dicapai dari rangkaian.

Adakah UFW mengendalikan IPv6?

Pada Ubuntu moden, ya: IPV6=yes ditetapkan dalam /etc/default/ufw, jadi setiap peraturan terpakai pada kedua-dua stack dan ufw status memaparkan peraturan IPv6 dengan akhiran (v6). Cara masalah ini masih boleh berlaku diterangkan dalam perangkap tembok api IPv6.

Bagaimanakah saya hendak membuang peraturan UFW?

Jalankan sudo ufw status numbered untuk menyenaraikan peraturan dengan nombor indeks, kemudian sudo ufw delete N apabila N ialah nombor peraturan yang hendak dibuang. Anda juga boleh memadam mengikut spesifikasi, contohnya sudo ufw delete allow 80/tcp.

Bagaimanakah saya hendak membenarkan port hanya daripada satu alamat IP?

Gunakan peraturan from dan bukannya allow biasa. Untuk membenarkan hanya alamat pejabat anda mengakses PostgreSQL, jalankan sudo ufw allow from 10.0.0.10 to any port 5432 proto tcp. Dengan dasar default-deny, port tersebut ditutup kepada semua pihak sehingga suatu peraturan membukanya. Oleh itu, peraturan from ini ialah satu-satunya laluan masuk: seluruh internet kekal disekat dan hanya alamat yang anda nyatakan boleh mengaksesnya. Jangan tambah allow 5432/tcp biasa juga kerana tindakan itu akan membuka port kepada semua pihak. Ini ialah cara paling selamat untuk mendedahkan pangkalan data atau panel pentadbiran. Sahkan dengan sudo ufw status verbose, yang memaparkan alamat sumber di sebelah port.