Załóżmy, że utworzyłem konto, którego powłoka logowania jest w rzeczywistości skryptem, który nie zezwala na logowanie interaktywne i pozwala tylko na bardzo ograniczony, określony zestaw poleceń do zdalnego wykonania.
Niemniej jednak ssh
umożliwia użytkownikowi tego konta przekazywanie portów, co jest dziurą.
Teraz chodzi o to, że tak naprawdę chcę, aby to konto skonfigurowało określoną konfigurację przekierowania portów po ustanowieniu ssh
sesji. Ale musi być niemożliwe skonfigurowanie dowolnego przekierowania portów.
(Jest to dopuszczalne rozwiązanie, jeśli dozwolona konfiguracja przekierowania portów jest bezwarunkowo ustanowiona w ramach każdej sesji).
ssh
port-forwarding
Kaz
źródło
źródło
Odpowiedzi:
Okazuje się, że OpenSSH ma do tego funkcję, która ogranicza
-L
styl otwierania po stronie serwera. Ta funkcja jest dostępna na dwa sposoby.W pliku konfiguracyjnym serwera jest
PermitOpen
dostępna opcja. Tej opcji można użyć do określenia hostów i portów, dla których można ustanowić przekazywanie. Tej opcji można użyć wewnątrzMatch
bloku, więc może być ograniczona przez użytkownika, grupę lub nazwę hosta lub wzorzec adresu IP.W
authorized_keys
pliku opcje mogą być powiązane z określonym kluczem. Istniejepermitopen
opcja, która działa podobnie do konfiguracji serwera.Uwagi / ograniczenia:
Ta opcja
AllowTcpForwarding
wyłącza wszystkie przekazywanie w obu kierunkach, uniemożliwiając skonfigurowanie portów nasłuchiwania na serwerze, a także aktywne przekazywanie dalej.Nie ma
PermitOpen
kontroli dostępu dla-R
połączeń w stylu. To chyba w porządku. Oznacza to, że użytkownicy mogąssh
otwierać różne nieuprzywilejowane porty do nasłuchiwania na serwerze. Problemem klienta jest połączenie z drugą stroną połączenia SSH. Jeśli ograniczymy przekazywanie w tym-L
kierunku, użytkownik nie będzie mógł korzystać z tych-R
portów (przynajmniej nie przezssh
, jeśli ten użytkownik nie będzie w stanie utworzyć arbitralnej sesji interaktywnej).Wydaje się, że nie ma sposobu na utworzenie pustej listy dozwolonych otwarć, aby uniemożliwić użytkownikom nawiązywanie jakichkolwiek
-L
stylowych połączeń. Jednak obejściem tego problemu jest użycie nieszkodliwej, nieistniejącej lub niemożliwej nazwy hosta, takiej jak pusty ciąg. Konkretnie,permitopen=":1234"
załatwia sprawę.źródło
-R
, działa to dla mnie.Argument „dowolny” może być wykorzystany do usunięcia wszystkich ograniczeń i umożliwienia wszelkich żądań przekazania. Argument „brak” może być wykorzystany do zablokowania wszystkich żądań przekazania. Domyślnie wszystkie żądania przekierowania portów są dozwolone.
źródło