Zagrożenia bezpieczeństwa związane z PermitUserEnvironment w ssh


11

Przeczytałem sporo postów dotyczących użycia PermitUserEnvironmenti pliku ~/.ssh/environmentw celu przekazania zmiennych env do powłoki ssh. Oficjalne dokumenty sshd i kilka innych zasobów wskazują na pewne ryzyko związane z bezpieczeństwem.

Włączenie przetwarzania środowiska może umożliwić użytkownikom ominięcie ograniczeń dostępu w niektórych konfiguracjach przy użyciu mechanizmów takich jak LD_PRELOAD.

Jakie są prawdopodobne problemy z aktywacją związane z bezpieczeństwem PermitUserEnvironment? Chciałem zachować szczegóły połączenia DB w tych zmiennych środowiskowych, czy jest to wskazane?


Złożyłem raport o błędzie w projekcie OpenSSH, prosząc go o dodanie kilku słów na stronie podręcznika sshd_config, wyjaśniając ten problem: bugzilla.mindrot.org/show_bug.cgi?id=2317
Florin Andrei

Odpowiedzi:


16

Przede wszystkim, jeśli nie próbujesz robić nic wymyślnego z ograniczeniami dostępu użytkownika - to znaczy, jeśli oferujesz interaktywny dostęp do powłoki - prawdopodobnie nie ma żadnych dodatkowych zagrożeń bezpieczeństwa, umożliwiając korzystanie z .ssh/environmentpliku, ponieważ cokolwiek użytkownik może osiągnąć ten plik, może także wykonywać interaktywnie w swojej powłoce.

Włączenie przetwarzania środowiska może umożliwić użytkownikom ominięcie ograniczeń dostępu w niektórych konfiguracjach przy użyciu mechanizmów takich jak LD_PRELOAD.

Jeśli używasz poleceń SSH wymuszonych, aby ograniczyć możliwości osób korzystających z ssh (na przykład, jeśli ograniczasz ludzi tylko do używania sftplub scp), zezwolenie komuś na ustawienie zmiennych środowiskowych, takich jak LD_PRELOAD(a może nawet PATH), pozwoli na przejęcie twojego ograniczenia, zastępując podstawowe wywołania biblioteki własnym kodem. Z drugiej strony, jeśli tworzysz .ssh/environmentw imieniu swoich użytkowników, którzy w inny sposób nie byliby w stanie nimi zarządzać, ryzyko jest stosunkowo niewielkie.

Bez wiedzy na temat konkretnego przypadku użycia trudno jest udzielić ostatecznej odpowiedzi.


Zezwalam na dostęp do serwera tylko 2 lub 3 zaufanym stronom (deweloperom w naszej organizacji) za pomocą ich kluczy rsa. Więc z tego, co mówisz, brzmi dobrze
Rob Squires,

Z twojej odpowiedzi zakładam, że nie powinienem tracić czasu na konsekwencje bezpieczeństwa włączenia tej opcji, jeśli wszystkie moje konta ssh zapewniają pełny dostęp bash (bez sudo). Poprawny?
Florin Andrei

To jest poprawne. Jeśli zapewniasz pełny dostęp bash, ludzie mogą już ustawiać dowolne zmienne środowiskowe, jakie chcą.
larsks
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.