Rozwiązywanie błędów uprawnień SSH wewnątrz Twojej aplikacji

Nowi użytkownicy SSH często napotykają przeszkodę. Widzą ten błąd:

WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for 'id_rsa.pem' are too open.

Rozwiązaniem jest prosta komenda w terminalu: chmod 600 id_rsa.pem. Dla inżynierów to łatwizna. Dla pracowników agencji lub operatorów IT, którzy nie korzystają z terminali, stanowi to poważną barierę. Prowadzi to do ciągłego generowania zgłoszeń do wsparcia technicznego.

Postanowiliśmy rozwiązać ten problem wewnątrz naszej aplikacji. Zbudowaliśmy system, który automatycznie diagnozuje i naprawia uprawnienia.

Problem

OpenSSH odmawia wczytania klucza prywatnego, jeśli uprawnienia są zbyt luźne. Jeśli inne osoby mogą odczytać Twój klucz, Twoje bezpieczeństwo przestaje istnieć. Większość kluczy ma domyślnie ustawione 0644, co oznacza, że są one dostępne do odczytu dla wszystkich. OpenSSH wymaga 0600.

Nasze rozwiązanie

Stosujemy dwuetapowe podejście, aby sobie z tym poradzić.

Faza 1: Odzyskiwanie po błędzie

Jeśli połączenie zostanie przerwane z powodu uprawnień, interfejs użytkownika wyświetla przycisk „Napraw i ponów próbę”. Kliknięcie go uruchamia naprawę i ponawia próbę połączenia.

Faza 2: Zapobieganie przed połączeniem

Aplikacja sprawdza ścieżkę klucza, zanim użytkownik kliknie „połącz”. Jeśli uprawnienia są nieprawidłowe, wyświetlamy ostrzeżenie. Użytkownik może zdecydować o ich naprawieniu lub połączeniu się w obecnym stanie.

Inaczej obsługujemy również system Windows. Windows używa list ACL zamiast uprawnień Unix. Nasz kod wykrywa platformę i uruchamia odpowiednią komendę, np. icacls, aby naprawić dostęp.

Dlaczego nie naprawiamy automatycznie po cichu

Rozważaliśmy automatyczną naprawę kluczy podczas uruchamiania aplikacji. Odrzuciliśmy ten pomysł. Niektóre workflow wymagają specyficznych uprawnień dla współdzielonych kluczy. Jeśli zmienimy je bez pytania, zakłócimy workflow użytkownika.

Nasza zasada jest prosta: diagnozujemy wszystko, ale modyfikujemy pliki tylko wtedy, gdy użytkownik kliknie przycisk.

Wynik

Tworzenie UX, który niweluje techniczne przeszkody, zmniejsza liczbę zgłoszeń do wsparcia. Pokazujemy użytkownikowi, co jest nie tak, i oferujemy naprawę jednym kliknięciem. Usuwa to barierę psychologiczną związaną z korzystaniem z terminala.

Źródło: https://dev.to/susumun/solving-permissions-are-too-open-from-inside-the-app-auto-diagnosing-and-auto-fixing-ssh-key-3j75