VPS ishga tushirilgandan bir necha daqiqa o'tib uning SSH portiga notanish manzillardan ulanish urinishlari kela boshlaydi. Bu shaxsan sizga qarshi hujum emas: internetda ochiq serverlarni avtomatik qidiradigan botlar doimo ishlaydi va oddiy parollarni sinab ko'radi. Shuning uchun serverga sayt yoki ilova o'rnatishdan oldin bir nechta asosiy sozlamalarni bajarib qo'yish kerak. Quyidagi tartib Ubuntu 22.04 va 24.04 uchun yozilgan, Debian'da ham deyarli bir xil ishlaydi.
1. Birinchi ulanish va tizimni yangilash
Server tayyor bo'lgach, sizga IP manzil va root paroli yoki SSH kaliti beriladi. Kompyuteringizdagi terminaldan ulaning va birinchi navbatda paketlarni yangilang. Tayyor obrazlar bir necha hafta yoki oy oldin yig'ilgan bo'lishi mumkin, shuning uchun ularda yopilmagan xavfsizlik tuzatishlari bo'ladi:
ssh root@203.0.113.10
apt update && apt upgrade -y
Yangilanish yadroni ham o'z ichiga olgan bo'lsa, tizim qayta yuklashni talab qiladi. Buni /var/run/reboot-required fayli mavjudligidan bilish mumkin. Hozircha qayta yuklamay, keyingi sozlamalarni tugatib, oxirida bir marta reboot qilish qulayroq.
2. Root o'rniga alohida foydalanuvchi
Har kuni root ostida ishlash xavfli: bitta noto'g'ri buyruq butun tizimni buzishi mumkin, root paroli esa botlar eng ko'p sinaydigan hisob. Shuning uchun o'zingiz uchun oddiy foydalanuvchi yarating va unga sudo huquqini bering. Quyidagi misolda foydalanuvchi nomi deploy, uni o'zingizga mos nom bilan almashtiring:
adduser deploy
usermod -aG sudo deploy
adduser parol so'raydi. Bu parol SSH orqali kirish uchun emas, sudo buyruqlarini tasdiqlash uchun kerak bo'ladi, shuning uchun uni uzun va murakkab qiling.
3. SSH kalit bilan kirish
Parol bilan kirish o'rniga kalit juftligidan foydalanish eng muhim qadamlardan biri. Kalit kompyuteringizda yaratiladi: maxfiy qismi sizda qoladi, ochiq qismi serverga ko'chiriladi. Agar sizda hali kalit bo'lmasa, uni o'z kompyuteringizda yarating va serverga yuboring. Windows 10 va 11'da ham bu buyruqlar PowerShell'da ishlaydi, faqat ssh-copy-id bo'lmasa, ochiq kalitni qo'lda nusxalash kerak:
ssh-keygen -t ed25519 -C "laptop-ofis"
ssh-copy-id deploy@203.0.113.10
Endi yangi terminal oynasida ssh deploy@203.0.113.10 bilan kirib ko'ring. Parol so'ralmasa yoki faqat kalit paroli so'ralsa, kalit to'g'ri ishlayapti. sudo -v buyrug'i bilan sudo huquqi borligini ham tekshiring.
4. Root va parol bilan kirishni yopish
Kalit ishlashiga ishonch hosil qilgandan keyin SSH sozlamalarida root kirishini va parol bilan autentifikatsiyani o'chirish mumkin. Ubuntu'ning yangi versiyalarida asosiy fayldan tashqari /etc/ssh/sshd_config.d/ papkasidagi fayllar ham o'qiladi va ulardan biri, masalan bulut obrazlarida 50-cloud-init.conf, parol bilan kirishni qayta yoqib qo'yishi mumkin. Shuning uchun o'z sozlamangizni alohida faylga yozish va boshqa fayllarni tekshirish ishonchliroq:
sudo nano /etc/ssh/sshd_config.d/00-hardening.conf
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
Fayl nomi 00 bilan boshlanadi, chunki SSH bir parametr uchun birinchi uchragan qiymatni oladi va fayllar alifbo tartibida o'qiladi. Sozlamani tekshirib, xizmatni qayta ishga tushiring:
sudo sshd -t
sudo grep -ri passwordauthentication /etc/ssh/sshd_config /etc/ssh/sshd_config.d/
sudo systemctl restart ssh
Eng muhim qoida: joriy SSH sessiyasini yopmang. Yangi oynada qayta ulanib ko'ring va hammasi ishlaganiga ishonch hosil qilgandan keyingina eski oynani yoping. Aks holda bitta xato tufayli serverdan butunlay chiqib qolishingiz mumkin.
5. Fayrvol: faqat keraklisini oching
Ubuntu'da UFW oddiy va qulay fayrvol. Avval SSH'ga ruxsat berish, keyin fayrvolni yoqish kerak, aks holda ulanish uzilib qoladi. Veb-sayt joylashtirmoqchi bo'lsangiz, 80 va 443 portlarini ham oching:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
MySQL, Redis yoki ilova portlarini tashqariga ochmang. Ular serverning ichida 127.0.0.1 orqali ishlashi yetarli. Qaysi xizmatlar qaysi portlarda tinglayotganini sudo ss -tulpn bilan ko'rish mumkin.
6. Vaqt mintaqasi va server nomi
Loglar, cron vazifalari va zaxira nusxalar vaqti to'g'ri ko'rinishi uchun vaqt mintaqasini sozlang. O'zbekistondagi loyiha uchun bu Asia/Tashkent. Server nomi esa bir nechta server bilan ishlaganda qaysi terminalda turganingizni adashtirmaslikka yordam beradi:
sudo timedatectl set-timezone Asia/Tashkent
sudo hostnamectl set-hostname web1.example.uz
timedatectl
7. Avtomatik xavfsizlik yangilanishlari
Serverni har kuni qo'lda yangilab borish oson emas. Ubuntu'da xavfsizlik yangilanishlarini avtomatik o'rnatuvchi paket bor va ko'p obrazlarda u oldindan o'rnatilgan bo'ladi. U yoqilganini tekshirib qo'ying:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Bu faqat tizim paketlarini qamrab oladi. Sayt dvigateli, plaginlar va ilova kutubxonalarini yangilash baribir sizning vazifangiz bo'lib qoladi.
8. Parol tanlovchi botlarga qarshi fail2ban
Parol bilan kirish yopilgan bo'lsa ham, botlar urinishda davom etadi va loglarni to'ldiradi. fail2ban ko'p marta muvaffaqiyatsiz uringan manzillarni vaqtincha bloklaydi. Ubuntu'da u o'rnatilgandan keyin SSH uchun himoya standart holatda yoqilgan bo'ladi:
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
Misol: kichik onlayn do'kon uchun tayyorgarlik
Toshkentdagi kiyim do'koni o'z saytini umumiy hostingdan VPS'ga ko'chirmoqchi deylik. Dasturchi serverni olgan kuni avval yuqoridagi sakkiz qadamni bajaradi, keyin qayta yuklaydi va faqat shundan so'ng Nginx, PHP va MySQL o'rnatishga o'tadi. Bu tartib ishning keyingi bosqichlarini ham soddalashtiradi: barcha o'rnatishlar alohida foydalanuvchi ostida, faqat kerakli portlar ochiq holda bajariladi. Domen DNS yozuvini yangi serverga yo'naltirish esa eng oxirida, sayt to'liq tekshirilgandan keyin qilinadi. sayt.uz'da domen yozuvlari kabinetdagi DNS bo'limida o'zgartiriladi.
Barcha qadamlardan keyin serverni sudo reboot bilan qayta yuklang va yangi foydalanuvchi bilan kalit orqali qayta kira olishingizni yana bir bor tekshiring. Shu yarim soatlik ish keyinchalik ko'plab muammolarning oldini oladi.