drugie SSH, niezależna lista użytkowników
Kocurro - 15-08-2009 10:23
drugie SSH, niezależna lista użytkowników
Witajcie,
szukam od wczoraj i nigdzie nie mogę trafić na włąściwy trop. Może ktoś z Was zetknął się z tym co ja i zna rozwiązanie.
Otóż potrzebuję na serwerze uruchomić drugą instancję SSH, która nie będzie korzystała z listy z użytkowników systemowych a dokładniej: w tej kopii ssh chcę mieć możliwość utworzenia niezależnej listy użytkowników i utworzenia pliku .authorized_keys by użytkownicy byli uwierzytelniani na podstawie klucza a dodatkowo zależnie od nazwy użytkownika oraz klucza wywoływane było od razu polecenie.
Czyli działające tak samo jak standardwowe ssh tylko by móc zdefiniować listę użytkowników którzy nie są użytkownikami utworzonymi w systemie operacyjnym. Ci użytkownicy nie mają mieć dostępu do shella a tylko i wyłącznie po ich pomyślnym zalogowaniu ma być wykonywane polecenie w tunelu.
Potrzebuje tego ponieważ tworzę pewne oprogramowanie a ssh chce użyć do tunelowania (tak jak to jest zrobione w przypadku SVN'a). A nie chcę tworzyć w systemie konta dla każdego użytkownika.
Wiem, że to temat trochę dziwny ale jakiś czas temu czytałem o tym i wiem, że to jest możliwe tylko nie wiem jak to zrobić.
Będę wdzieczny za jakiekolwiek naprowadzenie na temat.
Pozdrawiam serdecznie,
Łukasz Piotr Łuczak
spo0lsh - 15-08-2009 12:37
Chroot/Jail odpowiedzią? Może sshd+ldap/sql?
mariano - 15-08-2009 12:42
Mozliwe, ze w ogole nie potrzebujesz uzytkownikow systemowych.
Powolales sie na svn: tam wlasnie jest swietny przyklad, jak to zrobic. W przykladu svn-a wystarczy jeden "prawdziwy" uzytkownik systemowy, ktory w pliku authorized_keys ma wiele kluczy "wirtualnych" uzytkownikow.
Kod:
command="svnserve -t -r /home/svn/repos --tunnel-user=francis" ssh-rsa ...
command="svnserve -t -r /home/svn/repos --tunnel-user=benjamin" ssh-rsa ...
command="svnserve -t -r /home/svn/repos --tunnel-user=franck" ssh-rsa ...
Polecenie "svnserve" do swoich celow uzywa wylacznie nazwy podanej w parametrze "--tunnel-user", w ogole nie interesuje go nazwa biezacego uzytkownika systemowego.
Wydaje mi, ze w 99% przypadkow podobne rozwiazanie w zupelnosci wystarczy.
Kocurro - 15-08-2009 13:18
@mariano: właśnie potrzebuję rozszerzyć to rozwiązanie tak by nie był potrzebny ten jeden użytkownik systemowy ;) Bo w moim przypadku takich użytkowników by było potrzeba bardzo dużo niestety.
@spo0lsh: możesz rozwinąc to sshd + ldap/sql ? szczególnie to + sql ? :> myślałem, że pryz użyciu chroot/jail nie miałbym dostępu do oddzielnej listy użytkowników ... hmm . Podpowiesz więcej ?
uid - 15-08-2009 14:03
Cytat:
Witajcie,
szukam od wczoraj i nigdzie nie mogę trafić na włąściwy trop. Może ktoś z Was zetknął się z tym co ja i zna rozwiązanie. [...]
Czyli działające tak samo jak standardwowe ssh tylko by móc zdefiniować listę użytkowników którzy nie są użytkownikami utworzonymi w systemie operacyjnym. Ci użytkownicy nie mają mieć dostępu do shella a tylko i wyłącznie po ich pomyślnym zalogowaniu ma być wykonywane polecenie w tunelu.
man sshd_config (AllowUsers, AllowGroups)
spo0lsh - 15-08-2009 14:53
Cytat:
@spo0lsh: możesz rozwinąc to sshd + ldap/sql ? szczególnie to + sql ? :> myślałem, że pryz użyciu chroot/jail nie miałbym dostępu do oddzielnej listy użytkowników ... hmm . Podpowiesz więcej ?
Czytałem, że można zmusić sshd by nie korzystał z /etc/passwd tylko ldap/sql ale byś musiał dogooglać konkretniej.
Co do chroot, to po prostu "drugi" system, czyli całe "/" z systemem zaszyte w systemie podstawowym.
Polecam poczytanie jak działa:
http://olivier.sessink.nl/jailkit/
zanotowane.pldoc.pisz.plpdf.pisz.plkonstruktor.keep.pl