Słabe strony 3-Strike Security

10

Czytałem trochę literatury na temat bezpieczeństwa, w szczególności bezpieczeństwa / szyfrowania haseł, i zastanawiałem się nad jedną rzeczą: czy zasada 3-strike jest idealnym rozwiązaniem dla bezpieczeństwa haseł? Oznacza to, że jeśli liczba prób podania hasła jest ograniczona do niewielkiej liczby, po której wszystkie żądania uwierzytelnienia nie zostaną uwzględnione, czy nie ochroni to użytkowników przed włamaniem? Zdaję sobie sprawę, że uzyskanie dostępu lub kontrola nad czymś nie zawsze oznacza przejście przez system uwierzytelniania, ale czy ta funkcja nie powoduje, że ataki słownikowe / brutalne są przestarzałe? Czy czegoś brakuje?

prelic
źródło
3
To pytanie można było lepiej zadać w dziale Bezpieczeństwa do wykorzystania w przyszłości.
wałek klonowy
1
Jak zauważyłem, zawsze jest coś bardziej odpowiedniego do zapytania. Dzięki, spróbuję to zapamiętać.
prelic

Odpowiedzi:

13

Tak, uniemożliwi to ataki słownikowe poprzez mechanizm logowania . (To nie znaczy wiele, jeśli uzyskają dostęp do bazy danych. Aby zapewnić bezpieczeństwo, musisz odpowiednio zaszyfrować i słonić hasła).

Pozwala również na możliwość ataku DOS na określonego użytkownika. Powiedzmy, że chciałem uniemożliwić Ci zalogowanie się. Wystarczy, że wykonam trzy fałszywe próby zalogowania się na Twoje konto, a następnie powtórz to za każdym razem, gdy zrobisz wszystko, co konieczne, aby zresetować login. Radzenie sobie z tym problemem jest nieco trudniejsze.

Mason Wheeler
źródło
1
Dzięki! Z ciekawości, jakie byłoby podejście do rozwiązania tego drugiego problemu, który opisałeś? Na przykład w prawdziwym świecie tony forów internetowych używają publicznej nazwy użytkownika jako identyfikatora logowania (w przeciwieństwie do wiadomości e-mail dołączonej do konta lub czegoś innego), co oznacza, że ​​mogę zobaczyć, z czego korzysta każdy użytkownik, aby się zalogować. Co powstrzyma mnie przed zablokowaniem każdego użytkownika z jego konta? Dobry administrator? Wygląda na to, że zablokowanie każdego użytkownika z witryny byłoby banalnie łatwe.
prelic
@prelic: Cóż, aby poradzić sobie z tym problemem, zaimplementuję coś takiego: „jeśli określony adres IP spowoduje zbyt wiele nieudanych prób logowania, zablokuj je”. To powstrzyma wspomniany scenariusz, ale nie poradzi sobie z poważną próbą włamania, taką jak botnet. Do tego potrzebujesz większego bezpieczeństwa.
Mason Wheeler,
4
Zwykłym rozwiązaniem jest ograniczenie liczby prób przychodzących dla danego użytkownika ze stałego adresu IP do 5 na minutę. Nie jest idealny, ale zwykle nie stwarzasz problemów innym użytkownikom, chyba że jesteś za tym samym serwerem proxy
Andrea
Innym podejściem jest przedstawienie captcha po 2 nieudanych próbach logowania z tego samego adresu IP - ale wtedy zdeterminowany atakujący może po prostu wynająć mechanicznego turka do łamania captcha do tego celu, a ponadto bardzo trudno jest znaleźć dobrą captcha, która faktycznie utrzymuje maszyny na zewnątrz.
tdammers
3

Zgadzam się również, że dzięki temu ataki słownikowe są mniej skuteczne jako sposoby uzyskania dostępu do konta bez odpowiednich uprawnień. Jednak:

  • Takie podejście może przekształcić atak słownikowy w atak DOS przeciwko systemowi, uniemożliwiając dostęp, jeśli zostanie źle zaimplementowany. Na przykład serwer może zostać zalany próbami uwierzytelnienia. Jednym ze sposobów obejścia tego problemu jest kontrolowanie przepływu usług dostępu do zablokowanego konta przez usługę uwierzytelniającą. Na przykład, jeśli konto jest zablokowane, przedstawiaj opóźnienie przed każdą kolejną próbą logowania. Można jednak wprowadzić opóźnienie między próbą zalogowania się a `` odmową dostępu '', co utrzymuje drzwi otwarte dla rozproszonego ataku typu odmowa usługi, w którym atakujący podejmuje wiele jednoczesnych prób uwierzytelnienia.

  • Jak wspomniano w drugiej odpowiedzi, może to również zmienić atak słownikowy w prymitywny DOS przeciwko prawowitemu właścicielowi atakowanego konta. Sposoby ograniczenia wpływu na legalnego właściciela obejmują:

    • Spowalnianie biegu po nazwach użytkowników przez brak wskazówek, czy nazwa użytkownika lub hasło jest nieprawidłowe. To sprawia, że ​​ataki, w których sprawca zgaduje nazwy użytkowników, są bardziej widoczne dla administratorów i mniej skuteczne.
    • Zamiast blokować konto po ustalonej liczbie nieudanych prób, wystarczy zablokować ten tryb uwierzytelnienia. Innymi słowy, wymagaj od użytkownika, którego konto jest atakowane, uwierzytelnienia przy użyciu innej (być może bardziej zaangażowanej, ale trudniejszej do zaatakowania) metody. Dobrym przykładem jest to, w jaki sposób telefon z Androidem będzie wymagał od użytkownika użycia danych logowania Google po nieudanej próbie uwierzytelnienia przy użyciu wzoru odblokowania ekranu lub kodu PIN. Teoretycznie jest to coś w rodzaju wymagania od zaatakowanego użytkownika, aby poprosił o odblokowanie swojego konta, jednak nie wymaga natychmiastowej interwencji administratora systemu.
    • Zamiast blokady konta (lub oprócz blokady konta, w tym konkretnym trybie uwierzytelnienia - patrz wyżej) zablokuj próby uwierzytelnienia z miejsca, z którego pochodzi atak. Na przykład, jeśli uwierzytelnianie odbywa się za pomocą nazwy użytkownika i hasła, w sieci, po trzech nieudanych próbach uwierzytelnienia można uniemożliwić dalsze próby zalogowania się przez użytkowników z tego samego adresu IP lub podsieci za pomocą nazwy użytkownika lub hasła. Tam, gdzie istnieje duża szansa, że ​​wielu użytkowników (w tym atakujący) może korzystać z tego samego adresu IP lub podsieci, możesz po prostu wyłączyć uwierzytelnianie nazwy użytkownika / hasła dla adresu IP lub podsieci na pewien czas, pozostawiając bardziej zaangażowane metody uwierzytelniania otwarte dla niewinnych użytkownicy w pobliżu atakującego.
  • Jeśli Twój strach nieumyślnie karze zapomnianego użytkownika tak, jakby był atakującym, zamiast kontrolować przepływ nieudanych prób logowania po ustalonej liczbie nieudanych prób, możesz użyć częstotliwości prób logowania jako dowodu na atak na konto. Na przykład, jeśli zobaczysz 10 prób uwierzytelnienia w ciągu sekundy, możesz użyć jednej z powyższych metod, aby zapobiec dalszym podobnym próbom uwierzytelnienia. Alternatywnie możesz użyć tej gwałtownej liczby prób logowania jako sygnału do rozpoczęcia kontroli przepływu. Ta metoda staje się coraz bardziej popularna na forach, podczas gdy po pewnej liczbie nieudanych prób logowania z określonego adresu IP uniemożliwia się uwierzytelnienie tego adresu przez krótki okres czasu.

  • Wreszcie dobrym sposobem na zapobieganie wielokrotnemu atakowaniu użytkownika przez atak DOS jest umożliwienie mu zresetowania zarówno hasła, jak i nazwy użytkownika . Innymi słowy, zarówno nazwę użytkownika, jak i hasło traktuj jako tajemnice. Jeśli nazwa użytkownika jest używana gdzie indziej (np. Na forum, jeśli nazwa użytkownika jest nazwą wyświetlaną użytkownika), po prostu traktuj tę nazwę wyświetlaną jako coś osobnego. Takie podejście jest zwykle stosowane w sieciach społecznościowych, w których nazwa użytkownika używana do uwierzytelniania jest adresem e-mail użytkownika - coś, co można zmienić, ale rzadko jest udostępniane - podczas gdy nazwa wyświetlana używana w witrynie jest zdefiniowana przez użytkownika, co może, ale nie musi zmienić się.

W każdym razie mam nadzieję, że jedno lub kilka kombinacji tych podejść się przyda.

ctt
źródło