Mam skrypt Bash, który automatycznie uwierzytelnia się w usłudze przy użyciu mojej nazwy użytkownika i hasła. Poświadczenia są obecnie przechowywane w skrypcie jako zwykły tekst.
Jakie środki ostrożności należy podjąć, aby jak najbezpieczniej przechowywać te poświadczenia, jednocześnie umożliwiając dostęp do skryptu?
Wyjaśnienia:
- Rozumiem, że jeśli to możliwe, należy zastosować inne metody uwierzytelnienia. Nadal chcę wiedzieć, co zrobić, jeśli uwierzytelnianie za pomocą hasła jest jedyną opcją.
- Brak przechowywania hasła w ogóle nie jest tutaj akceptowalną odpowiedzią. Pytam o przypadek, w którym skrypt musi mieć nienadzorowany dostęp do hasła.
Odpowiedzi:
Jakiego rodzaju usługi? Niektóre usługi mają inne metody uwierzytelniania, np. Klucze SSH dla SSH w połączeniu z agentem SSH.
Przechowuję hasło oddzielnie od skryptu i upewniam się, że wszystkie składniki ścieżki mają ustawione odpowiednie uprawnienia. Na przykład, upewnij się, że w ścieżce
/path/to/file
,/
,/path
i/path/to
są własnością użytkownika ufasz (root
) i że nie są to zapisywalny przez kogoś, kto nie jest dozwolone, aby zobaczyć pliki. Wreszcie zalecane uprawnieniafile
to 600 lub 400.Że
file
mógłby wyglądać następująco:W swoim skrypcie użyj poniższego kodu, aby zaimportować zmienną:
Co do skryptu, upewnij się, że nie zawiera on dziur, które mogą pozwolić atakującym na wykonanie kodu w kontekście skryptu (np. Niekontrolowane środowisko, w którym może być ustawiona dowolna
$PATH
zmienna lub nieprawidłowe użycie innych plików (np. Pozyskiwanie pliku do zapisu na świecie) .Jeśli chodzi o faktyczną ochronę hasła, nie możesz. Musi być jakoś dostępny dla innej usługi. Alternatywnie możesz zaszyfrować plik / skrypt zawierający hasło za pomocą,
openssl
lubgpg
musisz wprowadzić hasło przed odblokowaniem poświadczeń. Jest to szczególnie przydatne, jeśli hasło do usługi jest trudne do zapamiętania.źródło
Zamiast zakodować hasło w pliku, przechowuj hasło w osobnym pliku i chroń plik (
chmod 700
lubchmod 500
), aby tylko autoryzowani użytkownicy mieli do niego dostęp.Pobierz hasło za pomocą
cat /dir/to/file/with/.password
zamiast odczytywać plik i przechowywać jego zawartość w zmiennej.źródło
--passphrase-file
.chmod 400
dla plików (tylko do odczytu). Oczywiście musisz zabezpieczyć wiodące katalogi (700 lub 500, a nawet 100, jeśli jesteś paranoikiem). Zauważ, że 400 (lub 500 dla katalogów) jest wystarczające, inne tryby (100) można uznać za bezpieczeństwo poprzez zaciemnienie , podobnie jak ukrywanie pliku przez umieszczenie kropki przed nazwą.Wiem, że to stare pytanie, ale zmierzyłem się z tym podobnym problemem i użyłem breloczka do kluczy Ubuntu, aby go rozwiązać. Oto rozwiązanie dla Ubuntu 18.04LTS Otwórz terminal Zapisz
keyring set {{service}} {{username}}
na przykład, jeśli używasz tego do logowania do szkoły:Zostaniesz zalogowany w celu wprowadzenia hasła. Wprowadź hasło. Teraz wprowadzone hasło jest przechowywane w breloku Ubuntu.
Aby uzyskać to hasło, napisz w terminalu:
aby użyć tego w kontekście skryptu:
Teraz hasło jest zgodne z wcześniej wprowadzonym hasłem.
źródło