Меню Рубрики

Linux ограничить пользователя домашней папкой

Дополнительно

Ограничение пользователя SSH домашней директорией

Ограничение пользователя SSH домашней директорией

Ограничение пользователя SSH домашней директорией

Сделал небольшое обновление хостинга. Очень часто бывает удобно и производить файловые операции на сервере, например закачивать по одному долго и неудобно, снимать дамп баз данных и делать прочие действия. Давать для этого полноценный ssh не очень интерсно, потому что пользователь сможет бродить по моей системе и, если у меня где-то выставлены не совсем правильные права, сможет получить данные, которые он получать не должен. И опять комбинация встроенных средств unix-like помогает нам успешно решить эту задачу.

Будем делать ssh chroot. Создадим юзера: root обязательно должен быть владельцем домашней директории пользователя.
Теперь внизу конфига sshd /etc/ssh/sshd_config, определим индивидуальные настройки для пользователя: Ну и перечитываем конфиг: Теперь можно попробовать зайти под логином пользователя и понять, что ssh не работает. А не работает потому что никаких команд в системе нет, то есть можно использовать только sftp. Но мы хотим, чтобы был доступен терминал с необходимым для работы набором команд. Поэтому можно, как это принято в мире unix, пойти двумя путями: Подмонтируем все что нужно в фс пользователя: Но при таком подходе некоторые данные будут доступны, которые, пользователю знать не обязятельно. Например, команда df или ifconfig.

Поэтому можно четко определить, что минимально необходимо пользователю и создать жесткие ссылки. Но этот способ не будет работать, если используется более одного раздела, а используется почти всегда используется более одного раздела, потому что нужна кластеризация, удаленные фс и тому подобное, поэтому делаем директорию /home/chrootuser и туда скопируем необходимый набор команд. У меня он получился такой: Теперь мы получили некий аналог директории /etc/skel только у нас не файлы, которые будут в домашней директории, а скелет системы, которую увидит пользователь. Дальше воспользуемся специальной фс union: Эта, крайне полезная фс, которая позволяет представлять расположенные в разных местах данные, представлять в некой директории. Эта фс имеет очень много самых невероятных возможностей, но нам сейчас необходимо, чтобы внутри домашней директории пользователя появились необходимые команды, кроме того эти команды должны быть с аттрибутом «только чтение». В противном случае злоумышленник может произвести замену, уже общих для всех пользователей, системных файлов.
Отлично, теперь мы смогли войти в систему. Набор команд ограничен, все что необходимо конечный пользователь может делать. Самое важное, что все это выполнено при помощи встроенных средств, которые будут обновляться вместе с системой и не нужно отдельно следить за дополнительным ПО.

Я сделал скрипт, которые позволяет все описанное выше несколько автоматизировать. Сделайте файл chcommands, сожержащий пути до необходимых программ. Скрипт скопирует все эти команды и необходимые библиотеки.

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

Источник

Ограничение прав локального пользователя в Linux до минимума

Как то раз появилась следующая задача: создать локального пользователя в ОС Linux, с ограниченным доступом к папкам и файлам, включая не только редактирование, но и просмотр, а также возможность использовать только разрешенные утилиты. Предусматривается только локальный доступ, сетевого доступа нет.

Что бы не изобретать велосипед, первым делом начал копать интернет, в результате чего были найдены следующие варианты:

  • ограничения доступа через сетевые службы ssh, sftp (не подошло)
  • разграничение прав доступа самой операционной системой linux (не подошло, хотелось бы универсальное решение)
  • использование chroot (не подошло)
  • использование сторонних утилит, например SELinux (не подошло, усложняет систему).

В результате поиска, был найден встроенный механизм ограничения возможностей пользователя внутри оболочки bash, он называется Restricted Shell или rbash.

В нем реализованы следующие ограничения:

  • нет возможности смены каталога командой cd
  • нельзя сбрасывать или изменять значения переменных SHELL, PATH, ENV, BASH_ENV
  • запрещено указывать команды содержащие / (косую черту)
  • запрещено импортировать функции из основной оболочки
  • запрещено перенаправлять вывод с использованием операторов >, , >&, &>, >>
  • запрещено использовать команду exec для подмены команды и пр.

Есть минус, это безопасность, поэтому необходимо в обязательном порядке добавить alias на команды в файл поведения оболочки .bashrc (информация будет далее).

Конечно rbash из коробки, всех задач не решает, поэтому на примере рассмотрим создание пользователя и настройка его окружения для полного решения нашей задачи.

Далее все операции выполняются от суперпользователя (root).

1. Создаем ограниченную оболочку

2. Создаем пользователя

3. Изменяем права директории

4. Переходим в директорию и очищаем ее

5. Настраиваем оболочку и права

Файл .bashrc определяет поведение командной оболочки, в данный файл можно добавить alias для команд или дополнительные опции.

Для обеспечения безопасности выполните следующие команды:

Данный список можно продолжать…

6. Проверяем работу

7. Добавляем допустимые команды

Важно, пути в команде ln необходимо указывать полностью.

8. Для ограничения опций команды можно использовать обертки

9. Для работы с файлами и папками можно также создать обертку
с черным списком (разрешить все, кроме):
— создаем файл

blacklist — переменная содержащая черный список директорий или файлов (через пробел)
— добавляем команду для пользователя zuser

Данный скрипт разрешает выполнять команду ls с любыми ключами для каталогов и файлов не совпадающих с черным списком

с белым списком (запретить все, кроме):
— создаем файл

whitelist — переменная содержащая белый список директорий или файлов (через пробел)
— добавляем команду для пользователя zuser

Данный скрипт разрешает выполнять команду cat с указанными файлами в белом списке

Готово, в итоге получили следующий результат:

  • мы создали пользователя zuser с оболочкой rbash
  • отключили возможность использования автодополнения в консоли
  • zuser может запускать утилиты только из директории /home/zuser/bin
  • добавили пользователю zuser команду ping
  • добавили пользователю zuser собственную команду user-info
  • пользователю zuser ограничили через обертку выполнение команд ls и cat

Данный способ к сожалению не гарантирует 100% безопасность, и при определенных знаниях и квалификации пользователь может покинуть данную оболочку. Спасибо Jouretz arheops YaDr они в комментариях привели примеры обхода ограничений оболочки.

Источник

Ограничить пользователя в shell (терминал ssh) на просмотр конфигов и важных папок

Клиенту надо предоставить пользователя ssh, при этом это самый обычный пользователь без каких-либо привелегий, но при этом же если зайти в терминале ssh, то данный пользователь спокойно может передвигаться практически по всем папкам системы (в том числе и /etc/), просматривать файлы (в том числе и различные конфиги и т.д.) — что очень нехорошо.

В сети на подобные вопросы, где люди как-то хотят ограничить пользователей по ssh, очень часто можно увидеть подобные комментарии:

простите, но у вас активные галлюцинации.

иначе я это назвать не могу. Расскажите пожалуйта, что вы можете сделать на прямо настроеном сервере, обычным пользователем?

Не знаю к чему эти комментарии, но разве это нормально, когда обычный пользователь ssh, доступ к которому предоставлен клиенту, а клиент дал этот доступ одному, второму, третьему человеку, и каждый заходит, спокойно гуляет по системе, просматривает конфиги, тем самым знает: в passwd — в системе такие есть пользователи, group — в системе такие есть группы, видит в какой группе какие есть пользователи, видит все конфиги на все программы и т.д. — разве это нормально?

Вопрос, как можно ограничить обычного пользователя, чтобы он не мог по ssh (shell) видеть то, что ему видеть не надо, и нужно ли это вообще делать, т.к. почитав подобные комментарии думаю, может я чего-то не понимаю?

Источник

Information Security Squad

stay tune stay secure

🐧 Как ограничить доступ пользователя к системе Linux

Что такое ограниченная оболочка?

Во-первых, позвольте мне уточнить, что такое Restricted Shell.

Это не отдельная оболочка, такая как Bash, Korn Shell и т. д.

Если вы запустите любую существующую оболочку, используя опции «rbash», «–restricted», «-r», она станет оболочкой с ограничениями.

Например, оболочку Bourne можно запустить как ограниченную оболочку с помощью команды bsh -r, а оболочку Korn — с помощью команды ksh -r.

Ограниченная оболочка ограничит пользователей от выполнения большинства команд и от изменения текущего рабочего каталога.

Ограниченная оболочка налагает следующие ограничения на пользователей:

  • Она не позволит вам выполнить команду CD. Так что ты никуда не попадешь. Вы можете просто остаться в текущем рабочем каталоге.
  • Она не позволит вам изменять значения переменных среды $PATH, $SHELL, $BASH_ENV или $ENV.
  • Она не позволит вам выполнить программу, которая содержит символ / (косая черта). Например, вы не можете запустить команду /usr bin /uname или ./uname. Однако вы можете выполнить команду uname. Другими словами, вы можете запускать команды только в текущем пути.
  • Вы не можете перенаправить вывод при помощи операторов перенаправления ‘>’, ‘> |’, ‘<>’, ‘> &’, ‘&>’ и ‘>>’.
  • Она не позволит вам выйти из режима ограниченной оболочки в скриптах.
  • Она не позволит вам отключить режим ограниченной оболочки с помощью «set + r» или ‘set +o restricted’.

Как урезать доступ пользователя к системе Linux с помощью ограниченной оболочки

Сначала создайте символическую ссылку с именем rbash из Bash, как показано ниже.

Следующие команды должны быть запущены от имени пользователя root.

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

Создайте каталог bin внутри домашней папки нового пользователя.

Теперь нам нужно указать, какие команды может выполнять пользователь.

В нашем стендовом примере я собираюсь позволить пользователю запускать только команды «ls», «mkdir» и «ping».

Вы можете назначить любые команды на ваш выбор.

Для этого выполните следующие команды:

Теперь вы понимаете, почему мы создали каталог «bin» на предыдущем шаге.

Пользователи не могут запускать какие-либо команды, кроме указанных выше трех команд.

Далее, запретите пользователю изменять .bash_profile.

Нажмите клавишу ESC и введите: wq, чтобы сохранить и закрыть файл.

Теперь, когда пользователь войдет в систему, оболочка с ограничениями (rbash) будет работать как оболочка по умолчанию и читать файл .bash_profile, который установит для PATH значение $HOME/bin, чтобы пользователь мог запускать только команды ls, mkdir и команду ping.

Оболочка с ограничениями не позволит пользователю изменять PATH, а разрешения для .bash_profile не позволят пользователю изменять среду, чтобы обойти ограничения во время следующего сеанса входа.

Проверка Rbash

Теперь выйдите из системы от имени пользователя root и войдите в систему с вновь созданным пользователем, в нашем случае itsecforu.

Затем выполните несколько команд, чтобы проверить, работает ли все это или нет.

Например, я хочу очистить терминал.

Вы не можете использовать команду cd, чтобы перейти в другой каталог.

Кроме этих трех команд, пользователь не может ничего выполнять.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как в mac os изменить программы по умолчанию
  • Как в mac os изменить вид папки
  • Как в mac os закрыть зависшую программу
  • Как в mac os закрыть все окна
  • Как в mac os добавить сетевой диск