Описано как OpenSSH засунуть chroot для безопасности вашего сервера.
Требования к связке: Обеспечить работу виртуальных пользователей путем отделения их от системы, в которой находится корень ОС, и тем самым обеспечить безопасность ее работы.
Требования к программам и версии:
FreeBSD 4.x 5.x — с установленными портами(Желательно обновленные)
OpenSSH 3.9.0.1 — не всегда последняя версия
Устанавливаем с помощью порта, который есть:Переходим
# /usr/ports/security/openssh-portable
Авторство: Статья написана исключительно из собственного опыта — все что здесь написано используйте на Ваш страх и риск. Никакие потери не восполняются за наш счет.
Приступаем:
Для начала нам нужны patch файлы для достижения нашей цели — забираем их тут, для Вашей версии есть разные патчи — не забываем когда скачиваем!
http://chrootssh.sourceforge.net/download/ берем отсюда файл *.diff
Теперь переходим в каталог
# cd /usr/ports/security/openssh-portable
#fetch http://chrootssh.sourceforge.net/download/osshChroot-3.9p1.diff
и далее я буду писать только комманды и короткое пояснение, дабы не отвлекаться от сути:
# make patch
# ee osshChroot-3.9p1.diff
теперь в самом файле, нужно подправить пути к каталогу.
Выглядет это примерно так —
diff -uNr openssh-3.9p1/session.c openssh-3.9p1-chroot/session.c
--- openssh-3.9p1/session.c Thu Aug 12 08:40:25 2004
+++ openssh-3.9p1-chroot/session.c Tue Aug 24 15:44:55 2004
нужно поменять на
diff -uNr work/openssh-3.9p1/session.c work/openssh-3.9p1/session.c
--- work/openssh-3.9p1/session.c Thu Aug 12 08:40:25 2004
+++ work/openssh-3.9p1/session.c Tue Aug 24 15:44:55 2004[/code]
Как только все пути поменяли, запускаем patch
[code]# patch < osshChroot-3.9p1.diff
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|=========================================================================
|diff -uNr work/openssh-3.9p1/session.c openssh-3.9p1-chroot/session.c
|--- work/openssh-3.9p1/session.c Thu Aug 12 08:40:25 2004
|+++ work/openssh-3.9p1/session.c Tue Aug 24 15:44:55 2004
--------------------------
Patching file work/openssh-3.9p1/session.c using Plan A...
Hunk #1 succeeded at 58.
Hunk #2 failed at 1236.
Hunk #3 succeeded at 1454 (offset 169 lines).
1 out of 3 hunks failed--saving rejects to work/openssh-3.9p1/session.c.rej
done
Вот что получилось у меня. Тут второй процесс был сорван - не упешен. Я тоже думал что это плохо, и пошел искать в файле session.c нужную строку. Я нашел ее, только ниже - оказывается что там уже есть такая строка, тоесть уже замененная. Значит все ОК, и работаем дальше.
Теперь:
# make
# make install clean
Все. Порт установлен. Перезодим к настройки пользователей.
Главное - все те кто будет работать в окружении chroot , должны быть "помечены" в файле /etc/master.passwd незатейливым способом.
Где у пользователя директория выглядет
/home/user , теперь должна выглядеть как
/home/user/./
Иправляем , тем кому предстоит жить в совем домике.
Теперь, для того чтобы все заработало, нужно дать в /home/user папки с бинарными внутренностями.
Чтобы это дело автоматизировать, берем вот этот файл:
Запускаем его как
# ./chroot_macher.sh user /usr/home/user
все. Пытаемся теперь зайти в окружение, используя пока тестовый аккаунт.
Если что то пошло не так, еще раз проверьте, правильно ли у Вас соответствуют каталоги, те что указаны в файле chroot_macher.sh . На версии 5.х замечаются некоторые баги, когда пользователи пытаются редактировать файлы в MC , почему то мы так и не нашли выход.
Спасибо:
1. всем тем то создал ПО, и распространяет его.
2. crash-у и Alan-у за тестирование и доработки.
Дополнения и доработки приветствуются!