Защитна стена, fail2ban и мониторинг имате, а атака пак може да мине. Как да свържете сървърите, маршрутизатора и мониторинга, така че да блокират заедно и да п…
Защо отделните защити не стигат и как изглежда защита, в която сървърите, маршрутизаторът и мониторингът знаят един за друг.
В повечето малки фирми защитата изглежда наред. Маршрутизаторът има правила, на сървърите има fail2ban, има и някакъв мониторинг.
Проблемът е, че тези неща не знаят едно за друго. Мониторингът вижда атаката в логовете на един сървър. Маршрутизаторът, който може да я спре за всички машини, не разбира за нея. Нападателят просто опитва на следващия сървър.
Защита, която е спряла, изглежда точно като защита, при която няма нищо за докладване. Агентът е паднал след обновяване, услугата не е стартирала след рестарт, дискът с логове е пълен.
Дни наред няма известия и всички мислят, че всичко е наред. А всъщност нищо не се следи.
Това не е грешка на администратора. Така става, когато всеки инструмент е сложен отделно, по различно време и за различен проблем. Всеки си върши работата, но никой не гледа цялото.
Обикновено защитна стена и блокиране по логове има. Липсва връзката между тях. Ако познаете поне две от тези ситуации, статията е за вас:
Всяко от тези неща само по себе си изглежда дребно. Заедно означават, че при атака всичко зависи от това дали някой случайно е погледнал в правилния лог. А когато нещо се счупи, никой не помни какво е променено и кога.
Не става дума за нов продукт. Използват се познатите инструменти, но свързани помежду си. По части:
Спира атаката, преди да стигне до сървърите. Явно невалидният трафик се отрязва още на входа. Адрес, който опитва отново и отново, се блокира първо за кратко, после за по-дълго, накрая за постоянно.
Всеки сървър чете логовете си и блокира сам. Правилата са нагласени за услугите, които реално работят там, а не са оставени по подразбиране. Сам по себе си обаче fail2ban пази само своя сървър: блокиран адрес продължава да опитва на съседния.
Всеки сървър записва всяка блокировка на едно място. Така се вижда кой адрес къде е опитвал. От този списък маршрутизаторът си връща правилата след спиране на тока или рестарт, без никой да ги въвежда наново.
Агенти на всички машини, включително на хипервайзорите, плюс логовете на маршрутизатора, събрани на едно място. Десет неуспешни влизания на един сървър са нещо обикновено. Същите десет, разпределени по пет сървъра за минута, са атака, която отделният сървър не може да види.
Когато е ясно, че е атака, адресът се блокира автоматично, през същия общ списък и маршрутизатора. Не се добавя нов отделен инструмент. Неясните случаи не се блокират, а отиват при човек.
Сървърите проверяват един друг дали агентите работят и дали логовете пристигат. Ако някъде спре, това се приема като проблем и се съобщава веднага.
Известията са на две нива. В Telegram идва само това, което системата не е спряла сама и за което трябва човек. Всичко останало идва веднъж на ден по имейл, събрано и преброено.
Атака, която е спряна автоматично, не е причина за известие в Telegram. Тя показва, че защитата работи, и се вижда в дневния имейл.
Преди всяка промяна се прави копие на настройките. На виртуалните машини се правят моментни снимки, а архивите се пазят на отделно място, не на същия сървър. Грешно правило на маршрутизатора може да спре достъпа на всички, затова за всяка такава промяна има готов начин да се върне старото.
Всяка промяна по настройките се записва: какво, кога и защо. Записаното редовно се сравнява с реалното състояние. Ако някой е сменил нещо на ръка и не го е записал, това се вижда.
Най-честото притеснение е, че защитата ще блокира собствените ви служители или ще спре някоя услуга в работно време. Затова се работи на стъпки:
Така всичко се въвежда на части, без прекъсване на услугите. Вашият екип вижда всяка стъпка, преди да започне да действа, и може да я спре. Ако нещо не работи както трябва, връщането отнема минути.
Ако познахте своята ситуация в началото на статията, започнете с преглед: какво имате, кое не е свързано и какво липсва. След него ще знаете какво трябва да се направи, независимо дали ще работим заедно.