Jak mogę ograniczyć użytkownika na serwerze SSH, aby zezwolić mu tylko na uprawnienia do SSH TUNNELING ? tzn. nie mogą uruchamiać poleceń, nawet jeśli logują się przez SSH.
Moje serwery Linux to Ubuntu 11.04 i OpenWrt.
źródło
Jak mogę ograniczyć użytkownika na serwerze SSH, aby zezwolić mu tylko na uprawnienia do SSH TUNNELING ? tzn. nie mogą uruchamiać poleceń, nawet jeśli logują się przez SSH.
Moje serwery Linux to Ubuntu 11.04 i OpenWrt.
Po stronie serwera można to ograniczyć, ustawiając jego powłokę użytkownika na /bin/true
. Pozwoli im to na uwierzytelnienie, ale nie uruchomią niczego, ponieważ nie dostaną powłoki do uruchomienia. Oznacza to, że będą ograniczeni do dowolnej części rzeczy, które SSH może im zaoferować. Jeśli oferuje przekierowanie portów, nadal będą mogli to zrobić.
Po stronie klienta prawdopodobnie będziesz chciał połączyć się z -N
. To powstrzymuje klienta od ZADANIA o zdalne polecenie, takie jak powłoka, po prostu zatrzymuje się po zakończeniu części uwierzytelniania. Dzięki komentatorom za zwrócenie na to uwagi.
useradd sshtunnel -m -d /home/sshtunnel -s /bin/true
.Zaletą tego jest to, że przekazywanie gniazd agentów X11 i SSH jest również niedozwolone, co nadal może być dozwolone w sposób Calebsa. Kolejną zaletą jest to, że jeśli użytkownik będzie mógł zmienić domyślną powłokę w jakikolwiek inny sposób, nadal ograniczy to dostęp SSH tylko do przekazywania dalej TCP.
Umieść w swoim
/etc/ssh/sshd_config
:aby umożliwić użytkownikowi
that-restricted-guy
przekazywanie wszelkich połączeń TCP za pośrednictwem komputera obsługującego SSH (połączenie z tym komputerem,localhost
a nawet połączenie z tym komputerem z innymi komputerami).Jeśli chcesz, aby był jeszcze bardziej restrykcyjny (co jest dobrym pomysłem), możesz również wykonać następujące czynności:
Umożliwi to użytkownikowi
even-more-restricted-guy
przekazywanie połączeń tylko do portu TCP 12345.0.0.1 127.0.0.1 (tak jak jest to widoczne na komputerze z włączonym SSH).Gdy użytkownik normalnie się łączy, zostanie on natychmiast rozłączony, ponieważ
/bin/false
polecenie zostanie uruchomione, co spowoduje jedynie natychmiastowe wyjście z kodem 1. Jeśli chcesz tego uniknąć i pozostawić otwarte połączenie przekazujące, dodaj-N
flagę dossh
polecenia. To nie będzie próbowało wykonać żadnego polecenia, ale nadal pozwoli skonfigurować przekazywanie TCP.Przykład polecenia do przodu, które powinno działać w tej ostatniej konfiguracji:
źródło
Możesz kontrolować, co ludzie mogą robić w ssh, dopasowując grupy, zakładając, że twoja wersja ssh jest wystarczająco nowa, aby ją obsługiwać (openssh 5.x +).
Zasadniczo traktujemy ich jak użytkowników sftp, ale zezwalamy na przekazywanie tcp i opcjonalnie określamy miejsca docelowe, do których mogą oni przekierowywać. Jeśli podasz im katalog domowy, ale nie utworzysz w nim żadnych katalogów, nie będą mogli przesyłać żadnych plików, ponieważ nie będą mieli na to pozwolenia.
Możesz powtórzyć te bloki grup dopasowania dla każdej grupy, dla której chcesz zastosować inne zachowanie lub ograniczenia.
Możesz dalej kontrolować, gdzie ta osoba może wejść do sieci za pomocą iptables
Zakłada się, że GID grupy „nicepeople” wynosi 500.
Niektóre z powyższych opcji ssh są dostępne w starszych wersjach openssh, ale nie w sekcji Dopasuj grupę. Grupa meczów jest bardzo ograniczona w OpenSSH 4.xi wcześniejszych.
źródło