Server
Ochiq portlar va serverni qattiqlashtirish (hardening)
Internetdan ochiq FTP va boshqaruv paneli portlari ekspertizada tez topiladi. Keraksiz xizmatlarni yopish, firewall va panel allowlist bo'yicha amaliy qo'llanma.
· 7 daq. o'qish

Veb-ilova kodi qanchalik puxta yozilgan bo'lmasin, u ishlaydigan server ham tekshiriladi. Rasmiy ekspertizada birinchi qilinadigan ishlardan biri — serverni tashqaridan portlar bo'yicha skanerlash. Agar internetdan faqat 80 va 443 emas, balki FTP, ma'lumotlar bazasi yoki boshqaruv paneli portlari ham ochiq bo'lsa, bu alohida topilma sifatida hisobotga tushadi.
O'z mahsulotimiz (soliq-moliya SaaS platformasi) ekspertizasida aynan shunday topilma bo'lgan: FTP va hosting paneli portlari internetdan ochiq edi. Bu maqolada uni qanday yopganimizni va serverni qattiqlashtirishning asosiy qadamlarini ko'rib chiqamiz.
Nega ochiq port xavfli
Har bir ochiq port — tashqi dunyo bilan gaplashayotgan dastur. U qancha ko'p bo'lsa, hujum yuzasi shuncha katta:
- FTP ma'lumotlarni, jumladan login va parolni, shifrlanmagan holda uzatadi. Bundan tashqari, u parol tanlash (brute force) hujumlarining odatiy nishoni.
- Boshqaruv panellari (hosting panel, ma'lumotlar bazasi web-interfeysi) serverga to'liq kirish imkonini beradi. Panelning o'zida zaiflik topilsa yoki parol sizib chiqsa, oqibati og'ir bo'ladi.
- Ma'lumotlar bazasi portlari (masalan, MySQL 3306, PostgreSQL 5432, Redis 6379) internetga ochiq bo'lmasligi kerak — ilova ularga server ichidan ulanadi.
- Unutilgan test xizmatlari ko'pincha yangilanmaydi va eski zaifliklar bilan qoladi.
Printsip: tashqaridan faqat foydalanuvchilarga kerakli xizmat ko'rinishi kerak. Odatda bu 443 (HTTPS) va yo'naltirish uchun 80. Qolgan hamma narsa — yopiq yoki faqat ruxsat etilgan manzillar uchun.
1-qadam: nima ochiqligini aniqlang
Avval server ichida qaysi xizmatlar qaysi manzilda tinglayotganini ko'ring:
sudo ss -tlnp
Natijada Local Address ustuniga e'tibor bering:
127.0.0.1:...yoki[::1]:...— faqat server ichidan ochiladi, bu yaxshi;0.0.0.0:...yoki*:...yoki[::]:...— barcha tarmoq interfeyslarida tinglaydi, firewall bo'lmasa internetdan ochiq.
Keyin tashqaridan tekshiring. Buni boshqa kompyuterdan, faqat o'z serveringizga nisbatan qiling:
nmap -Pn -p- your-server-ip
Ikki ro'yxatni solishtiring. Har bir ochiq port uchun savol bering: "bu xizmat kimga va nima uchun kerak?"
2-qadam: keraksiz xizmatlarni o'chiring
Eng ishonchli himoya — xizmatning umuman ishlamasligi. Agar FTP faqat bir marta fayl yuklash uchun o'rnatilgan bo'lsa, uni o'chiring va fayllarni SFTP (SSH orqali) yoki deploy jarayoni orqali uzating:
sudo systemctl disable --now vsftpd
Bizning holatda FTP xizmati umuman kerak emas edi — fayllar allaqachon SSH va git orqali yetkazilardi. Uni to'xtatish bilan topilmaning bir qismi yopildi.
Ma'lumotlar bazasi va kesh xizmatlarini faqat lokal manzilga bog'lang. Masalan, PostgreSQL uchun postgresql.conf faylida:
listen_addresses = 'localhost'
Redis uchun redis.conf faylida bind 127.0.0.1 ::1 qatori bo'lishi kerak.
3-qadam: firewall — standart holatda yopiq
Ubuntu'da eng sodda yo'l — ufw. Asosiy g'oya: kiruvchi ulanishlar standart holatda rad etiladi, faqat kerakli portlar ochiladi.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
Muhim: ufw enable dan oldin SSH portiga ruxsat berilganiga ishonch hosil qiling, aks holda serverga ulanish uzilishi mumkin. SSH standart bo'lmagan portda bo'lsa, shu portni ko'rsating.
Agar server bulut provayderida bo'lsa, provayderning tarmoq firewall'i (security group) ham borligini unutmang. Ikkalasini ham sozlash yaxshi amaliyot.
4-qadam: boshqaruv panelini allowlist ortiga yashiring
Hosting panel kabi vositalar ko'pincha kerak — ularni butunlay o'chirish har doim ham mumkin emas. Bu holda panel portini faqat ma'lum IP manzillardan ochiq qiling:
sudo ufw allow from 203.0.113.10 to any port 8888 proto tcp
Bu yerda 203.0.113.10 — ofis yoki administratorning doimiy IP manzili, 8888 — panel porti (o'zingizniki bilan almashtiring). Doimiy IP bo'lmasa, panelga faqat VPN yoki SSH tunnel orqali kiring:
ssh -L 8888:127.0.0.1:8888 user@your-server
Shundan keyin panel brauzerda http://127.0.0.1:8888 orqali ochiladi, tashqaridan esa ko'rinmaydi. Bizning holatda aynan shu yo'l tanlandi: panel porti hamma uchun yopildi va faqat ruxsat etilgan manzillar ro'yxatiga ochiq qoldi.
5-qadam: SSH'ni qattiqlashtiring
SSH ochiq qolishi kerak, shuning uchun uni mustahkamlang. /etc/ssh/sshd_config faylida:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
O'zgartirishdan oldin kalit bilan kira olishingizni tekshiring, keyin sudo systemctl reload ssh. Qo'shimcha ravishda fail2ban kabi vosita takroriy muvaffaqiyatsiz urinishlarni bloklaydi.
Qo'shimcha qattiqlashtirish
- Tizim paketlarini muntazam yangilang; Ubuntu'da
unattended-upgradesxavfsizlik yangilanishlarini avtomatik o'rnatadi. - Har bir xizmat o'z cheklangan foydalanuvchisi ostida ishlasin, root ostida emas.
- Server versiyasini javoblarda yashiring (
server_tokens off). - Loglarni kuzating: SSH kirishlar, panel kirishlar, firewall rad etgan ulanishlar.
- O'zgarishlardan keyin
ss -tlnpva tashqi skanerni qayta ishga tushiring.
Standartlar
Bu talablar OWASP Top 10 (2021) dagi A05 "Security Misconfiguration" toifasiga to'g'ri keladi. CIS Benchmarks hujjatlari Ubuntu va boshqa tizimlar uchun batafsil qattiqlashtirish ro'yxatlarini taqdim etadi — ularni yo'l-yo'riq sifatida ishlatish qulay.
Xulosa
Ochiq portlar masalasi kod o'zgartirishni talab qilmaydi, lekin unutilishi oson. Bizning jarayonda Claude AI agenti server konfiguratsiyasi va tinglayotgan xizmatlar ro'yxatini ko'rib chiqadi, mutaxassis esa firewall qoidalarini xavfsiz tartibda qo'llaydi va natijani tashqaridan qayta tekshiradi.
Serveringiz tashqaridan qanday ko'rinishini bilmoqchi bo'lsangiz, skanerlash uchun ariza qoldiring. Biz ochiq qolgan xizmatlarni rasmiy ekspertizadan oldin yopishga yordam beramiz.


