Czy muszę mieć hasło do mojego klucza SSH RSA?

71

Zanim rozpocząłem swoją obecną pracę (w małej firmie), moje biuro nie miało zapory ogniowej w sieci i dosłownie nic nigdy nie było tworzone. Teraz, gdy zarejestrowałem się jako dedykowany dział sysadmin / jednoosobowy dział IT, robiłem, co mogłem, aby to zmienić. Po wyjaśnieniu mojemu szefowi, jak bardzo jesteśmy narażeni, pozwolił mi założyć kilka serwerów zapasowych, z których jeden znajduje się w jego domu.

W tej chwili próbuję wszystko ustawić, aby móc zautomatyzować codzienne kopie zapasowe. W tym celu planuję użyć rsync przez ssh. Ze względów bezpieczeństwa, jak i łatwości automatyzacji, planowałem wyłączyć logowanie hasłem ssh i używać tylko sprawdzania poprawności klucza rsa. Cóż, jeśli mam ustawione hasło rsa, nadal musiałbym wprowadzić hasło i to jest problem.

Czy brak hasła RSA znacznie zmniejsza bezpieczeństwo? Jestem jedyną osobą w firmie, która ma jakieś wskazówki na ten temat, więc nie martwię się zbytnio o to, że ktoś zadzwoni na terminal na mojej maszynie (co zresztą zawsze jest zablokowane, gdy jestem AFK ) i ssh-sing na jednym z serwerów zapasowych i wyrządzenie jakiejkolwiek szkody. Nadal jestem bardzo, bardzo nowy w świecie administracji systemami i po raz pierwszy robię coś takiego i nie chcę pozostawiać żadnych luk w ustawieniach bezpieczeństwa.

Na omawianych komputerach działają Ubuntu 10.10, SME Server i OSX 10.6, jeśli to w jakiś sposób coś zmienia.

eckza
źródło
5
Naprawdę nie powinno być żadnej utraty bezpieczeństwa, jeśli nie masz hasła do klucza. Zachowanie integralności bezpieczeństwa klucza w tym momencie staje się integralne, ponieważ jeśli ktoś jest w stanie go skopiować, nie ma tajnego klucza, który uniemożliwiłby mu jego użycie.
Chris Marisic
1
Może to tylko ja, ale nie mam pojęcia, co próbuje powiedzieć powyższy komentarz.
underscore_d
3
@underscore_d Mówi w zasadzie: Nie ma wpływu na bezpieczeństwo SSH, aby mieć lub nie mieć haseł dla swoich kluczy, ALE musisz przechowywać klucze lokalnie bezpieczne.
Hartator

Odpowiedzi:

89

Jak wiesz, zaletą hasła jest to, że jeśli ktoś jest w stanie odczytać Twój klucz prywatny, nie może go użyć.

Jeśli ktoś jest w stanie uzyskać dostęp do tego klucza prywatnego, należy przyjąć za pewnik, że ma on dostęp (ed) / narażony na szwank wszystkie maszyny skonfigurowane z kluczem publicznym. Rzeczy takie jak .bash_history lub .ssh / config tylko to ułatwiają, nawet jeśli .ssh / znane_hosty są zaciemnione.

Brak hasła do klucza to nie koniec świata, oto 3 pomysły, które pomogą ci się zabezpieczyć trochę lepiej. ( Biggie jest drugim, przeczytaj, że jeśli nic więcej )


  1. Nie używaj tylko tego samego klucza na wszystkich komputerach i użytkownikach. Wygeneruj każdego użytkownika na każdym komputerze (który musi to zrobić) swoją własną parę kluczy. To pozwoli ci zachować drobiazgową kontrolę nad tym, co jest w stanie ssh gdzie.

  2. Dodając klucz do pliku uprawnionego_kluczy, możesz go zablokować, aby móc uruchomić tylko określone polecenie lub użyć go tylko z określonego hosta.

    Zobacz man sshi wyszukaj command = i from =

    Składnia jest następująca:

    from="1.2.3.4",command="/path/to/executable argument" ssh-rsa key name

    tzn. włóż tam „rsync” i tylko „rsync” może zostać wywołany przez twój klucz i tylko z adresu IP 1.2.3.4. Wiele adresów IP można oddzielić ,. Obsługiwane są również nazwy hostów.

  3. Inną rzeczą, która przychodzi mi do głowy, jest dyrektywa „AllowUser” w twoim sshd_config

    AllowUsers

    Po tym słowie kluczowym może znajdować się lista wzorców nazw użytkowników oddzielonych spacjami. Jeśli jest określony, logowanie jest dozwolone tylko dla nazw użytkowników, które pasują do jednego z wzorców. '*' i '?' mogą być używane jako symbole wieloznaczne we wzorach. Poprawne są tylko nazwy użytkowników; numeryczny identyfikator użytkownika nie jest rozpoznawany. Domyślnie logowanie jest dozwolone dla wszystkich użytkowników. Jeśli wzorzec ma postać USER @ HOST, wówczas USER i HOST są osobno sprawdzane, co ogranicza logowanie do konkretnych użytkowników z określonych hostów.

    Zasadniczo zapewnia to, że użytkownik może zalogować się tylko z określonej lokalizacji. (chociaż akceptuje również symbole wieloznaczne) Nie rozwiąże wszystkich twoich problemów, ale przynajmniej utrudni innym.

PriceChild
źródło
1
Piękne - właśnie to musiałem wiedzieć. Dziękuję bardzo!
eckza
3
Nie ma problemu, po prostu nie traktuj tego jako wyczerpującej listy! :-) Przychodzi mi na myśl regularne przeglądanie auth.log / secure itp.
PriceChild
3
Więc audyt zamiast martwić się o kradzież hasła?
Ehtesh Choudhury,
3
@shurane Zrób oba!
PriceChild
4

Możesz użyć czegoś w rodzaju pęku kluczy, aby hasło było mniej bolesne. Jest to nieco bezpieczniejsze niż używanie logowania bez hasła i może być używane w połączeniu z innymi odpowiedziami tutaj. Odpowiedź PriceChilda była całkiem dobra.

Faheem Mitha
źródło
-4

Osobiście używam DSA, a nie RSA, głównie dlatego, że zawsze tego używałem i wiem, że „po prostu działa”, ale myślę, że teoria jest taka sama. Można wymienić dsaze rsaw poniżej.

W źródle:

$ ssh-keygen -t dsa

Następnie skopiuj zawartość .ssh/id_dsa.pubpliku na .ssh/authorized_keyskonto użytkownika w miejscu docelowym.

Wtedy powinieneś być w stanie ssh między źródłem a celem bez haseł.

Majenko
źródło
1
Czy jest jakiś powód, dla którego zalecasz dsa zamiast RSA? Częściej widziałem przeciwnie zalecane.
PriceChild
@PriceChild: AFAIK, ich bezpieczeństwo jest mniej więcej równoważne (przy założeniu wystarczającego rozmiaru klucza). Nie będąc kryptografem, ufam decyzji OpenSSH i GnuPG o zastosowaniu RSA jako domyślnego algorytmu klucza. Zobacz także to pytanie .
grawity
Nie ma prawdziwego powodu - głównie osobistego wyboru - tego oraz faktu, że RSA włamano się niedawno i skradziono poufny kod - jak to się wiąże z kluczami RSA Nie mam pojęcia (kto to robi), ale po prostu zawsze używałem DSA, ponieważ wydawało się to bardziej bezpieczne .
Majenko,
9
Obawiam się, że włamanie do „RSA firmy” nie ma wpływu na bezpieczeństwo „algorytmu RSA”. Zobacz także secure.wikimedia.org/wikipedia/en/wiki/RSA_Security - „RSA zostało nazwane na cześć algorytmu kryptografii klucza publicznego RSA, który z kolei został nazwany na cześć inicjałów jego współtwórców: Rona Rivesta, Adi Shamira i Len Adleman. ”
PriceChild
6
@Matt: Jedyną wspólną cechą jest nazwa. Asymetryczny algorytm kryptograficzny RSA to czysta matematyka, nie ma możliwości osłabienia go przez włamanie do systemów niektórych korporacji.
grawity