cara guna UFW firewall pada VPS
Pelajari cara tetapkan UFW pada VPS dengan selamat. Ketahui cara aktifkan polisi default-deny dan benarkan port SSH supaya anda tidak terkunci dari pelayan.
Apa itu UFW dan mengapa anda memerlukannya
UFW bermaksud Uncomplicated Firewall, dan nama tersebut adalah tepat. Ia merupakan antaramuka yang mesra bagi tembok api (firewall) yang sedia ada dalam kernel Linux. Oleh itu, anda tidak perlu menulis peraturan mentah, sebaliknya hanya perlu menaip arahan ringkas seperti ufw allow 22/tcp. Pada VPS baharu, setiap perkhidmatan yang sedang mendengar (listening) boleh dicapai dari internet secara lalai. Tembok api mengubah keadaan ini: anda menyekat semua akses, kemudian hanya membenarkan beberapa port yang anda gunakan sahaja. Perubahan ringkas ini mengurangkan pendedahan risiko anda melalui kira-kira empat arahan sahaja.
Sebelum anda menggunakannya, kenal pasti perkhidmatan yang sedang mendengar, kerana tembok api akan menentukan akses bagi perkhidmatan tersebut. Membaca apa yang sedang mendengar menggunakan ss -tlnp adalah langkah pertama yang betul.
Satu peraturan untuk mengelakkan anda terkunci sendiri
Inilah kesilapan yang menakutkan pengguna daripada menggunakan firewall. Anda mengaktifkan UFW dengan polisi default-deny, tetapi anda tidak membenarkan SSH. Akibatnya, sebaik sahaja firewall diaktifkan, sambungan anda akan terputus dan anda tidak boleh masuk semula. Elakkan perkara ini dengan sentiasa membenarkan SSH sebelum anda mengaktifkan UFW. Itu sahaja caranya, dan langkah-langkah di bawah akan melakukannya mengikut urutan yang selamat.
Jika perkara ini tetap berlaku, anda tidak akan tersangkut: konsol web pembekal anda, melalui VNC atau serial, tidak menggunakan SSH. Oleh itu, anda boleh log masuk di sana dan menjalankan ufw disable atau menambah peraturan yang hilang.
Langkah 1: Tetapkan polisi lalai
Mulakan dengan mengarahkan UFW untuk menyekat semua trafik masuk dan membenarkan semua trafik keluar:
sudo ufw default deny incoming
sudo ufw default allow outgoingdeny incoming adalah bahagian yang penting. Ini bermaksud mana-mana port tanpa peraturan benarkan yang nyata akan ditutup kepada dunia luar, walaupun terdapat perkhidmatan yang sedang aktif pada port tersebut. allow outgoing membolehkan pelayan anda mengakses internet secara normal untuk kemas kini dan tujuan lain. Dua arahan ini hanya mengubah polisi; tiada apa yang dikuatkuasakan sehingga anda mengaktifkan UFW dalam langkah 3.
Langkah 2: Benarkan port yang anda perlukan sahaja
Sebelum mengaktifkan, buka SSH supaya sambungan anda tidak terputus:
sudo ufw allow 22/tcpUFW juga boleh mengehadkan kadar (rate-limit) SSH untuk anda: sudo ufw limit 22/tcp membenarkan port tersebut tetapi menyekat mana-mana alamat yang membuat enam atau lebih sambungan dalam masa tiga puluh saat. Ini dapat menghalang skrip brute-force tanpa memerlukan perisian tambahan.
Jika anda menjalankan pelayan web, benarkan HTTP dan HTTPS juga:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpBenarkan hanya perkhidmatan yang anda sediakan untuk awam. Pangkalan data seperti Postgres pada port 5432 hampir tidak perlu diberikan peraturan benarkan. Sebaliknya, ikat (bind) ia kepada 127.0.0.1 supaya ia hanya boleh dicapai pada mesin tersebut. Setiap port yang anda buka adalah pintu yang perlu anda pertahankan, jadi pastikan senarai tersebut pendek.
Anda juga boleh membina urutan penuh arahan ufw untuk pelayan anda di sini, kemudian jalankannya mengikut urutan:
Langkah 3: Aktifkan, dan sahkan ia telah diaktifkan
sudo ufw enableIa memberi amaran bahawa arahan tersebut mungkin memutuskan sambungan SSH sedia ada. Oleh sebab anda telah membenarkan 22/tcp pada langkah 2, sesi anda akan kekal aktif. Sahkan keputusan:
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 perkara di sini. Status: active bermaksud tembok api sedang berjalan. Setiap peraturan muncul dua kali, sekali dalam bentuk biasa dan sekali dengan (v6), yang menunjukkan UFW turut melindungi IPv6 selain IPv4. Jika baris (v6) tiada, bahagian IPv6 anda tidak diurus, yang merupakan satu risiko yang dibincangkan dalam pos tembok api IPv6.
Mengurus peraturan kemudian
Untuk melihat peraturan dengan nombor supaya anda boleh membuang satu peraturan:
sudo ufw status numbered
sudo ufw delete 3Untuk membenarkan port hanya daripada satu alamat, yang merupakan cara yang baik untuk mendedahkan perkhidmatan admin kepada IP anda sendiri sahaja:
sudo ufw allow from 10.0.0.24 to any port 5432 proto tcpFirewall hanyalah satu lapisan. Ia mengawal apa yang boleh sampai ke sesuatu port, tetapi ia tidak memperlahankan serangan berulang pada port yang anda biarkan terbuka, seperti SSH. Untuk tujuan itu, tambahkan Fail2ban di hadapan SSH untuk menyekat penceroboh berulang. Pertahanan mendalam (defence in depth) bermaksud setiap lapisan melindungi apa yang tidak dapat dilakukan oleh lapisan lain.
Firewall hanya berguna setelah anda tahu apa itu port dan cara perkhidmatan mendengar, dan mengkonfigurasinya adalah 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 akan kekal kerana tembok api kini membenarkan port 22. Bahayanya adalah mengaktifkan tembok api dengan tetapan deny-default tanpa peraturan allow SSH, yang akan memutuskan sambungan anda. Jika ini berlaku, log masuk melalui VNC atau konsol siri pembekal anda dan jalankan ufw disable.
Port manakah yang perlu saya buka pada VPS?
Hanya port yang anda sediakan untuk awam. SSH (22/tcp) supaya anda boleh menguruskan pelayan, dan HTTP serta HTTPS (80/tcp, 443/tcp) jika anda menjalankan laman web. Biarkan semua yang lain ditutup. Perkhidmatan dalaman seperti pangkalan data harus diikat ke 127.0.0.1 dan tidak memerlukan sebarang peraturan tembok api, supaya ia tidak boleh dicapai dari rangkaian.
Adakah UFW mengendalikan IPv6?
Pada Ubuntu moden, ya: IPV6=yes ditetapkan dalam /etc/default/ufw, jadi setiap peraturan terpakai kepada kedua-dua stack dan ufw status menunjukkan peraturan IPv6 dengan akhiran (v6). Cara ia masih boleh gagal dibincangkan dalam perangkap tembok api IPv6.
Bagaimanakah cara untuk membuang peraturan UFW?
Jalankan sudo ufw status numbered untuk menyenaraikan peraturan dengan nombor indeks, kemudian sudo ufw delete N di mana N ialah nombor peraturan yang ingin dibuang. Anda juga boleh memadam mengikut spesifikasi, contohnya sudo ufw delete allow 80/tcp.
Bagaimanakah cara untuk membenarkan port hanya daripada satu alamat IP?
Gunakan peraturan from dan bukannya peraturan 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 polisi deny-default, port ditutup kepada semua orang sehingga peraturan membukanya, jadi peraturan from ini adalah satu-satunya cara masuk: seluruh internet kekal disekat dan hanya alamat yang anda namakan sahaja yang dibenarkan. Jangan tambah allow 5432/tcp biasa, kerana ia akan membuka port kepada semua orang. Ini adalah cara paling selamat untuk mendedahkan pangkalan data atau panel admin. Sahkan dengan sudo ufw status verbose, yang menunjukkan alamat sumber di sebelah port.