Cygwin SSHd Autoblokowanie nie powiodło się Logowanie

20

Używam Cygwin z demonem SSH na komputerze z systemem Windows Server 2008. Patrzyłem na Podgląd zdarzeń i zauważyłem aż 5 do 6 nieudanych prób logowania na sekundę (brutalna siła) przez ostatni tydzień, z różnych adresów IP.

Jak mogę automatycznie zablokować te adresy IP, zamiast blokować je pojedynczo ręcznie?

Dzięki, Ahmad

ANaimi
źródło

Odpowiedzi:

34

Napisałem program do blokowania adresów IP tak, jak prosiłeś kilka lat temu, ale zrobiłem to dla Klienta jako pracownika najemnego. Ponieważ tego wieczoru miałem trochę „wolnego” czasu, postanowiłem ponownie wdrożyć całość od podstaw, napisać użyteczną dokumentację i ogólnie uczynić z niej program do prezentacji. Ponieważ słyszałem od wielu osób, że byłoby to przydatne, wydaje się, że prawdopodobnie warto. Mam nadzieję, że ty i inni członkowie społeczności możecie z tego trochę skorzystać.


Windows sshd_block

sshd_block to program VBScript, który działa jak ujście zdarzenia WMI, odbierając wpisy dziennika zdarzeń Windows zarejestrowane przez sshd. Analizuje te wpisy dziennika i działa na nie w następujący sposób:

  • Jeśli adres IP próbuje się zalogować przy użyciu nazwy użytkownika oznaczonej jako „natychmiast zablokuj”, adres IP zostanie natychmiast zablokowany.

  • Jeśli adres IP będzie próbował logować się częściej niż jest to dozwolone w danym okresie czasu, adres IP zostanie zablokowany.

Nazwy użytkowników i progi związane z powtarzającymi się próbami logowania można skonfigurować w sekcji „Konfiguracja” skryptu. Domyślne ustawienia są następujące:

  • Ban Natychmiast Nazwy użytkowników - administrator, root, gość
  • Dozwolone próby logowania - 5 w 120 sekund (2 minuty)
  • Czas trwania bana - 300 sekund (5 minut)

Raz na sekundę wszelkie adresy IP, które zostały zablokowane na czas trwania zakazu, są odblokowywane (poprzez usunięcie trasy czarnej dziury z tabeli routingu).


Możesz pobrać oprogramowanie tutaj i przejrzeć archiwum tutaj .

Edytować:

W dniu 2010-01-20 zaktualizowałem kod, aby obsługiwał „Zaawansowaną zaporę” w systemie Windows Vista / 2008/7/2008 R2 w celu wstrzymania ruchu poprzez tworzenie reguł zapory (co jest znacznie bardziej zgodne z zachowanie „fail2ban”). Dodałem także kilka dodatkowych pasujących ciągów, aby złapać wersje OpenSSH, które „nieprawidłowego użytkownika” w przeciwieństwie do „nielegalnego użytkownika”.

Evan Anderson
źródło
2
Doceniam pracę, którą wykonałeś i uważam, że to wspaniały pomysł, ale czy jest szansa, że ​​można go zmodyfikować do pracy z próbami PROW? Moje serwery Windows są ciągle atakowane w trybie online i blokowanie konta, chociaż częściowo afektywne musi zostać odblokowane, aby ten użytkownik mógł ponownie pracować, otwierając ponownie konto użytkownika dla kolejnej blokady.
@Henry: Spójrz na serverfault.com/a/335976/7200
Evan Anderson
Ten skrypt wysysa ponad 10 procent mojego procesora, nawet jeśli nie trwają żadne brutalne ataki ...
jjxtra
@PsychoDad: Jeśli jesteś zainteresowany, skontaktuj się ze mną bezpośrednio, a my rozwiążemy problem. Nie widziałem zachowania, które widzisz.
Evan Anderson
1
Chciałbym również to zobaczyć w przypadku połączeń RDP. Dzięki
boomhauer
3

W Linuksie denyhosts rozwiązuje problem, nie mogę powiedzieć, czy będzie działać na Windows / Cygwin, czy nie. Spróbuj.

Saurabh Barjatiya
źródło
2

Ten jest bardzo interesujący, obecnie oceniamy to rozwiązanie:

Syspeace ściśle współpracuje z systemem Windows w celu wykrywania potencjalnych zagrożeń przy optymalnej wydajności. Zdarzenia w dzienniku zdarzeń są stale monitorowane pod kątem podejrzanych zachowań. Jeśli zdarzenie zostanie uznane za zagrożenie dla systemu, Syspeace przechodzi do następnego poziomu, sprawdzając wewnętrzną bazę reguł, która po prostu blokuje adres IP i dodaje regułę do zapory systemu Windows.

Lokalna biała lista

Użytkownik może zawsze dodawać adresy IP do lokalnej białej listy, aby na przykład zapobiegać blokowaniu jakichkolwiek sieci wewnętrznych lub tymczasowo dodawać pojedyncze komputery. Należy tego używać ostrożnie, ponieważ wszelkie adresy IP na tej liście są uznawane przez Syspeace za godne zaufania i zawsze będą ignorowane.

Lokalna czarna lista

Wszelkie zagrożenia zostaną automatycznie dodane do lokalnej czarnej listy przez Syspeace. Zawsze możesz przejrzeć czarną listę i dodawać lub usuwać je według własnego uznania. Zalecamy jednak, aby nie wprowadzać żadnych zmian na tej liście, ponieważ może przypadkowo utorować drogę nieznanemu hakerowi.

Globalna czarna lista

Kluczową cechą Syspeace jest możliwość zapobiegawczego blokowania znanych adresów IP na globalnej czarnej liście. Wybierając tę ​​opcję, Syspeace zaimportuje globalną czarną listę do twojego klienta i podejmie odpowiednie działania, dodając wszystkie globalnie czarne listy adresów IP do zestawu reguł zapory za naciśnięciem jednego przycisku.

Wiadomości

Ilekroć ma miejsce ważne wydarzenie, usługa jest uruchamiana lub zatrzymywana, reguły są umieszczane lub usuwane z zapory ogniowej lub status komunikacji z licencją centralną i globalny serwer czarnej listy jest zmieniany, Syspeace ma możliwość wysyłania poczty do odpowiednich osób w twoja organizacja.

Raporty

Otrzymywanie wiadomości e-mail, gdy wydarzy się ważne wydarzenie, może być dobre, ale czasami chcesz również uzyskać podsumowanie. Syspeace kompiluje codzienny raport ze wszystkimi próbami ataku w twoim systemie i wysyła ci wiadomość z informacją. W ten sam sposób Syspeace kompiluje cotygodniowy raport.

www.syspeace.com

Derek
źródło
2

Dosłownie wszystkie próby logowania z Chin / USA / Indii na moim serwerze próbują zalogować się przez administratora, który wyłączyłem.

Czy nie byłoby łatwiej wyłączyć logowanie administratora, a następnie napisać skrypt blokujący wszystkie adresy IP, które próbują się zalogować przy użyciu „Administrator” jako nazwy użytkownika?

użytkownik220309
źródło
1

Być może będziesz musiał zadzierać z zaporą systemu Windows; Cygwin nie miałby tego rodzaju funkcjonalności.

koenigdmj
źródło
1

Możesz rozważyć użycie SSHBlock - skryptu Perla do kontrolowania prób użycia siły.

SSHBlock to demon do monitorowania dziennika syslog pod kątem prób włamania przy użyciu SSH oraz do automatycznego blokowania złych hostów poprzez dodanie linii do /etc/hosts.allow (owijarki TCP). Kilka progów jest wstępnie zdefiniowanych, aby móc blokować osoby próbujące wielu prób w dłuższym lub krótszym okresie. Użyj -h, aby wyświetlić opcje wiersza poleceń.

Jeszcze nigdy nie korzystałem z niego w Cygwin.
Oto jednak link do innego artykułu opisującego sshblock na kilka innych sposobów:
Obrona przed atakami ssh brutalnej siły

nik
źródło