Страница 4 из 4 ПерваяПервая ... 234
Показано с 31 по 40 из 40.

Тема: Доступ по SSH в chroot окружение

  1. #31
    Junior Member
    Регистрация
    29.04.2011
    Сообщений
    5

    По умолчанию

    Как сделать chroot для ssh

    Давать шелл пользователям необходимо.
    Давать шелл без chroot неприемлемо с точки зрения безопасности.
    Принимаем эти тезисы за аксиому и не обсуждаем!

    Чтобы сделать chroot нужна современная версия ssh с поддержкой chroot и internal-sftp. Пишем в /etc/ssh/sshd_config

    Subsystem sftp internal-sftp
    Match Group mgrsecure
    ChrootDirectory %h

    Включаем встроенный sftp сервер (вместо того, который внешний Subsystem sftp /usr/lib/openssh/sftp-server и строчку внешнего убираем)
    Все пользователи группы mgrsecure (пользователи из панели) будут попадать в chroot.
    Вы так уже пробовали и у вас не работает?
    Конечно не работает) ругается на ownership or modes for chroot directory в это погуглили и узнали что нужно сменить владельца домашней директории пользователя на root:wheel, но считаете это неприемлемым?
    Теперь берем исходники openssh открываем файл session.c на строку 1453 и находим там
    if (st.st_uid != 0 || (st.st_mode & 022) != 0)
    вот она та самая проверка на принадлежность руту пользовательской директории
    меняем на
    if ((st.st_mode & 022) != 0)
    тоесть проверяем только на то чтобы в директорию никто кроме юзера (ну и рута конечно) не мог писать

    Собираем ssh и устанавливаем, надеюсь вы знаете как это делать в вашей системе

    Теперь больше не ругается на права и если заходить по протоколу sftp (не fish!) то пользователь находится в свой директории и может работать с файлами.
    Если вы хотели только этого, то вам больше ничего делать не нужно. Для встроенного sftp сервера не нужно никакого окружения внутри chroot.

    А вот если вы хотите сделать еще и шелл доступ, то окружение все же понадобится. Попробуйте зайти по ssh и увидите что это не получается потому что нет файла оболочки.

    Надеюсь что у вас стоит noexec на разделах /tmp /var /home чтобы пользователи не смогли исполнять свои бинарные файлы, только те которые установлены в системе, gcc конечно тоже нужно запретить. Из-за этого noexec нельзя просто скопировать некоторое окружение в директорию пользователя, оно не будет работать, да вы и не хотите копировать файлы всем пользователям как советуется тут http://wolandblog.com/1090-openssh-chroot-v-freebsd/
    Что же делать?
    Есть хитрый план. Берем http://pam-mount.sourceforge.net/ и делаем такие монтирования при входе пользователя в систему
    <volume sgrp="mgrsecure" path="/usr/local/chroot/busybox" mountpoint="~/bin" options="bind,exec,nosuid,ro,nodev,mode=755" />
    <volume sgrp="mgrsecure" path="/usr/local/chroot/dev" mountpoint="~/dev" options="bind,noexec,rw,dev,mode=755" />

    (Для freebsd это будет не -o bind, а mount -t nullfs)

    У меня используется busybox который не требует никаких библиотек, также вам будет нужен некоторый dev (ну хотя бы tty null zero random console) если у вас freebsd то можно вместо busybox взять то что лежит в /rescue. Если вы хотите боле полный шелл, то либо берите нормально окружение и монтируйте /lib /usr тоже, либо собирайте программы со статической линковкой, но это у вас не получится, никто не умеет этого делать, даже никогда и не думал об этом похоже, а я ниасилил.
    Да, и еще добавьте <mkmountpoint enable="1" remove="true" /> чтобы монтируемые директории создавались до монтирования а после монтирования удалялись сами если пустые. Если у пользователя были такие директории в корне они не пропадут, а будут перемонтированы другой директорией поверх.

    Ну и соответственно делаем то место откуда это будет монтироваться одно на всех и так чтобы никто там ничего изменить не смог.

    как писать xml конфиг к пам_маунт курите тут http://pam-mount.sourceforge.net/pam_mount.conf.5.html
    а чтобы он отрабатывал при входе пользователя, добавьте такое примерно

    auth required pam_mount.so
    auth sufficient pam_ldap.so use_first_pass
    auth required pam_unix.so use_first_pass
    session optional pam_mount.so

    в конфиг pam
    http://pam-mount.git.sourceforge.net.../pam_mount.txt

  2. #32
    Senior Member
    Регистрация
    12.02.2007
    Сообщений
    1,140

    По умолчанию

    Прочел спасибо, думаю эту тему можно развить, есть еще для Linux модуль pam_chroot.
    Когда мне становится скучно, я скачиваю новый release

  3. #33
    Senior Member
    Регистрация
    30.04.2012
    Сообщений
    152

    По умолчанию

    ап
    С 2007 года что то с безопастностью шела на предмет помещения в chroot поменялось нет?

  4. #34
    Senior Member
    Регистрация
    28.08.2012
    Сообщений
    131

    По умолчанию

    Цитата Сообщение от nyanya Посмотреть сообщение
    ап
    С 2007 года что то с безопастностью шела на предмет помещения в chroot поменялось нет?
    В chroot так и не добавили.

  5. #35
    Senior Member Аватар для Alex Keda
    Регистрация
    20.01.2009
    Адрес
    USSR
    Сообщений
    2,919

    По умолчанию

    Цитата Сообщение от Dmitry Ilyin Посмотреть сообщение
    Как сделать chroot для ssh

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

    и что вы не можете сделать из пхп-шелла, при том что опенбазедир с последних версий пхп вообще уже нету? =))
    Убей их всех! Бог потом рассортирует...

  6. #36
    Senior Member
    Регистрация
    28.08.2012
    Сообщений
    131

    По умолчанию

    http://www.php.net/manual/ru/ini.cor...i.open-basedir
    Замечание:

    Начиная с версии PHP 5.3.0 значение open_basedir можно сделать более строгим во время выполнения скрипта. Это означает, что если open_basedir была установлена в /www/ в php.ini, то скрипт может ужать конфигурацию до /www/tmp/ во время выполнения с помощью ini_set(). При указании нескольких директорий можно использовать константу PATH_SEPARATOR в качестве разделителя путей, не зависящего от операционной системы.
    Alex, разве опенбазедир с последних версий пхп убрали?

  7. #37
    Senior Member Аватар для Alex Keda
    Регистрация
    20.01.2009
    Адрес
    USSR
    Сообщений
    2,919

    По умолчанию

    хм... значицо я чё-то не так понял =)
    --
    сути это не меняет, я всё ещё жду рассказа
    Убей их всех! Бог потом рассортирует...

  8. #38
    Junior Member
    Регистрация
    18.11.2016
    Сообщений
    7

    По умолчанию

    А воз и ныне там?

  9. #39
    Senior Member Аватар для Армаэль
    Регистрация
    22.03.2015
    Адрес
    Москва
    Сообщений
    282

    По умолчанию

    CloudLinux с CageFS, остальное не работает нормально

  10. #40
    Junior Member
    Регистрация
    18.11.2016
    Сообщений
    7

    По умолчанию

    Армаэль, ну тобишь с доплатой и переустановкой системы... Печально.

Ваши права в разделе

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •