Cara mengamankan VPS baharu dalam 10 minit
Lindungi VPS anda daripada pengimbas automatik dengan langkah ini. Belajar cara tetapkan SSH keys, cipta pengguna baharu, dan aktifkan firewall dengan pantas.
10 minit pertama menentukan tahap keselamatan pelayan anda
VPS baharu tidak selamat. Sebaik sahaja ia mempunyai IP awam, pengimbas akan cuba log masuk, dan imej lalai memberikan sasaran yang besar: root sering boleh dicapai, kata laluan sering dibenarkan, tiada firewall, dan tiada tampalan (patch) dijadualkan. Berita baiknya ialah menutup semua perkara tersebut hanya mengambil masa kira-kira sepuluh minit dengan beberapa arahan. Ini adalah runbook yang saya gunakan pada setiap pelayan baharu sebelum saya memasang apa-apa di dalamnya.
Ikut langkah ini mengikut turutan kerana setiap langkah membina langkah seterusnya. Setiap langkah mempunyai panduan sendiri yang dipautkan semasa anda berjalan; halaman ini adalah laluan pantas yang menyatukan semuanya.
Minit 1: Kemas kini semua perkara
Log masuk sebagai root dengan kredential yang diberikan oleh penyedia anda, dan kemas kini sistem sepenuhnya sebelum melakukan perkara lain:
apt update && apt upgrade -ySistem yang tidak ditampal adalah sasaran yang paling mudah, jadi ini adalah langkah pertama. Setelah selesai, tetapkan kemas kini keselamatan automatik supaya ia sentiasa ditampal tanpa anda perlu mengingatinya.
Minit 2: Cipta pengguna biasa dengan sudo
Jangan terus bekerja sebagai root. Cipta pengguna untuk diri anda dan berikan akses sudo:
adduser matt
usermod -aG sudo mattDari sini anda log masuk sebagai pengguna ini dan gunakan sudo untuk tugas admin. Bekerja sebagai root sepanjang masa bermakna setiap kesilapan dan setiap pencerobohan berlaku dengan kuasa tanpa had, yang mana itulah sebabnya berjalan sebagai pengguna tanpa keistimewaan wujud untuk mencegahnya.
Minit 4: Tetapkan kunci SSH
Kata laluan boleh diteka; kunci tidak. Pada komputer riba anda sendiri, jika anda belum mempunyai kunci, cipta satu:
ssh-keygen -t ed25519Kemudian salin bahagian awam (public half) ke pelayan:
ssh-copy-id matt@YOUR_SERVERssh-copy-id memerlukan log masuk kata laluan diaktifkan untuk pengguna baharu; jika ia sudah dimatikan, salin ~/.ssh/authorized_keys milik root ke dalam /home/matt/.ssh/authorized_keys (dimiliki oleh matt), atau tampal kunci awam anda ke dalam fail tersebut secara manual.
Model di sebalik langkah ini, satu kunci bagi setiap peranti, keizinan (permissions) yang membatalkan log masuk kunci, dan membatalkan kunci yang hilang, dibincangkan dalam asas pengurusan kunci SSH.
Log keluar dan log masuk semula sebagai matt menggunakan kunci tersebut, dan sahkan ia berfungsi sebelum anda menyentuh langkah seterusnya. Mengunci SSH sebelum anda boleh masuk dengan kunci adalah cara orang mengunci diri mereka sendiri.
Minit 6: Matikan log masuk root dan kata laluan
Sekarang kunci anda sudah berfungsi, tutup dua pintu yang digunakan oleh pengimbas. Gunakan fail drop-in supaya naik taraf pakej tidak menindihnya. Namakannya 00- supaya ia disusun sebelum 50-cloud-init.conf, yang disertakan oleh imej awan Ubuntu dengan PasswordAuthentication yes; sshd mengekalkan nilai pertama yang dibacanya, jadi fail yang disusun kemudian akan hilang secara senyap:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confPasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin noKemudian muat semula SSH:
sudo systemctl restart sshKemudian semak tetapan yang sebenarnya digunakan oleh sshd, supaya fail drop-in yang kalah tidak menipu anda:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'Dengan kata laluan dimatikan dan log masuk root hilang, trafik brute-force yang berterusan terhadap pelayan anda tidak akan berjaya. Rawatan penuh, termasuk pertukaran port pilihan, ada dalam pengerasan SSH pada VPS.
Minit 8: Hidupkan firewall
Tolak semua trafik masuk secara lalai (default-deny), kemudian benarkan hanya apa yang anda perlukan. Benarkan SSH sebelum anda mengaktifkannya, atau anda akan memutuskan sambungan sendiri:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableTambah peraturan allow untuk sebarang perkhidmatan yang anda jalankan, seperti 80/tcp dan 443/tcp untuk laman web. Pastikan kedua-dua IPv4 dan IPv6 dilindungi, kerana firewall yang hanya menapis IPv4 akan membiarkan bahagian IPv6 terbuka luas. Panduan penuh ada dalam Firewalls 101 pada VPS.
Minit 10: Perlahankan pengimbas dengan Fail2ban
Akhir sekali, tambah Fail2ban untuk menghalau alamat yang menyerang port anda:
sudo apt install -y fail2banPada Ubuntu 24.04, pemasangan asal melindungi SSH dari but pertama. Dengan keperluan kunci yang sudah ditetapkan, ini adalah sandaran yang mengurangkan gangguan log dan menyekat pesalah berulang, dan bukannya sebagai pertahanan utama anda.
Senarai semak anda
Itulah runbook tersebut. Gunakan penjana di bawah untuk menanda setiap kawalan dan menghasilkan senarai semak peribadi yang boleh anda simpan bersama pelayan, termasuk arahan tepat untuk setiap langkah:
Lakukan sekali bagi setiap pelayan baharu dan ia akan menjadi memori otot. Sepuluh minit sekarang menjimatkan anda waktu petang yang sangat buruk selepas pelayan diceroboh.
Setelah perkara penting telah ditetapkan, kemas kini keselamatan automatik pada Ubuntu memastikan pelayan sentiasa terkini tanpa anda perlu log masuk semula.
FAQ
Apakah yang patut saya lakukan dahulu pada VPS baharu?
Kemas kini sistem dengan apt update && apt upgrade -y, kemudian cipta pengguna biasa dengan sudo dan berhenti bekerja sebagai root. Dari situ, tetapkan kunci SSH, nyahaktifkan log masuk root dan pengesahan kata laluan, aktifkan firewall default-deny, dan pasang Fail2ban. Melakukannya mengikut urutan itu bermakna setiap langkah adalah selamat untuk diambil tanpa mengunci diri anda sendiri.
Bagaimanakah saya mengelakkan diri daripada terkunci keluar semasa melakukan pengerasan SSH?
Tetapkan dan uji log masuk kunci SSH anda sebelum anda menyahaktifkan kata laluan atau root. Log keluar dan log masuk semula dengan kunci untuk mengesahkan ia berfungsi, dan hanya selepas itu matikan PasswordAuthentication dan PermitRootLogin. Apabila anda mengaktifkan firewall, benarkan port 22 sebelum menjalankan ufw enable. Jika anda terkunci keluar, konsol web penyedia anda membolehkan anda masuk semula tanpa SSH.
Adakah saya benar-benar memerlukan semua ini pada pelayan kecil?
Ya, kerana pengimbas tidak peduli betapa kecilnya pelayan anda. Mereka mencuba setiap IP awam dengan cara yang sama. Keseluruhan runbook ini mengambil masa kira-kira sepuluh minit dan menghapuskan laluan mudah: tiada log masuk root, tiada tekaan kata laluan, tiada apa yang terdedah yang tidak anda pilih, dan pepijat yang diketahui ditampal secara automatik.
Apakah langkah yang paling penting?
SSH hanya dengan kunci dengan log masuk root dinyahaktifkan. Kebanyakan serangan pada VPS baharu adalah tekaan kata laluan automatik terhadap root, dan mematikan kedua-duanya menjadikan seluruh kategori serangan itu mustahil. Firewall dan Fail2ban kemudian mengehadkan apa yang terdedah dan memperlahankan apa yang berbaki.
Bagaimanakah saya mengesahkan pelayan benar-benar telah dikunci?
Semak tiga perkara secara manual sebelum anda mempercayainya. Jalankan sudo ss -tlnp dan sahkan hanya port yang anda mahu buka sedang mendengar pada alamat awam, tanpa sebarang perkhidmatan 0.0.0.0 atau [::] yang anda terlupa. Jalankan sudo ufw status verbose dan sahkan polisi masuk lalai adalah deny dan kedua-dua peraturan biasa dan (v6) adalah ada. Dan sentiasa buka sesi SSH kedua sebelum anda menutup sesi pertama, supaya kesilapan dalam konfigurasi SSH tidak mengunci anda keluar dari pelayan. Jika ketiga-tiga perkara kelihatan betul, asas telah ditetapkan.