Временни връзки за списък с разрешени IP адреси: какво всъщност допуска разрешението
Връзка, която отваря порт на защитна стена, допуска адрес, а не човек. Определете обхвата, изисквайте съзнателно потвърждение и тествайте повторението, изтичането и IPv6.
Превръщането на едно кликване във временно правило на защитна стена е удобно и също така изгражда система за оторизация, която решава кой може да достигне дадена услуга. Тя издава адрес, а не човек, и тази разлика има значение в момента, в който двама души споделят един NAT. Очертайте обхвата на разрешението, потвърдете го съзнателно и придайте смисъл на изтичането, преди връзката да бъде създадена. Решението пред вас е къде да поставите границата, а не дали такава трябва да съществува.
Решете на кой въпрос отговаря разрешението
Започнете от изискването. Ако определен човек трябва да достигне услугата и приложението вече удостоверява този човек, удостоверен шлюз запазва самоличността в точката на прилагане и изобщо не се нуждае от допускане на адрес. Ако целта е агент за изграждане, административен порт за прескачане или устройство, което не може да участва в потребителски вход, ограничено разрешение за адрес може да е единственият практичен контрол.
Изборът на допускане по адрес за приложение, насочено към потребители, премества истинския проблем с оторизацията другаде и порталът поема вината за празнина, която никога не е затворил.
Ограничете заявката на сървъра
Браузърът не трябва да избира дестинацията, порта или префикса. Порталът определя услугата от собствените си записи и проверява правото със сървърен тест, което е същият принцип, който ръководството на OWASP за оторизация прилага към всяка заявка. Извеждането на адрес също принадлежи на защитената граница: когато обратен прокси съобщава адреса на клиента, приемайте само конфигурираната верига от проксита и документираното ѝ третиране на заглавките. Заглавка за препращане, предоставена от посетител, е твърдение за произход, а не доказателство за него.
След това проверете дали порталът и услугата виждат един и същ източник. Разделеният тунел, един прокси скок и IPv4 срещу IPv6 могат да дадат на две дестинации два различни адреса, така че разрешение, активирано по един път, може да не покрие следващата заявка.
Покажете разрешението, преди да го инсталирате
Отварянето на връзка трябва да показва предложената услуга, наблюдавания източник и продължителността и все още да не променя нищо. Тази единствена стъпка превръща изпратената по имейл връзка от действие в предложение и спира бот за преглед или скенер за поща да даде достъп просто като я изтегли.
Потвърждението трябва да бъде заявка, която променя състоянието, с обичайните междусайтови защити и защити на произхода. Токенът трябва да е за еднократна употреба и да се изразходва атомарно в момента на инсталиране на правилото, а записът трябва да улавя собственика, услугата, адреса, идентификатора на разрешението и изтичането, без никога да регистрира суровия токен.
Доставянето на токена заслужава същото внимание като самото правило. Изтекла или вече използвана връзка, която все още създава правило, е втора врата, монтирана със същия ключ.
Адресът се споделя дори докато разрешението е активно
Офис NAT, NAT на оператор и споделен изход на VPN поставят по няколко души зад един адрес. Допускането на този адрес допуска всички зад него доколкото това засяга следващата граница на услугата, без да доказва нищо за това кой държи акаунта, който услугата очаква.
Премахването на правилото също не е универсално прекъсване. Установени връзки, кеширани токени на приложения и дълготрайни сесии могат да надживеят правилото с минути или много повече, така че избраният срок трябва да отразява какво прави услугата след допускането, а не само колко дълго съществува правилото.
Тествайте четири случая и двете семейства адреси
Едно разрешение е толкова добро, колкото четирите случая, които издържа: нова разрешена заявка, неодобрен заявител, повторение на същата връзка и същата заявка след изтичане.
След това тествайте всяко семейство поотделно, защото адресът на източника, който услугата наблюдава, може да се различава между тях.
dig +short A service.example.com
dig +short AAAA service.example.com
curl -4 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com
curl -6 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com
Полезният резултат е временно, одитируемо решение за допускане под нормалната потребителска оторизация, вместо постоянно отваряне, носещо името на този, който е кликнал пръв.