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.