VPN-dən VLAN-a giriş: qaydalardan əvvəl matrisi qurun
Bir tərəfdə rollar, digər tərəfdə xidmətlər. Beş yoxlama qeyri-müəyyən VPN-dən VLAN-a dizaynını firewall sahibinin tətbiq edə biləcəyi cədvələ çevirir.
Matrisdən başlayın, firewall sintaksisindən yox. Bir tərəfdə rolların, digər tərəfdə xidmətlərin olduğu cədvəli tətbiq sahibi nəzərdən keçirə, təhlükəsizlik sahibi müzakirə edə və şlüzü idarə edən hər kəs tətbiq edə bilər. Bu baxış heç kimin razılaşmadığı qaydaları sazlamaqdan ucuzdur.
Onu yazmağa sərf olunan bir saat sonradan bir həftəlik qayda arxeologiyasına qənaət edir. Dizayn kimin hansı xidmətə çatdığından danışır və yenidən nömrələmədən sonra qalan hissə məhz budur.
Addım 1: rolları şəbəkələrdən əvvəl adlandırın
İnsanlardan başlayın, kommutatordan yox. Uzaqdan qoşulan hər qrupu və həmin qrupun nə etdiyini təsvir edən tək cümləni yazın, məsələn ehtiyat səviyyələrini oxuyan anbar işçiləri və ya bir inteqrasiyaya baxan podratçı. Əgər iki qrup eyni giriş əldə edəcəksə, bu məqsəd üçün onlar bir roldur.
Əgər rol yalnız təşkilati sxemə görə mövcuddursa, burada dayanın. Fərqli xidmət ehtiyacı olmayan rol eyni hüceyrələrdən ibarət sıraya çevrilir və eyni sıralar sonradan rahatlıq üçün bütöv bir alt şəbəkənin verilməsini təklif edir. Bölgünü insanların nə etdiyinə görə edin, xərclərini kimin imzaladığına görə yox. Altı rol kiçik ofis üçün adətən çoxdur, üçü isə çox vaxt düzgündür.
Addım 2: hər hüceyrəni xidmət bəyanatına çevirin
“Tətbiqlər” yazan hüceyrə yoxlanıla bilməz. “443 portunda ERP hostuna HTTPS, işçi hovuzundan” yazan hüceyrə yoxlanıla bilər. Hər şəbəkə adını təyinat, protokol və portla əvəz edin, sonra xidmətin onsuz işləyə bilmədiyi asılılığı əlavə edin, məsələn daxili həlledici və ya kimlik provayderi.
| Check | Passes when | Stop if |
|---|---|---|
| Destination named | Host and port appear in the cell | Cell names a VLAN or a subnet |
| Direction stated | Initiator and responder are both clear | Cell implies two-way access |
| Dependency listed | DNS or identity path is explicit | Whole infrastructure range is granted |
| Negative case written | At least one denied pair is recorded | Only allow rules exist |
İstiqamət sütunu ən bahalı səhvləri tutur. İşçilərin tətbiqi açmasına icazə, tətbiq serverlərinin işçi noutbuklarına geri qoşulmasına icazə demək deyil və birinci istiqamətə icazə verən vəziyyətli qayda çox vaxt ikinciyə də icazə kimi oxunur.
Addım 3: kimliyin harada siyasətə çevrildiyinə qərar verin
Kimsə autentifikasiya olunmuş sessiyanı şlüzün tətbiq edə biləcəyi rola çevirməlidir. Dəstəklənən variantlara autentifikasiya backendinin verdiyi qrup siyasəti, etibarlı sessiya atributları və ya hər rol üçün ayrı ünvan hovuzları daxildir. Üçü də işləyir; müştərinin göndərdiyi etiket işləmir. Şlüzünüzün sənədləşdirdiyi mexanizmi seçin, forum yazısının təsvir etdiyini yox.
Yalnız VLAN-a aid görünən ünvan təyin etmək başqa libasda eyni cavabsızlıqdır. Netgate-in OpenVPN firewall qaydaları üzrə təlimatı bu ayrımı aydın edir: tunelin qalxmasına icazə vermək ondan trafikin keçməsinə icazə verməkdən fərqli qərardır.
Hansı mexanizmi seçdiyinizi və harada konfiqurasiya edildiyini yazın. Rol dəyişəndə bu qeyd bir düzəlişlə üç interfeysdə axtarış arasındakı fərqdir. O, həm də auditora ilk hara baxacağını deyir.
Addım 4: təyinatın gördüyü mənbə ünvanına baxın
Yönləndirmə siyasəti sərhəddə real mənbəyə uyğun olmalıdır. Əgər şlüz VPN müştərilərini öz ünvanına çevirirsə, aşağıdakı hər firewall bir mənbə görür və rol üzrə qərarlar vermə qabiliyyətini itirir. Əgər müştəri ünvanını saxlayırsa, həmin hovuz üçün geri dönüş yolu mövcud olmalıdır.
Yekun qaydaları yazmadan əvvəl hər iki istiqaməti yoxlayın, sonra müşahidə olunan mənbəni hər hüceyrənin yanında qeyd edin. Eyni yoxlamanı iki fərqli roldan keçirin və nəticəni müqayisə edin. Əgər hər ikisi şlüz ünvanını göstərirsə, rol fərqi artıq itib. Şlüz mənbə çevrilməsi edərkən saxlanılan ünvanları fərz edən matris ilk aşağı ACL-də uğursuz olur.
Addım 5: hər hüceyrəni buraxmadan əvvəl yoxlayın
Hər icazəli hüceyrəni bir nümunəvi əməliyyata, hər qadağan hüceyrəni isə mənfi hala çevirin. Hər ikisini real roldakı müştəridən işlədin, şlüz konsolundan yox, çünki konsol yoxladığınız yolu keçir.
# allowed: staff role reaches the ERP endpoint
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://erp.internal.example/health
# denied: the same role must not reach a management host
nc -vz -w 3 10.30.5.11 22
# observed source address at the destination
sudo tcpdump -ni any 'tcp port 443 and host 10.30.20.15'
Qoşulan mənfi hal nasazlıq deyil, tapıntıdır və qayda düzəldilənə qədər matrisdə uğursuz hüceyrə kimi yer almalıdır. Test əmrlərini cədvəlin yanında saxlayın ki, növbəti rəyçi əsaslandırmanı yenidən qurmaq əvəzinə onları təkrar işlətsin.
Tamamlanmış cədvəl yazıldığı şlüzdən daha uzun yaşayır. Qaydalar proqram təminatı və təchizatçı ilə dəyişir, podratçının bir layihə xidmətinə çatdığını deyən sətir isə həmin iş dəyişənə qədər doğru qalır.