Asas keselamatan pelayan yang sering diabaikan
Kebanyakan pelayan yang saya semak bukan digodam melalui lubang yang canggih — tetapi melalui perkara asas yang terlupa ditutup.
Apabila saya menerima pelayan baharu untuk disemak, saya tidak mula dengan alat pengimbas. Saya mula dengan tiga soalan mudah: apa yang sedang mendengar dari internet, siapa yang boleh masuk ke dalam, dan apa yang berlaku jika saya kehilangan semuanya hari ini.
1. Port yang sepatutnya hanya untuk dalaman
Kesilapan paling kerap ialah servis aplikasi yang dibuka terus ke internet. Contohnya pelayan aplikasi yang berjalan pada port 8888 — jika ia boleh diakses dari luar, maka lapisan hadapan (nginx) yang kita konfigurasi dengan penuh teliti itu boleh dilangkau terus. Semak dengan jujur:
ss -tlnp | grep -v 127.0.0.1
Setiap baris yang keluar daripada arahan itu patut ada sebab yang jelas. Jika tidak, ia patut dikunci kepada localhost sahaja dan diakses melalui proksi.
2. Firewall bukan pilihan, ia asas
Tanpa firewall, setiap servis yang membuka port akan kelihatan kepada seluruh internet dalam masa beberapa minit — bot pengimbas tidak pernah tidur. Dengan firewall, hanya port yang kita sengaja benarkan sahaja yang wujud kepada dunia.
ufw default deny incoming\nufw allow 22/tcp\nufw allow 80/tcp\nufw allow 443/tcp\nufw enable
3. Cubaan masuk berulang adalah normal
Angka yang menakutkan di dalam log tidak semestinya bermakna pelayan awak telah ditembusi. Pelayan yang saya uruskan menerima ratusan hingga ribuan cubaan log masuk gagal sehari — itu bunyi latar belakang internet, bukan serangan yang disasarkan. Yang penting bukan bilangannya, tetapi: adakah semuanya gagal, dan adakah sistem menyekat sumber yang degil secara automatik?
Sebab itu saya sentiasa memasang perlindungan brute-force dengan tindakan yang jelas: beberapa cubaan salah, kemudian alamat itu disekat untuk tempoh tertentu.
4. Aplikasi tidak sepatutnya berjalan sebagai root
Ini satu perubahan kecil dengan kesan besar. Jika penyerang berjaya menembusi aplikasi yang berjalan sebagai root, dia mendapat seluruh pelayan. Jika aplikasi itu berjalan sebagai pengguna khas yang terhad, kerosakan yang boleh dilakukannya jauh lebih kecil — dan dia tidak boleh mengubah kod pelayan itu sendiri.
5. Tanpa sandaran, tiada pemulihan
Ancaman yang paling kerap merosakkan perniagaan kecil bukan penggodam, tetapi kecuaian: fail terpadam, jadual pangkalan data yang rosak, atau peningkatan sistem yang gagal. Sandaran yang tidak pernah diuji bukan sandaran — ia harapan. Uji pemulihan sekurang-kurangnya sekali, dan pastikan ada satu salinan di luar pelayan itu sendiri.