Tworzenie użytkowników SFTP i więzienie w chroot na CentOS - błąd uwierzytelnienia użytkownika

18

Mam wersję CentOs 6.4 z Digital Ocean i chciałbym z powodzeniem tworzyć użytkowników SFTP i uwięzić ich w katalogu domowym użytkownika chroot, ale obawiam się, że robię z tego bałagan.

Próbowałem wielu rzeczy, o wiele za dużo, aby je tutaj wymienić, ponieważ większość z nich jest prawdopodobnie nieprawidłowa lub nie ma większego sensu, ale uważam, że powinien to być prawidłowy proces i próbowałem: -

Utwórz grupę dla sftp: -

groupadd sftp

Utwórz użytkownika i ustaw jego katalog domowy: -

useradd -d /var/www/vhosts/domain.com dummyuser

Ustaw hasło dla użytkownika: -

passwd dummyuser

Zmień grupę użytkowników na „sftp”: -

usermod -g sftp dummyuser

Ustaw powłokę użytkownika na /bin/false: -

usermod -s /bin/false dummyuser

Edytuj podsystem w sshd_config( /etc/ssh/): -

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Dodaj następujący tekst na dole sshd_configpliku: -

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

Upewniam się, że wszystkie następujące katalogi to root:root: -

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

Jeśli następnie spróbuję zalogować się na serwerze za pomocą SFTP z użytkownikiem dummyuser(w WinSCP), otrzymam następujące informacje:

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

Wszystko, co chcę osiągnąć, to więzienie użytkownika w jego katalogu domowym. Mam również skonfigurowane i skonfigurowane vsftpd. Użytkownicy mogliby się zalogować, ale mieliby dostęp do całego serwera - po prostu nie udało mi się w ogóle uruchomić więzienia.

Edytować

Zapomniałem wspomnieć, a następnie ponownie uruchomiłem sshdrównież:

service sshd restart

Kiedy błąd pojawia się w WinSCP, ich strona pomocy na ten temat jest tutaj .

Wyniki dziennika

/var/log/secure

Rzeczywistą nazwę serwera zastąpiłem server_name.

 Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
 Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser
zigojacko
źródło
Zrestartowałeś się sshd? Co znajduje się w plikach dziennika na serwerze?
faker
Tak, zrobiłem, przepraszam, zapomniałem dodać to na końcu mojego pytania (będzie zawierać teraz). W którym pliku dziennika (i lokalizacji) powinienem szukać, ponieważ do tej pory nie udało mi się znaleźć pliku dziennika sesji? Dzięki.
zigojacko
Będziesz chciał rzucić okiem /var/log/secure.
faker
Doskonale, dziękuję - to pomaga (aktualizacja pytania z wpisami dziennika).
zigojacko
fatal: złe prawo własności lub tryby komponentu katalogu chroot "/ var / www / vhosts /" coś takiego, jak podejrzewałem, ale vhostsjest root:root.
zigojacko

Odpowiedzi:

14

To powszechna pułapka:
wszystkie foldery do domu chroot muszą być własnością i mogą być zapisywane tylko przez rootużytkownika.
Folderów nie można zapisywać w grupie - nawet jeśli grupa jest root.

oszust
źródło
4
Właśnie nauczyłem się sztuczki, aby sprawdzić to wygodnie:namei -l /var/www/vhosts
clockworkgeek
5

Znalazłem i pomyślnie skonfigurowałem sftp na CentOS 6.5: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Edytuj konfigurację sshd:

vim / etc / ssh / sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server (comment out the default with "#")

add:

Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/www/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Wyjdź i zapisz.

Następnie:

mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)

W przypadku nowego użytkownika o nazwie „testuser” (członek grupy tylko dla sftp z GID 500):

useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser

(używam pustego pliku / etc / skel2, więc domyślnie nie kopiuje się pliku .bashrc itp.)

mkdir -p /var/www/testuser/home/testuser

chown root:sftp-only /var/www/testuser
chmod 750 /var/www/testuser

chown root:root /var/www/testuser/home
chmod 755 /var/www/testuser/home

chown testuser:sftp-only /var/www/testuser/home/testuser
chmod 770 /var/www/testuser/home/testuser

Dlatego w tym przykładzie zapewniłem bezpieczny dostęp do zewnętrznych firm konsultingowych, które zarządzają stronami internetowymi. Po utworzeniu tego wszystkiego możesz:

mkdir /var/www/testuser/home/testuser/www.somesite.com
chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com
chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)

Można to wszystko dostroić w razie potrzeby.

Mam nadzieję, że to pomogło!

Guy Boisvert IngTegration inc. http://www.ingtegration.com

Guy Boisvert
źródło
Witaj w Server Fault! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
masegaloeh
1
Ponieważ zmieniłeś konfigurację sshd, sugeruję, abyś ją zrestartował:service sshd restart
Loïc