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.
Odpowiedzi:
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 )
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.
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 ssh
i 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.Inną rzeczą, która przychodzi mi do głowy, jest dyrektywa „AllowUser” w twoim sshd_config
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.
źródło
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.
źródło
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ć
dsa
zersa
w poniżej.W źródle:
Następnie skopiuj zawartość
.ssh/id_dsa.pub
pliku na.ssh/authorized_keys
konto użytkownika w miejscu docelowym.Wtedy powinieneś być w stanie ssh między źródłem a celem bez haseł.
źródło