LINUX.ORG.RU

Информационная безопасность


0

1

Здравствуйте. Прошу прощения за сумбурность изложения. Вопрос по теме, в которой я практически не ориентируюсь.

Опишу ситуацию целиком: есть сервер (Debian), на котором установлена жутко дорогая (несколько десятков тысяч долларов) профессиональная программа. Лицензия предусматривает возможность одновременной работы с программой несколькими пользователями (однако установлена она может быть только на одной машине). Для работы с ней используются несколько терминалов (обычные десктопы на Debian). В настоящее время процесс организован следующим образом: пользователь с терминала коннектится к серверу по SSH (ssh -X, с проброской иксов) и, запуская на сервере программу, работает с её интерфейсом на своём компьютере. Загвоздка в том, что при таком подходе пользователь получает возможность скопировать и унести всю программу, что с некоторых пор стало крайне нежелательным. Есть ли способ ограничить доступ к файлам программы, не препятствуя её выполнению (звучит абсурдно, но помню, что видел системы с Syslinux, на которых скрыт /usr/). Либо стоит подумать об изменению инфраструктуры целиком (на пример, использовать VNC вместо SSH)? При этом пользователь всё равно не должен иметь доступа к файлам программы (среди которых, в частности, файл лицензии), должен иметь возможность запускать программу и работать с ней, а также неограниченно использовать результат работы программы (обычные файлы): копировать на внешние носители, подключённые к терминалу и т.п (раньше это решалось посредством NFS/sshfs).

Истории успеха о создании систем со схожими задачами приветствуются. Ключевые слова и названия технологий для гугления --- тоже.

Ответ на: комментарий от sin_a

У программы, кроме бинарников, есть куча файлов с ресурсами + license файл (представляющий интерес для похитителей сам по себе). Запрет на чтения бинарников кардинально не изменить ситуацию, а просто так запретить чтение файлов ресурсов, очевидно, нельзя.

prozium ★★ ()
Ответ на: комментарий от sin_a

Т.е. с бинарниками так можно сделать, а файлы с данными нужно защитить другим путём. Кто работал с Syslinux: есть ли там возможность ограничить чтение каталога для всех, кроме определённой определённых программ?

prozium ★★ ()

программа изначально криво написана. по-хорошему у неё должна быть серверная часть, скрытая от клиента (установлена на сервер. и никто её не копирует никуда), и клиентская часть, которая соединяется с сервером - её можно домой хоть уносить, хоть не уносить - она бесполезна сама по себе без сервера ;)

вот как надо... а в текущей конфигурации, я думаю, то, что вы хотите - попросту невозможно. Разве что если возможно самому написать клиентскую часть...

это очень странно, что используется ssh -X (видимо, разработчики пошли по-лёгкому пути), а веб-интерфейса у этой программы нет? :) это был бы идеальный вариант...

BattleCoder ★★★★★ ()
Ответ на: комментарий от Komintern

через sudo/suid может как-то и можно... да... но это выглядит костыльно =)

не уверен, что это правильный способ.

BattleCoder ★★★★★ ()
Ответ на: комментарий от BattleCoder

программа изначально криво написана

Она вообще изначально не очень рассчитана на то, что используют её не с того компьютера, на который она установлена. По хорошему, это даже не программа, а монструозный программный комплекс и десятков различных утилит (большей частью с command line интерфейсом) и оболочки к ним.

а веб-интерфейса у этой программы нет

Нет, и едва ли это хоть кому-то нужно. Там жутко мудрёный перегруженный интерфейс, больше количество графики и т.п.: и всех это устраивает (под «всеми» имеется ввиду от силы пара сотен юзеров по миру).

используется ssh -X (видимо, разработчики пошли по-лёгкому пути

По этому пути пошли админы, которые когда-то настраивали терминалку/сервер под эту программу.

prozium ★★ ()

Как вариант:

Юзерам, допущенным к программе (группа megaprog), прописать в качестве шелла скрипт, запускающий программу (скрипт кладется в /usr/local/bin).

Всем остальным доступ к файлам отрубить (chgrp megaprog /var/lib/megaprog; chmod 770 /var/lib/megaprog).

Результат работы сохранять в /home/$USER, доступный извне по samba. (rsync и sshfs при таком шелле работать уже вроде как не будут).

Ещё как вариант: файлы программы доступны только группе megaprog, юзеры в этой группе НЕ состоят, программа сетгидная. Соответственно по факту запуска она в явочном порядке получает доступ к собственным файлам, а все что угодно, запущенное из-под самого юзера, - сосет лапу.

lodin ★★★★ ()
Ответ на: комментарий от prozium

У программы, кроме бинарников, есть куча файлов с ресурсами

750 и запускать от имени другого пользователя, включённого в группу, самих пользователей в группу не включать. Запуск осуществлять через sudo, разрешив пользователям одну команду без пароля. Для удобства пользователей, обернуть запуск скриптом из одной строчки на sh.

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

sin_a ★★★★★ ()
Ответ на: комментарий от lodin

в качестве шелла скрипт, запускающий программу (скрипт кладется в /usr/local/bin).

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

Ещё как вариант: файлы программы доступны только группе megaprog, юзеры в этой группе НЕ состоят, программа сетгидная.

Может быть лучше всего.

sin_a ★★★★★ ()
Ответ на: комментарий от lodin

юзеры в этой группе НЕ состоят

Да, я склоняюсь к этому варианту. Но есть одна заминка: файлы с результатами работы программы (складываемые в каталог пользователя) будут принадлежать группе megaprog, а юзер должен иметь возможность с ними беспрепятственно работать (об этом также уже упомянул sin_a).

prozium ★★ ()
Ответ на: комментарий от prozium

Так юзер будет владельцем файлов, какая группа при таком раскладе уже все равно.

Или имеется в виду, что юзеры должны между собой файлами обмениваться? Тогда да, надо на файлы группу общую для юзеров и этот вариант не проходит.

lodin ★★★★ ()
Ответ на: комментарий от lodin

Так юзер будет владельцем файлов

Прошу прощения, я неправильно прочитал ваше первоначальное сообщение там, где говорилось про sgid (показалось, что вы, как кто-то выше, предлагаете использовать suid).

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

В общем, спасибо.

prozium ★★ ()

Из права на исполнение вовсе не следует право на чтение. А вообще, где так уж важна безопасность, без SElinux не обойтись.

segfault ★★★★★ ()

честно сказать -я не понял зачем вам вообще ssh -X? Используйте XDMCP и пропишите что сразу пускается эта программ - и ничего больше - то есть типа как Citrix Apps работает, точнее наоборот - Цитрикс эту идею слизал с XDMCP. по ssh -X - тоже можно , даже в свойства соединения можно забить чтобы пускалась толкьо определённая пррграмма ун либо с sheel играться.

mumpster ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.