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


18

У меня 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

Вы перезапустили sshd? Что находится в лог файлах на сервере?
Мошенник

Да, извините, я забыл добавить это в конец моего вопроса (включу сейчас). Какой файл журнала (и местоположение) я должен искать, потому что мне пока не удалось найти файл «журнала сеанса»? Благодарю.
zigojacko

Вы хотите взглянуть на /var/log/secure.
Мошенник

Отлично, спасибо - это помогает (обновление вопроса с записями в журнале).
zigojacko

фатальный: плохое владение или режимы для компонента каталога chroot "/ var / www / vhosts /", что-то вроде этого я подозревал, но vhostsесть root:root.
zigojacko

Ответы:


14

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


4
Я только что выучил трюк, чтобы проверить это удобно:namei -l /var/www/vhosts
clockworkgeek

5

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

Отредактируйте конфигурацию 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

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

Потом:

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-only» с GID 500):

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

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

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)

Можно настроить все это по мере необходимости.

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

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


Добро пожаловать в сбой сервера! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
masegaloeh

1
Так как вы изменили конфигурацию sshd, я бы предложил перезапустить его:service sshd restart
Loïc
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.