Typefully

Globalny system banowania na Mikrusie

Avatar

Share

 • 

An hour ago

 • 

View on X

Agresorzy, którzy skanują serwery Mikrusa w poszukiwaniu backupów, wycieków danych czy tajnych plików, trafiają na pułapki, które aktywują system banowania IP na całej flocie serwerów. Jak to działa? 🧵 ↓
Cały system to pojedynczy plik PHP i baza danych z jedną tabelą. W tabeli zapisuję: - adres IP - nazwa pliku/katalogu, który próbowano otworzyć - kiedy dostał bana (timestamp) Ban jest automatycznie zdejmowany po 4 godzinach.
Używam rewrite (nginx) i mod_rewrite (apache2), aby podrzucić wszystkim skanującym fałszywe nazwy plików i katalogów. Chodzi o to, aby np "wp-admin/" zgłaszał się z "200 OK" na stronie bez Wordpressa. Każda z tych "pułapek" prowadzi do wspomnianego pliku PHP.
Gdy plik zostanie aktywowany, zliczam, ile razy dany IP go dotknął. Pierwszy raz? Pewnie przypadek - ignoruję. Drugi, trzeci... dziesiąty raz? Jeśli licznik (trzymam go w memcache) przekroczy określony próg, IP ląduje w bazie banów.
Wszystkie serwery Mikrusa cyklicznie przez 'API' pobierają listę zbanowanych adresów IP. To API, to tak naprawdę zwykły plik TXT generowany przez skrypt PHP, który najpierw sprawdza, którym osobom należy już zdjąć bana (minęło 4h).
Prosty skrypt bashowy w cronie na dedykach bierze tę listę i dodaje ją do firewalla z akcją DROP. Od tego momentu agresor nie ma możliwości dotknięcia żadnego serwera mikrusowego ani żadnej aplikacji webowej. Kolejną szansę będzie miał za 4 godziny.
Są dwa krytyczne elementy przy implementacji: 1. Lista banów musi być odświeżana często - agresor może wykonywać tysiące zapytań na minutę, więc synchronizacja co 1h odpada. 2. Trzeba mieć białą listę IP (adresy własnej floty) - inaczej można wyciąć własną infrastrukturę
Wyobraź sobie, że ktoś kupuje VPS na Mikrusie i z niego atakuje Mikrusa (to się zdarza). Bez białej listy system zbanowałby na Mikrusie... całego Mikrusa :D To byłaby niezła wpadka.
Jak skuteczna jest ta metoda? Klasyczne skanery internetowe, które dotykają plików na oślep: skuteczność 100% - po prostu je wycinamy. Zdeterminowani agresorzy z VPN/proxy/botnetami: skuteczność niższa, ale to zabezpieczenie potrafi ich wkurzyć. Stosujemy to od lat i działa.
Avatar

Jakub Mrugalski 🔥

@uwteam

🤖 Piszę o technologii, automatyzacji, cybersecurity ✍️ Dokumentuję swoją drogę w biznesie 🖥️ mikr.us ← to moje 😎