Ubuntu serverni noldan xavfsiz sozlash: to'liq qo'llanma
Yangi server internetga ulangan zahoti, bir necha daqiqa ichida unga botlar SSH orqali parol terib kirishga urinishni boshlaydi. Shuning uchun serverga loyiha joylashdan oldin uni himoyalash kerak. Bu qo'llanmada men har bir yangi serverda birinchi bajaradigan qadamlarimni ko'rsataman. Misollar Ubuntu 24.04 LTS uchun, lekin Debian'da ham deyarli bir xil ishlaydi.
1. Tizimni yangilash
Serverga birinchi marta root sifatida kirgach, avval barcha paketlarni yangilang:
apt update && apt full-upgrade -y
reboot
2. Alohida admin foydalanuvchi yaratish
Kundalik ishni root ostida qilish xavfli. O'zingiz uchun foydalanuvchi yarating va unga sudo huquqi bering:
adduser nodirbek
usermod -aG sudo nodirbek
3. SSH kalit bilan kirish
Parol taxmin qilinishi mumkin, kalitni esa taxmin qilib bo'lmaydi. O'z kompyuteringizda (serverda emas) kalit yarating:
ssh-keygen -t ed25519 -C "nodirbek@laptop"
So'ng ochiq kalitni serverga yuboring:
ssh-copy-id nodirbek@SERVER_IP
Endi parolsiz kira olishingizni tekshiring: ssh nodirbek@SERVER_IP.
4. SSH'ni qattiqlashtirish
Asosiy sshd_config faylini tahrirlash o'rniga alohida sozlama fayli yaratamiz. Fayl nomi 00- bilan boshlanadi, chunki SSH birinchi o'qigan qiymatni oladi. Ba'zi bulutli serverlarda 50-cloud-init.conf fayli parol bilan kirishni qayta yoqib qo'yadi, bizning faylimiz undan oldin o'qiladi.
sudo nano /etc/ssh/sshd_config.d/00-hardening.conf
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
X11Forwarding no
AllowUsers nodirbek
Sozlamalarni tekshiring va SSH'ni qayta ishga tushiring:
sudo sshd -t
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication'
sudo systemctl restart ssh
Natijada permitrootlogin no va passwordauthentication no chiqishi kerak. Endi yangi terminal oynasida qayta kirib ko'ring. Kirish ishlasagina eski oynani yoping.
5. UFW firewall
Faqat kerakli portlarni oching, qolganini yoping. SSH'ga ruxsatni firewall'ni yoqishdan oldin bering!
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
Agar serverga faqat ofis IP manzilidan kirsangiz, SSH'ni o'sha IP bilan cheklash yanada xavfsiz:
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
sudo ufw delete allow OpenSSH
6. Fail2ban: brute-force hujumlardan himoya
Fail2ban loglarni kuzatib boradi va ko'p marta noto'g'ri kirishga uringan IP manzillarni vaqtincha bloklaydi.
sudo apt install fail2ban -y
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd
[sshd]
enabled = true
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
7. Avtomatik xavfsizlik yangilanishlari
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
Bu sozlama xavfsizlik yamoqlarini har kuni avtomatik o'rnatib turadi.
8. Yakuniy tekshiruv
Serverda qaysi portlar tinglayotganini ko'ring. Ro'yxatda siz bilmagan servis bo'lmasligi kerak:
sudo ss -tulpn
Xulosa: tekshiruv ro'yxati
- ✅ Tizim yangilangan
- ✅ Root o'rniga alohida sudo foydalanuvchi
- ✅ SSH faqat kalit bilan, root kirish o'chirilgan
- ✅ UFW yoqilgan, faqat kerakli portlar ochiq
- ✅ Fail2ban ishlayapti
- ✅ Avtomatik xavfsizlik yangilanishlari yoqilgan
Bu asosiy qadamlar. Keyingi maqolalarda Nginx'ni xavfsiz sozlash, Let's Encrypt bilan bepul HTTPS olish va Kerio Control'da tarmoq qoidalarini yozish haqida gaplashamiz.
Shuningdek o'qing: Kerio Control'da firewall qoidalarini to'g'ri sozlash.