Serverning bazaviy himoyasi: SSH, firewall, fail2ban
Sozlanmagan yangi VPS — ochiq eshik: botlar sutkalab SSH orqali parollarni tanlaydi va teshiklarni qidiradi. Yaxshi xabar — bazaviy himoya 15–20 daqiqa oladi va avtomatik hujumlarning aksariyatini yopadi. Quyida ikki OS oilasi uchun bosqichma-bosqich minimum: Ubuntu / Debian (paket menejeri apt, firewall ufw) va AlmaLinux / Rocky / CentOS (paket menejeri dnf, firewall firewalld).
Nimadan boshlash kerak
- Tizimni yangilang server yaratilgandan so‘ng darhol.
- Alohida administrator huquqli foydalanuvchi yarating — root ostida ishlamang.
- SSH-kalit orqali kirishni sozlang va parol bilan kirishni o‘chiring.
- Firewall’ni yoqing va faqat kerakli portlarni qoldiring.
- fail2ban va avtomatik xavfsizlik yangilanishlarini o‘rnating.
Tartib muhim. Avval yangi foydalanuvchi uchun kalit bilan kirishni sozlang va tekshiring, faqat shundan keyin parol va root’ni o‘chiring — aks holda o‘zingizni kirishdan mahrum qilishingiz mumkin. Yangi kirish ishlashiga ishonch hosil qilguningizcha ikkinchi SSH-sessiyani ochiq saqlang.
1. Tizim yangilanishlari
Ubuntu / Debian
sudo apt update && sudo apt upgrade -y
AlmaLinux / Rocky / CentOS
sudo dnf upgrade -y
So‘ng avtomatik xavfsizlik yangilanishlarini yoqing, muhim patchlar o‘zi o‘rnatilishi uchun.
Ubuntu / Debian
sudo apt install -y unattended-upgrades sudo dpkg-reconfigure -plow unattended-upgrades # «Yes» ni tanlang
AlmaLinux / Rocky / CentOS
sudo dnf install -y dnf-automatic # /etc/dnf/automatic.conf da ko‘rsating: apply_updates = yes sudo systemctl enable --now dnf-automatic.timer
2. root o‘rniga alohida foydalanuvchi
root ostida ishlash xavfli: har qanday xato yoki buzish darhol to‘liq nazoratni beradi. Oddiy foydalanuvchi yarating va unga administrator huquqlarini bering. E’tibor bering: Ubuntu/Debian’da bu sudo guruhi, AlmaLinux/Rocky/CentOS’da — wheel guruhi.
Ubuntu / Debian
sudo adduser myuser sudo usermod -aG sudo myuser
AlmaLinux / Rocky / CentOS
sudo useradd myuser sudo passwd myuser sudo usermod -aG wheel myuser
root’ni cheklashdan oldin yangi foydalanuvchi sudo orqali buyruq bajara olishini tekshiring.
3. SSH-kalit orqali kirish
Kalit paroldan ishonchliroq va tanlab bo‘lmaydi. Quyidagi buyruqlar barcha OS uchun bir xil. Agar kalit hali bo‘lmasa, uni o‘z kompyuteringizda yarating:
ssh-keygen -t ed25519 -C "moy-noutbuk"
Ochiq kalitni serverga nusxalang (kerakli foydalanuvchi uchun):
ssh-copy-id myuser@server_IP # so‘ng kalit bilan kirishni tekshiring: ssh myuser@server_IP
Maxfiy kalitni hech kimga bermang. Serverga faqat ochiq kalit (
.pub) yuklanadi. Maxfiysi qurilmangizda qoladi.
4. SSH sozlamalarini kuchaytirish
Kalit bilan kirish ishlagandan so‘ng, root va parol bilan kirishni o‘chiring. Konfiguratsiya fayli /etc/ssh/sshd_config barcha OS uchun bir xil. Parametrlarni bering (yoki izohdan chiqaring):
PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes
O‘zgarishlarni qo‘llang. Muhim: SSH xizmati Ubuntu/Debian’da ssh, AlmaLinux/Rocky/CentOS’da — sshd deb ataladi.
Ubuntu / Debian
sudo systemctl restart ssh
AlmaLinux / Rocky / CentOS
sudo systemctl restart sshd
Joriy sessiyani darhol yopmang. Yangi SSH-ulanish oching va kalit bilan kirish ishlashiga ishonch hosil qiling. Nimadir noto‘g‘ri bo‘lsa — ochiq sessiyada sozlamalarni qaytarasiz.
Standart 22-portni nostandartga o‘zgartirish — majburiy emas, lekin botlardan loglardagi shovqinni kamaytiradi. Portni o‘zgartirsangiz, uni firewall’da oching (RHEL’da SELinux yoqilgan bo‘lsa — portga ruxsat ham bering: sudo semanage port -a -t ssh_port_t -p tcp <port>).
5. Firewall
Qoida oddiy: hammasini yopish, faqat kerakligini ochish (odatda SSH va veb-portlar). Ubuntu/Debian’da bu ufw, AlmaLinux/Rocky/CentOS’da — firewalld.
Ubuntu / Debian (ufw)
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow OpenSSH # yoki sizning SSH-portingiz sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable sudo ufw status
AlmaLinux / Rocky / CentOS (firewalld)
sudo systemctl enable --now firewalld sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload sudo firewall-cmd --list-all
Avval SSH’ga ruxsat bering, keyin firewall’ni yoqing. Kiruvchilarni SSH qoidasisiz yopsangiz, serverga kirishni yo‘qotishingiz mumkin.
6. Tanlashdan himoya (fail2ban)
fail2ban loglarni o‘qiydi va parollarni tanlayotgan IP’larni banlaydi. Ubuntu/Debian’da u to‘g‘ridan-to‘g‘ri o‘rnatiladi; AlmaLinux/Rocky/CentOS’da EPEL repozitoriysi kerak.
Ubuntu / Debian
sudo apt install -y fail2ban sudo systemctl enable --now fail2ban
AlmaLinux / Rocky / CentOS
sudo dnf install -y epel-release sudo dnf install -y fail2ban sudo systemctl enable --now fail2ban
SSH bo‘yicha holat va banlangan manzillarni tekshirish (bir xil):
sudo fail2ban-client status sshd
Sozlash —
/etc/fail2ban/jail.localda. U yerda ban vaqti va urinishlar soni beriladi. RHEL’da SSH himoyasi uchun[sshd]seksiyasinienabled = truevabackend = systemd(yokilogpath = /var/log/secure) bilan yarating; Ubuntu/Debian’da SSH-jail sukut bo‘yicha yoqilgan.
7. Ortiqchasini olib tashlash
- Xizmatlar kamroq — xavf kamroq. Ishlatmaydiganingizni o‘chiring:
sudo systemctl disable --now <xizmat>. - Ochiq portlarni tekshiring:
sudo ss -tulpn— tashqariga faqat kerakligi qarashi kerak (buyruq barcha OS’da ishlaydi). - Boevoy serverga «sinab ko‘rish uchun» dastur o‘rnatmang va ishlatilmaydigan paketlarni o‘chiring.
AlmaLinux/Rocky/CentOS’da SELinux — o‘chirmang. U himoya qatlamini qo‘shadi.
enforcingrejimini qoldiring (tekshirish —getenforce). Ubuntu/Debian’da shunga o‘xshash rolni sukut bo‘yicha yoqilgan AppArmor bajaradi.
8. Zaxiralar — xavfsizlikning bir qismi
Hatto mukammal himoyalangan serverni ham tiklash imkoniyati bo‘lgani ma’qul. Zaxira nusxalari — shifrlovchilardan, xatolardan va nosozliklardan himoya.
- Snapshotlar serverplus panelida — tez qaytish.
- Ma’lumotlarni S3 obyekt xotirasiga yuklash serverplus — serverdan alohida nusxa.
- 3-2-1 qoidasi: uchta nusxa, ikki xil tashuvchida, biri — serverdan tashqarida.
Tiklashni tekshiring. Hech qachon tiklanmagan zaxira — bu hali zaxira emas. Vaqti-vaqti bilan nusxani yoyib ko‘ring.
Qisqa nazorat ro‘yxati
- Tizim yangilangan, avtomatik xavfsizlik yangilanishlari yoqilgan.
- Alohida administrator foydalanuvchi bor (
sudoyokiwheel), root SSH orqali o‘chirilgan. - SSH-kalit orqali kirish, SSH paroli o‘chirilgan.
- Firewall yoqilgan (
ufwyokifirewalld), faqat kerakli portlar ochiq. - fail2ban ishlaydi.
- SELinux/AppArmor ishchi rejimda; snapshotlar va S3 zaxiralari sozlangan.
Ko‘p beriladigan savollar
Parol bilan kirishni o‘chirish majburiymi?
Qat’iy tavsiya etiladi. Parolni tanlab bo‘ladi, kalitni — deyarli yo‘q. Agar parol zaxira variant sifatida kerak bo‘lsa, uni uzun va noyob qiling va albatta fail2ban o‘rnating.
Buyruqlar mening OS’imga mos kelmayapti.
Maqolada ikki to‘plam: apt/ufw — Ubuntu/Debian uchun, dnf/firewalld — AlmaLinux/Rocky/CentOS uchun. Tizimingizni bilish: cat /etc/os-release.
Standart SSH-portni o‘zgartirish kerakmi?
Bu o‘zi «himoya» emas, lekin avtomatik hujumlar oqimini va loglardagi axlatni kamaytiradi. RHEL’da SELinux bilan yangi portga ruxsat berishni unutmang (SSH bo‘limiga qarang). Kalitlar va fail2ban bilan birga foydali, ular o‘rniga emas.
Men tasodifan SSH kirishni yopib qo‘ydim. Nima qilish kerak?
serverplus panelidagi veb-konsoldan (VNC) foydalaning — u SSH’ni chetlab serverga kirish beradi. U orqali sshd_config sozlamalarini yoki firewall qoidalarini qaytarish mumkin.
Serverni buzishga urinishganini qanday bilaman?
Kirish loglariga va fail2ban holatiga qarang. Kirish jurnali: Ubuntu/Debian’da /var/log/auth.log, AlmaLinux/Rocky/CentOS’da /var/log/secure (yoki sudo journalctl -u ssh / sshd). Ko‘p muvaffaqiyatsiz urinishlar — internet uchun me’yor; kalitlar va firewall bilan ular natijasiz.