Назад | Перейти на главную страницу

Создание пользователей SFTP и установка chroot в CentOS - ошибка аутентификации пользователя

У меня есть CentOs версии 6.4 с Digital Ocean, и я хотел бы успешно создавать пользователей SFTP и помещать их в собственный домашний каталог chroot, но я боюсь, что напортачу с этим.

Я пробовал много вещей, слишком много, чтобы перечислять здесь на самом деле, поскольку большинство из них, вероятно, неверно или не имеет особого смысла, но то, что я считаю, должно быть правильным процессом, и то, что я пробовал, это:

Создать группу для sftp: -

groupadd sftp

Создайте пользователя и установите его домашний каталог: -

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

Установите пароль для пользователя: -

passwd dummyuser

Измените группу пользователя на sftp: -

usermod -g sftp dummyuser

Установите оболочку пользователя на /bin/false: -

usermod -s /bin/false dummyuser

Изменить подсистему в sshd_config (/etc/ssh/): -

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

Добавьте следующее в нижнюю часть sshd_config файл:-

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

Я удостоверяюсь, что все следующие каталоги root:root: -

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

Если я затем попытаюсь войти на сервер через SFTP с пользователем dummyuser (в WinSCP) я получаю следующее: -

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

Authentication failed.

Все, чего я хочу добиться, - это поместить пользователя в домашний каталог. Я также установил и настроил vsftpd. Пользователи могли нормально войти в систему, но имели бы доступ ко всему серверу - мне просто не удалось заставить работать тюрьму.

редактировать

Забыл упомянуть, затем перезапустил sshd также:-

service sshd restart

Когда ошибка возникает в WinSCP, их страница справки по этому поводу Вот.

Журнал результатов

/var/log/secure

Я заменил фактическое имя сервера на 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

Это распространенная ошибка:
Все папки до chroot home должны принадлежать и доступны для записи только root пользователь.
Папки не могут быть доступны для групповой записи, даже если группа root.

Я нашел и успешно настроил sftp на CentOS 6.5: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Отредактируйте конфигурацию sshd:

vim / и т.д. / 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

Выйти и сохранить.

Затем:

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

Для нового пользователя с именем "testuser" (член группы только для sftp с GID 500):

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

(я использую пустой / etc / skel2, поэтому CentOS по умолчанию не копирует .bashrc и т.д.)

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

В этом примере я сделал это, чтобы предоставить безопасный доступ внешним консалтинговым фирмам, которые управляют веб-сайтами. После всего этого вы могли сделать:

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)

Все это можно было настроить по мере необходимости.

Надеюсь, это помогло!

Гай Бойсверт IngTegration inc. http://www.ingtegration.com