Mam szereg użytkowników, którzy muszą po prostu przesyłać pliki do swoich homedirów. Myślę, że wystarczy sftp, ale nie chcę, aby logowali się przez powłokę. Czy to możliwe? Moja platforma to centos 7, katalogi użytkowników są przechowywane, powiedzmy / personal / $ user
Stworzyłem użytkownika z tymi ustawieniami
useradd -m -d /personal/user1 -s /sbin/nologin
przypisałem użytkownikowi hasło, a kiedy używam sftp do zalogowania się na maszynie, mówi, że nie można się połączyć.
Odpowiedzi:
Edytuj swój,
/etc/ssh/sshd_config
aby zawierał:Restart
sshd
. Jeśli masz wielu użytkowników, umieść je wszystkie w wierszu dopasowania, oddzielając je przecinkami:Kluczem do skonfigurowania,
sftp
aby nie zezwalać na dostęp do powłoki, jest ograniczenie użytkowników za pomocąForceCommand
opcji.źródło
Match User [SFTP user]
ForceCommand internal-sftp
tylko, bez chrootowania.chroot
Podoba mi się następująca konfiguracja do zarządzania dostępem SSH, której używam w pracy do zarządzania grupą użytkowników na małej flocie serwerów. Bezpieczeństwo i łatwość zarządzania są wysoko na liście moich priorytetów.
Jego kluczowymi funkcjami są łatwe zarządzanie prawami SSH poprzez członkostwo w grupie Unix, posiadanie ściśle określonych uprawnień i domyślna ochrona.
Konfiguracja
Zainstaluj oprogramowanie (opcjonalne, ale przydatne):
Dodaj grupy:
W
/etc/ssh/sshd_config
upewnij się, że następujące ustawieniaNo
:Na koniec
/etc/ssh/sshd_config
dodaj te dwie zwrotki:(nie zapomnij zrestartować SSH po edycji pliku)
Wyjaśnienie
Co to wszystko robi?
allowssh
grupie.sftponly
grupie nie mogą uzyskać powłoki przez SSH, tylko SFTP.Zarządzanie dostępem jest następnie wykonywane po prostu przez zarządzanie członkostwem w grupie (zmiany wchodzą w życie natychmiast, nie jest wymagane ponowne uruchomienie SSH):
Zauważ, że twoi użytkownicy sftp muszą być członkami zarówno
sftponly
(aby upewnić się, że nie otrzymają powłoki), jak iallowssh
(aby umożliwić logowanie w pierwszej kolejności).Dalsza informacja
Pamiętaj, że ta konfiguracja nie pozwala na logowanie się za pomocą hasła ; wszystkie konta muszą korzystać z uwierzytelniania za pomocą klucza publicznego. Jest to prawdopodobnie największa wygrana w dziedzinie bezpieczeństwa, jaką można uzyskać dzięki SSH, więc uważam, że warto podjąć wysiłek, nawet jeśli musisz zacząć już teraz.
Jeśli naprawdę tego nie chcesz, dodaj także
PasswordAuthentication yes
doMatch Group allowssh
zwrotki. Umożliwi to użytkownikom zarówno uwierzytelnianie klucza publicznego, jak i hasłaallowssh
.Ta konfiguracja ogranicza dowolnego
sftponly
użytkownika do katalogu domowego. Jeśli tego nie chcesz, usuńChrootDirectory %h
dyrektywę.Jeśli chcesz , aby chrooting działał, ważne jest, aby katalog domowy użytkownika (i jakikolwiek katalog powyżej) był własnością
root:root
i nie był zapisywany przez grupę / inne. Można podkatalogi katalogu domowego być własnością użytkownika i / lub zapisywać.Tak, katalog domowy użytkownika musi należeć do użytkownika root i nie może być dla niego dyskredytowany. Niestety istnieją dobre powody tego ograniczenia. W zależności od sytuacji
ChrootDirectory /home
może być dobrą alternatywą.Ustawienie powłoki
sftponly
użytkowników na/sbin/nologin
nie jest konieczne ani szkodliwe dla tego rozwiązania, ponieważ SSHForceCommand internal-sftp
zastępuje powłokę użytkownika.Używanie
/sbin/nologin
może być pomocne w powstrzymywaniu ich od logowania się na inne sposoby (konsola fizyczna, samba itp.)Ta konfiguracja nie pozwala na bezpośrednie
root
logowanie przez SSH; stanowi to dodatkową warstwę bezpieczeństwa. Jeśli naprawdę nie potrzebują bezpośredniego logowania roota, należy zmienićPermitRootLogin
dyrektywę. Rozważ ustawienie naforced-commands-only
,prohibit-password
i (w ostateczności)yes
.Aby uzyskać punkty bonusowe, sprawdź, kto może
su
rootować; dodać grupę systemową o nazwiewheel
i dodać / włączyćauth required pam_wheel.so
w/etc/pam.d/su
.źródło
chown root:root
ichmod og-w
wystarczy zmienić ich domyślną powłokę na / sbin / nologin. Zakładając, że większość odmian systemu Linux:
źródło
Subsystem sftp internal-sftp
) (a możeForceCommand internal-sftp
). Jeśli są wspólneSubsystem sftp /path/to/sftp-server
,nologin
zapobiegną nawet SFTP.możesz użyć tftp. cokolwiek powyżej ssh będzie wymagać uwierzytelnienia (key | pass).
chociaż tftp można zabezpieczyć, warto ponownie rozważyć decyzję o zapewnieniu dostępu do czegokolwiek bez uwierzytelnienia.
http://manpages.ubuntu.com/manpages/bionic/man1/tftp.1.html
źródło