Mój projekt wymaga ode mnie wyłączenia sftp dla niektórych użytkowników, ale ci użytkownicy nadal muszą łączyć się przez ssh. Czy ktoś wie, jak to wdrożyć?
Widziałem sugestie dotyczące zmiany pliku w /etc/ssh/sshd_config
, ale nie jestem pewien, co zmienić.
owner
dostępu wychodzącego. Zakłada się, że zostaniesz poddany próbie pióra przez drużynę czerwoną. Gdyby każdy, kto ma dostęp do twojego systemu, zawsze przestrzega zasad i nigdy nie ma złych zamiarów, moje podejście byłoby trudne i nadmiernie złożone.Odpowiedzi:
Ogólnie rzecz biorąc, jest to zła praktyka bezpieczeństwa z powodów wymienionych przez innych. Myślę jednak, że celem twojego zadania jest nauczenie cię, że możesz mieć sekcje konfiguracji warunkowej oparte na różnych kryteriach.
Sposobem na to jest użycie
Match
bloku warunkowego *.Aby uzyskać więcej informacji, i zapoznaj się
sshd_config(5)
zMatch
sekcjąGroup
.* Jest na to więcej niż jeden sposób.
źródło
To nie ma żadnego sensu, to bezpieczeństwo poprzez bezużyteczne zaciemnianie. Każdy użytkownik, który może SSH, będzie mógł przesłać dowolny plik, który będzie mógł odczytać za pośrednictwem sesji SSH. Będziesz także mógł pisać, jeśli masz na to uprawnienia.
Jak na przykład, możesz pobrać / etc / passwd przez ssh, używając następującej metody (nie wymaga sesji scp / sftp): ssh [email protected] "cat / etc / passwd"> passwdcopy
Jeśli możesz to zobaczyć na ekranie przez SSH, możesz łatwo skopiować go jako plik.
Jedynym sposobem, jaki to ma sens, jest posiadanie niestandardowej ograniczonej powłoki, która wymusza politykę bezpieczeństwa.
Jednak odwrotność tego ma sens (wyłączenie powłoki ssh, ale pozostawienie włączonego scp / sftp włączone), ponieważ nie jesteś w stanie wykonywać dowolnych poleceń za pomocą sftp / scp, które możesz wykonać za pomocą powłoki ssh.
PS: Zakładam, że udzielana powłoka SSH jest standardową powłoką, która umożliwia dowolne wykonanie. Jeśli tak nie jest, zobacz: Jak wyłączyć podsystem sftp dla określonego użytkownika lub grupy? i spójrz na opcję konfiguracji podsystemu sshd_config.
źródło
Wolę do tego użyć grupy.
Jest to przydatne w połączeniu z użytkownikami, którzy mają ograniczone powłoki. Czasami daję dostęp ssh klientowi, aby mógł uzyskać dostęp do zrzutu bazy danych swojej bazy danych, ustawiając powłokę na skrypt, który zrzuca dane. Odcięcie ich od scp również wydaje się być mądrym pomysłem. Nie mają dostępu do uruchamiania,
cat
aby przesłać plik przez ssh.źródło
Directive 'Subsystem' is not allowed within a Match block
Możliwe jest globalne włączenie SFTP i wyłączenie SFTP tylko dla niektórych użytkowników.
To nie działa, jeśli chcesz, aby użytkownik otrzymywał regularne polecenia powłoki. Nie ma to również sensu, ponieważ można obejść większość rzeczy, jeśli masz dostęp do powłoki. Działa tylko wtedy, gdy chcesz dać dostęp do określonego programu.
Potrzebuję tego osobiście, ponieważ chcę dać dostęp do niektórych repozytoriów git przez SSH i lubię wyłączać systemy, które nie są potrzebne. W takim przypadku SFTP nie jest potrzebne.
Pasujący
Aby dopasować zestaw użytkowników, możesz skonfigurować SSH za pomocą
Match
słowa kluczowego. Zsshd_config(5)
instrukcji:Kilka przykładów:
Match User eva
pasuje do użytkownika „eva”Match User stephen,maria
pasuje do użytkowników „stephen” i „maria”Match Group wheel,adams,simpsons
dopasowuje grupy „koło”, „adams”, „simpsonowie”Jeśli chcesz uzyskać więcej informacji, w
sshd_config(5)
instrukcji jest mnóstwo .Wymuszone polecenie
Zwykle otrzymujesz powłokę logowania użytkownika, gdy łączysz się przez SSH, ale SSH można skonfigurować tak, aby wymuszał określone polecenie. Polecenie jest wymuszone dla dowolnego połączenia SSH, w tym SFTP, dlatego możesz mieć możliwość wymuszenia żądanego polecenia.
Polecenie wymuszenia można skonfigurować za pomocą
ForceCommand
słowa kluczowego. Zsshd_config(5)
instrukcji:Możesz więc wymusić ograniczoną komendę, której chcesz użyć
ForceCommand <your command>
. Na przykład:Przykład
W moim przypadku, w którym chcę dać dostęp do git, potrzebuję tylko użytkownika
git-shell
. To jest sekcja, która wyłącza SFTP dla moich użytkowników git, wraz z kilkoma opcjami bezpieczeństwa:źródło
Testowane i działające na CentOS 6.6. Zauważ, że podsystem nie jest dozwolony z dopasowaniem przynajmniej w nowszych wersjach CentOS. Strona podręcznika dla sshd_config zawiera listę ograniczonych słów kluczowych, które są dozwolone z warunkiem dopasowania.
źródło
Możesz spojrzeć na scponly, aby zrobić odwrotnie, zezwalaj tylko na scp / sftp, ale bez dostępu do powłoki.
Zgadzam się z @Nathan powyżej, to nie ma większego sensu. Jeśli nie możesz tego zrobić, spróbuj edytować plik / etc / ssh / sshd_config i usunąć / skomentować następujący wiersz:
Podsystem sftp / usr / libexec / openssh / sftp-server
źródło
nie należy podawać katalogu domowego użytkownika
Zmień Podsystem sftp / usr / libexec / openssh / sftp-server w pliku / etc / ssh / sshd_config na Podsystem sftp / dev / null / usr / libexec / openssh / sftp-server
Następnie uruchom ponownie ssh
działa dla mnie, debian.
źródło
W
~/authorized_key
konfiguracji klucza użytkownika wykonaj następujące czynności:źródło