LINUX.ORG.RU

Как изолироваться от сервера и его владельца?


0

2

Исходные условия задачи:
1) программка (будет работать в сети);
2) арендуемый сервер (считается заведомо скомпрометированным);
3) финансовые средства для решения не то чтобы не ограничены, но имеются.

Задачка из разряда промышленного шпионажа. Если спецслужбам взбредет в голову посмотреть - препятствовать не будем. Предполагается, что арендуемый сервер (что-то из Linux, скорее всего CentOS) может нести шпионское ПО. Переустановить систему на сервере нельзя, в списке услуг не значится (думаю это и не решит). Искать это ПО наверное бесполезно, тем более если его там нет (такое тоже может быть).
Необходимо обеспечить какой-нибудь (лучше хороший) уровень «безопасности» в плане: пусть программка поработает некоторое время (год-два например) не став при этом добычей конкурентов.

Мысль была такая. Изолироваться от хостовой машины виртуалкой (какой пока не важно). А критичную файловую систему в гостевой закриптовать (знаю что их вроде как легко монтировать). Подготовить гостевую систему «у себя дома», залить и эксплуатировать. Потери производительности не критичны, можно взять сервер помощнее.

Вопрос обмена информацией программы «с сетью» не рассматривается.

Такая схема с виртуалкой имеет хоть какой-то уровень надежности? Или туда можно легко сунуть грязные шпионские руки, и нет смысла заморачиваться?

★★★

Последнее исправление: valich (всего исправлений: 1)

Порылся в разделе, есть отчасти похожие задачи, но ничего полезного не нашел.

valich ★★★
() автор топика

> Такая схема с виртуалкой имеет хоть какой-то уровень надежности?

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

val-amart ★★★★★
()

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

Что касается «чего посоветовать», то все определяется экономической выгодой для злоумышленника. Нужно просто поставить достаточно преград, чтобы это было слишком дорого для экономической оправданности взлома.

Виртуальная машина, с шифрацией виртуального диска, хорошая преграда. Стоимость специалиста, который мог бы заняться анализом уязвимости — от 5000$/мес.

Ключ от раздела только надо хранить вне сервера и передавать его только по защищенному соединению.

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

В виртуальной системе не забыть в ядре randomization heap сделать (по умолчанию обычно включено). Это усложнит анализ памяти сторонними программами.

Защиту можно наращивать бесконечно, вопрос в целесообразности.

soomrack ★★★★
()
Ответ на: комментарий от val-amart

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

Эту задачу в общем плане решили. Усложнения анализа будет вполне достаточно.

Своим железом обзавестись проблематичней и не только по финансовым причинам.

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

> Защиту можно наращивать бесконечно, вопрос в целесообразности.

Золотые слова. Хотелось бы найти относительно дешевое и относительно эффективное решение. Проект не настолько серьезен чтобы вкладываться в его защиту. Но и потерять на ровном месте не хочется.

Я предполагаю (исходя из моего уровня дилетантства) что виртуалка до определенной степени должна скрыть активность внутри гостевой системы от «простых» наблюдателей. Ну и криптозащита по идее не позволит внаглую забрать саму программу.

valich ★★★
() автор топика
Ответ на: комментарий от val-amart

> если кто-то будет этим заниматься целенаправленно, никаких проблем с обходом такой «защиты» не возникнет

Здесь я надеюсь на «цену вопроса».

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

> Я предполагаю (исходя из моего уровня дилетантства) что виртуалка до определенной степени должна скрыть активность внутри гостевой системы от «простых» наблюдателей. Ну и криптозащита по идее не позволит внаглую забрать саму программу.

Внаглую — да, не позволит, если не вляпаться в какой-нибудь общеизвестный баг.

Активность в принципе не скрыть, можно сделать фейковую, но наличие не скрыть.

Виртуалка с шифрованием диска — хорошая защита, если будет использоваться не dmcrypt, то убедитесь, что данные никогда не светятся в оперативной памяти в открытом виде.

soomrack ★★★★
()

Инфицируешь любой демон своей программой.
Не вызываешь подозрений своими параноидными методами.

anonymous
()
Ответ на: комментарий от valich

> Здесь я надеюсь на «цену вопроса».

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

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

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

val-amart ★★★★★
()

Надо полностью в ядре дизаблить CAP_DAC_OVERRIDE и CAP_DAC_SEARCH. Тогда просто закроешься файловыми разрешениями.

anonymous
()
Ответ на: комментарий от valich

у тебя все оперативка на виду. и приаттачить дебаггер к твоей виртуалке тоже не вопрос, если даже надо будет что-то потрейсить.

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

>У тебя все оперативка на виду. и приаттачить дебаггер к твоей >виртуалке тоже не вопрос

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

В код стоит подложить собаку, например: проверку от даты компилирования кода, даты задать в нескольких местах разными способами. Проверка начинает срабатывать через икс дней с некоторой вероятностью от 0%, с повышением вероятности с каждым последующим днем. И пусть эта проверка вызывает разные сбои (какой выпадет по вероятности). Главное оформить эти вероятности не в одной функции (то бы не отключили в дебагере) а на каждую, и вызов вероятностей напихивать в разных местах.
А если еще и сбои прикольно оформлять то будет еще интереснее - крякеры любят такие фишки.

PS: Включайте фантазию и вперед…

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

Отлично. Вопрос в том, сколько времени на это уйдет, и является ли это в результате экономически целесообразным? на этот вопрос никто кроме топикстартера не ответит, конечно. И все равно, я бы искал другие, более принципиальные способы решения проблемы. Кстати, ТС, а банального ДоСа ты не боишься? Является ли работа приложения критичной, или только данны?

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

> Кстати, ТС, а банального ДоСа ты не боишься?

Не очень наверное. Меры со стороны хозяев, и наши собственные.

Является ли работа приложения критичной, или только данны?


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

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

> Какой смысл так сильно защищать проект, который не может окупить 100$/мес. хостинга на СВОЕМ сервере?

Что вы имеете ввиду под своим сервером? И цену довольно странную указали.
Для проекта в целом арендуется (пока) три сервера, с различными дополнениями, например немаленький список IP-адресов... И прочими вкусностями :)
Один из серверов несет 85% бизнес-логики. И цены на поддержание проекта будут видимо приличные...

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

> ...Предполагается, что арендуемый сервер (что-то из Linux, скорее всего CentOS) может нести шпионское ПО...

Я было подумал, что вы арендуете место на сервере. Если же вы арендуете целый сервер, то почему там не поставить систему силами своих специалистов? Тогда надобность в виртуальной машине отпадет. И вообще виртуальная машина для проекта, размещенного на трех арендуемых серверах выглядит как-то странно.

PS: за цену, которую я привел можно разместить сервер на площадках некоторых хостеров. Сервер можно либо арендовать у товарищей, либо собрать из хлама имеющегося у каждого айтишника, либо купить за копейки на интернет-барахолках (старье часто даром отдают). Это нормальный вариант для стартапов без начальных денежных вложений. Но учитывая ваш последний комментарий, это, к счастью, не ваш случай.

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

> Если же вы арендуете целый сервер, то почему там не поставить систему силами своих специалистов?

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

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

Мне по работе пришлось копаться в последовательных асинхронных процессах.
По ходу зацепил статейку - Защита программ с помощью сетей Петри
http://www.wasm.ru/article.php?article=petri

Интересно, на сколько реально отследить в дебагере выход программы?
Автор несколько просто рассуждает к подходу снятия защиты! Ведь в точках выхода, можно вставить переход на свой код, в котором вести в лог файл все точки вываливания программы. Даже в перехватчики сигналов для случаев x=a/z где z=0, можно довольно быстро все выловить...
Поэтому просто так выходить не интересно, интересно начать глючить, причем не сразу. Осталось придумать как глючить, так чтобы пользователь с очередным глюком, послал все к чертям.

В конце есть хорошо звучащая мысль...


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