Fail2ban на VPN шлюз: какво поправя и какво не
Fail2ban блокира източниците, които се провалят в дневниците ви, и това е всичко. Дали помага на VPN шлюз зависи от повърхността за вход и от това кой споделя адрес.
Всяка изложена услуга получава един и същ съвет: сложете fail2ban върху нея. За VPN шлюз този съвет не е нито грешен, нито достатъчен и именно третирането му като отметка за затягане води до това хората да останат със затвор (jail), който не блокира нищо полезно. Fail2ban чете записите за неуспех, към които го насочите, и иска от backend за налагане да блокира съответните източници. Цялата му стойност зависи от това коя повърхност за удостоверяване е създала записа, дали адресът в него е истинският клиент и какво се случва с всички останали зад този адрес.
Какво е fail2ban механично
Филтърът съпоставя редове в дневник, затворът брои съвпаденията по източник, а действието прилага блокировка чрез backend на защитна стена. Три движещи се части, всяка от които може да е погрешна независимо.
Нито една от трите не докосва пътя за удостоверяване: fail2ban реагира на доказателства след факта и никога сам не проверява идентификационни данни. Затова затворът може да работи безупречно, докато повърхността, която назовава, остава точно толкова изложена, колкото преди.
Слушателят на тунела не е форма за вход
Слушател OpenVPN, защитен с tls-auth или tls-crypt, изхвърля пакетите без защита на контролния канал, преди да започне обичайната обработка на TLS. Скенер, който никога не разполага с ключа, не генерира нищо, което филтърът ви да преброи. Удостоверяването със сертификат добавя още една врата, защото няма парола за отгатване. Проектът Fail2ban документира общ модел, задвижван от дневници, и общ филтър за VPN не превръща неудостоверен пакет в смислено събитие за неуспех.
Ако шлюзът приема само сертификати, историята за brute-force, срещу която се защитавате, може изобщо да не съществува на този порт.
И така, коя повърхност защитавате?
Един и същ хост често излага три различни неща: слушателя на тунела, портал за клиентски профили или самообслужване и административна страница. Порталът и админ страницата имат форми за парола и произвеждат редове в дневника, които филтърът може да преброи. Тунелът може да произвежда само грешки при ръкостискане, които означават нещо съвсем различно. Съпоставете затвора с повърхността, а не с името на продукта.
Един затвор, който следи грешния дневник, е по-лош от никакъв, защото създава увереност без покритие. Насочете филтър за вход към грешки при ръкостискане на тунела и броячът ще се задейства при скенери, които никога не са имали ключ, докато атака с пароли срещу портала остава неотчетена. Прочетете реда в дневника, който филтърът съпоставя, преди да се доверите на числото на затвора.
Приписването на източника е слабото звено
Блокировката е толкова добра, колкото е адресът, който насочва. Когато услугата стои зад локален обратен прокси, адресът на клиента в дневника може да е проксито и блокирането му премахва всички. Доверяването на препратен заглавен ред от ненадежден източник дава на нападателя възможност да блокира произволни адреси. При UDP адресите на източника могат да бъдат подправени, затова броенето им заслужава повече внимание от броенето на завършен TCP вход.
Запишете метода за приписване на източника в README на затвора, защото препратен заглавен ред от ненадежден хоп превръща блокировката в оръжие.
Страничната цена са другите хора
Няколко служители зад един офисен NAT споделят адрес, така че една остаряла запазена парола може да заключи целия офис, щом прагът бъде преминат. Дневникът показва един източник и един акаунт, които са се провалили, а не прекъсване за целия офис.
Кратките блокировки и умерените прагове намаляват това, а документиран път за отблокиране намалява натоварването на поддръжката, когато все пак се случи. Адресът е груб сигнал, а не самоличност, и човекът, който подаде заявката, ще опише прекъсването, а не прага.
Кога да го въведете и кога да поправите нещо друго
Въведете го, когато има реален, приписваем, повтарящ се онлайн неуспех при вход на повърхност, която контролирате, и когато backend за налагане действително покрива тази повърхност. Поправете нещо друго, когато проблемът е слаба политика за идентификационни данни, административна страница, изложена на интернет, или акаунт, който влиза успешно, защото е компрометиран. Блокировката не може да поправи нито едно от тези и не може да поеме трафик, който вече е наситил връзката ви. Последният проблем принадлежи нагоре по веригата, на някого, който може да филтрира, преди пакетите да стигнат до вас.
Дръжте всеки затвор свързан с една повърхност, преглеждайте фалшивите положителни резултати и измервайте избегнатата работа по удостоверяване, а не броя на блокираните адреси.