Faqat VPN uchun NGINX sayti: tinglovchi, xavfsizlik devori va HTTP ruxsatlar ro'yxati
Xususiy NGINX saytiga bog'langan VPN soketi, cheklangan xost kirish qoidasi va butun HTTP kirish ro'yxati kerak. Bitta server blokini emas, uchtasini ham sinab ko'ring.
Xususiy sayt va internet o'rtasida uchta mustaqil qaror turadi: qaysi soket ulanishni qabul qiladi, qaysi yo'l uni yetkazishi mumkin va tanlangan server qaysi HTTP mijozlariga javob beradi. Server bloki faqat birinchi qarorni qabul qiladi. Qolgan ikkitasiga alohida nazorat sifatida qarang, aks holda eski kirish ochiq qolgan holda sayt xususiy ko'rinadi. Faqat VPN uchun mo'ljallangan NGINX nosozliklarining aksariyati faqat birinchi qatlamni sinashdan kelib chiqadi.
Misol tun0 ustida 10.90.0.1 manzilidagi Linux OpenVPN darvozasini, 10.90.0.0/24 tarmog'idagi mijozlarni, saqlangan manbalarni va shu kirish uchun ajratilgan TCP 8443 portini ishlatadi. Qiymatlarni moslang, qatlamlarni saqlang.
Xost nomidan emas, soketdan boshlang
HTTPS tinglovchisini tunnel manziliga va alohida portga bog'lang. Aniq manzil haqida o'ylash joker soket va nom tekshiruvidan osonroq, chunki yadro portni boshqa mahalliy manzilga bermaydi.
server {
listen 10.90.0.1:8443 ssl;
server_name admin.corp.example;
ssl_certificate /etc/nginx/tls/admin-fullchain.pem;
ssl_certificate_key /etc/nginx/tls/admin-key.pem;
root /srv/private-site;
allow 10.90.0.0/24;
deny all;
location / {
try_files $uri $uri/ =404;
}
}
Sertifikatda mijozlar kiritadigan xizmat xost nomi bo'lishi kerak, xususiy DNS ko'rinishi esa o'sha xostni bog'langan manzilga hal qilishi kerak. server_name faqat virtual xostni tanlaydi; u hech kimni autentifikatsiya qilmaydi. DNS yozuvi bo'lmasa, TLS nosozligiga o'xshaydigan sertifikat xatosi paydo bo'ladi. Sertifikatni almashtirishdan oldin nomni tekshiring.
Faylni qo'shishdan oldin amaldagi konfiguratsiyani o'qing. Qo'shimchalar va joker tinglovchilar bir xil ildizni boshqa joyda xizmat qilishi mumkin, standart server esa yangi blok hech qachon ko'rmaydigan so'rovlarga javob berishi mumkin.
O'sha tarkib uchun boshqa har bir tinglovchini yoping
listen ko'rsatmalarini sanab, ular xizmat qiladigan ildizlarni taqqoslang. Boshqa dastur uchun qo'shilgan blok bir xil upstream'ga proksi qilishi mumkin, eski standart server esa yangisi o'rnatilgandan keyin ham javob berishda davom etishi mumkin. O'sha chiqish haqiqiy ro'yxat, hozir tahrirlangan fayl emas. Bir xil tarkibni xizmat qiladigan har bir ildizni taqqoslang.
sudo nginx -T | grep -n "listen\|server_name\|root\|proxy_pass"
Ikkita manzil oilasini ham tekshiring. IPv4 bog'lash IPv6 soketini tegilmagan holda qoldiradi va yangi A yozuvi hali ham ommaviy yo'lga ishora qiluvchi eski AAAA javobini qaytarib olmaydi.
Eski virtual xostni alohida o'zgartirish sifatida bekor qiling. Yangi blokning ommaviy egizagini olib tashlash odatda kirishni haqiqatan yopadigan qadam; xususiy tinglovchi faqat mo'ljallanganini qo'shadi.
Xostda kiruvchi yo'l doirasini cheklang
Tinglash manzili soketni cheklaydi, kirish interfeysini emas. Boshqa joydan o'sha manzilga yo'naltirilgan paket baribir mahalliy kirish sifatida keladi, shuning uchun xost xavfsizlik devoriga ulanish qayerdan kelishi mumkinligi haqida o'z bayonoti kerak. Shuning uchun faqat bog'lash audit talabini kamdan-kam qondiradi.
Standart rad etish kiruvchi siyosati va bu xizmat uchun kengroq ruxsat bo'lmaganda, cheklangan qoida tunnelni, manba diapazonini, manzilni va portni birga nomlaydi:
sudo ufw allow in on tun0 proto tcp from 10.90.0.0/24 to 10.90.0.1 port 8443
Qo'llashdan oldin xavfsizlik devorining amaldagi tartibini o'qing. Oldingi keng qabul cheklovni bekor qilishi mumkin, oldingi yakuniy tashlash esa bu ruxsatga yetib borishga to'sqinlik qilishi mumkin. Misol mos kelishi uchun aloqasiz qoidalarni tozalamang va xavfsizlik devorini o'chirmang.
Bu qoida xostga kirish, boshqa LAN mashinasiga yo'l emas, darvozaning tashqi OpenVPN tinglovchisi esa alohida xizmat bo'lib qoladi. Agar sayt avval ommaviy bo'lgan bo'lsa, eski kirish qanday bekor qilinishini va mavjud sessiyalar qanday boshqarilishini rejalashtiring.
Joylar o'zgarganda HTTP ro'yxatini butun saqlang
NGINX allow va deny yozuvlarini tartib bilan baholaydi, yuqoridagi server darajasidagi ro'yxat esa yakuniy deny oldidan e'lon qilingan guruhni o'tkazadi. Kirish moduli shuningdek istalgan kirish yozuvini belgilovchi joy ota ro'yxat o'rniga o'z ro'yxatidan foydalanishini qayd etadi. Tartib yozuvlarning o'zi kabi muhim.
O'sha qayta o'rnatish odatiy regressiya. Bitta yozuv qo'shadigan yangi yuklash, API yoki salomatlik joyi server darajasidagi cheklovni jimgina almashtiradi va sayt eng oxirgi qo'shilgan yo'lda kengayadi.
Har bir joy, taxallus va muqobil blokni bir xil siyosatning qismi sifatida ko'rib chiqing. Agar IP tekshiruvlari NGINX autentifikatsiyasi bilan birlashtirilsa, satisfy ni tushuning: any sozlamasi mijozni bir mexanizm orqali o'tkazishi mumkin, ikkinchisi hali o'tmagan bo'lsa. Kirish ro'yxatini joylarni ko'rib chiqish ro'yxatiga kiriting.
HTTP rad etish TCP ulanishi NGINX ga yetgandan keyin sodir bo'ladi. U tarmoq cheklovini to'ldiradi, dasturning o'z avtorizatsiyasi esa har bir foydalanuvchiga nisbatan amal qiladi.
Jonli yo'lni va nosozlik holatini tekshiring
Konfiguratsiya tahlilchisini ishga tushiring, tinglayotgan soketlarni ko'zdan kechiring, so'ng mo'ljallangan mijozdan yangi nomlangan so'rov yuboring. Sertifikat tasdiqlanishini, DNS nomi bog'langan manzilga hal bo'lishini va javob kutilgan ildizdan kelishini tasdiqlang.
Keyin chetlashtirilgan manba va muqobil kirishni sinab ko'ring. Ishlayotgan ruxsat berilgan so'rov siz yopmoqchi bo'lgan yo'llar haqida hech narsa demaydi, aynan chetlashtirilgan sinovda qolib ketgan tinglovchi yoki keng xavfsizlik devori qabuli ko'rinadi.
Yuklash yoki VPN tiklash holatini takrorlang. Agar NGINX tunnel manzili mavjud bo'lishidan oldin ishga tushsa, mukammal fayl bilan ham bog'lash muvaffaqiyatsiz bo'lishi mumkin. Manzil tayyorligini muvofiqlashtiring va umumiy veb-serverni o'zgartirishdan oldin mahalliy tiklash yo'lini saqlang.
O'tgan soket, port, manba diapazoni va HTTP ro'yxatini yozib qo'ying. Keyingi VPN yoki DNS o'zgarishi ularning har birini siljitishi mumkin, to'rtta nomlangan qiymatni taqqoslash esa ishlayotgan brauzer yorlig'idan oson.