Zabezpieczenie blogu przed atakami brute force

Jeżeli blogujemy na platformie typu Blogger czy Medium, nasz system jest zabezpieczony przez dostawcę usługi i nie musimy się martwić o żadne ataki. Duże platformy blogowe na ogół mają porządnie[citation needed] zrobione zabezpieczenia przeciwwłamaniowe.

Jeżeli jednak jesteśmy sobie sami sterem, żeglarzem lub okrętem, powinniśmy zadbać o bezpieczeństwo. Oczywiście stuprocentowej metody nie ma, ale nie chodzi o całkowitą gwarancję tylko o to, żeby utrudnić złym człowiekom utrudnianie życia dobrym człowiekom.

Nie wiem jak to wygląda u innych blągerów, ale u mnie cały czas coś się dzieje na porcie ssh. I nawet po zmianie portu serwera z 22 na wyższy, niestandardowy, dziesiątki botów w dalszym ciągu próbują się dobijać. Próby są skazane na niepowodzenie, bo boty używają głównie “słabych” loginów (a więc prostych haseł oraz popularnych nazw użytkownika), a ja mam długie hasło i niestandardową nazwę użytkownika, niemniej jednak takie dobijanie się do serwera jest nieco niepokojące. Czuję się trochę jakby przed moim domem przez cały czas przesuwał się korowód Chińczyków, każdy z pękiem kluczem w ręku, co chwilę któryś podchodzi do moich drzwi i próbuje je otworzyć jednym z kluczy. Niby wiem, że mam solidny zamek, ale jednak trochę dziwnie.

Przyjrzawszy się uważniej logom (generowanym do pliku /var/log/auth.log) zauważyłem, że większość adresów IP, z których przychodzą próby włamu powtarza się. Wygląda to tak, że włamywacz obchodzi całe osiedle kilkadziesiąt razy próbując za każdym razem innego klucza.

Noż kurdę.

Na szczęście nie jestem pierwszym, który takie coś zauważył. Problem został rozwiązany już dawno za pomocą niedużego, ale bardzo sprytnego programu fail2ban, który odkryłem całkiem niedawno. Działa on tak, że mówi mu się jakie porty i usługi ma sprawdzać pod kątem brute-force, po ilu nieudanych próbach ma banować i na jak długo – wszystko to ustawione bądź globalnie dla wszystkich usług, bądź też dla każdej usługi osobno.

Po zainstalowaniu fail2ban (za pomocą apt) wystarczy utworzyć w folderze /etc/fail2ban plik o nazwie jail.local i wkleić do niego następujące zaklęcie:

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1d
findtime = 10m

Oczywiście musimy też włączyć usługę:

systemctl start fail2ban

… a także upewnić się, że uruchomi się ona automatycznie przy restarcie serwera:

systemctl enable fail2ban

Od tej pory jeżeli z jakiegokolwiek adresu IP nastąpią w ciągu maksymalnie dziesięciu minut trzy nieudane próby zalogowania się przez SSH, system zablokuje ten adres IP na firewallu na jeden dzień.

Oczywiście oprócz ssh mamy też bazylion innych usług, które fail2ban potrafi monitorować: z najważniejszych wymienię Apache, Sendmail, sftp – kompletna lista jest jednak o wiele, wiele dłuższa.

A co jeżeli niechcący zabanujemy się sami? Dajmy na to, zapomnimy hasła czy też niechcący użyjemy innego układu klawiatury do wpisywania znaków specjalnych – i klops. Co wtedy?

Wtedy musimy po pierwsze uzyskać dostęp do systemu z innego niż zabanowany adresu IP (na przykład przez KVM lub łącząc się na chwilę przez innego dostawcę internetu), po drugie dowiedzieć się pod którym adresem dostaliśmy bana, wreszcie po trzecie wykonać na serwerze polecenie:

fail2ban-client set sshd unbanip tu.podajemy.adres.ip

Powyższe zdejmie bana z naszego adresu IP.

Oczywiście to, co dotychczas napisałem to tylko wierzchołek góry lodowej tego, co potrafi fail2ban – tak naprawdę poza próbami zalogowania się aplikacja może przeglądać logi systemowe pod kątem występowania w nich różnych “podejrzanych” czynności, wysyłać powiadomienia e-mailem i uruchamiać różne inne (dowolnie definiowane) akcje w zależności od tego co wykryje.

Na zakończenie powiem jaki efekt miało zainstalowanie fail2ban na Ignormatyku: przedtem miałem około 20-25 prób zalogowania się w ciągu każdej minuty. Po zainstalowaniu i uruchomieniu, w ciągu pół godziny zabanował około czterdziestu adresów IP, a intensywność brute-force spadła do około 10 prób na minutę. Po kolejnych 30 minutach miałem już tylko 3 próby na minutę.

Ciekawe jak to będzie wyglądać za kilka dni.

Pożyjemy – zobaczymy…

Liczba słów w tym wpisie: 768

Sprawdź też

Blogowe ostatniości

Dziś trochę ględzenia o zapleczu blogu. Będzie raczej nudno. Wbrew ponurym przewidywaniom udaje mi się …

Awaria 2

Blog znów się popsuł. Niedopsz.

Zapisz się
Powiadom o
guest
3 komentarzy
Inline Feedbacks
Zobacz wszystkie komentarze
3
0
Zapraszam do skomentowania wpisu.x
()
x