Re[9]: Что нужно для размещения программы на удаленном серве
От: gyraboo  
Дата: 27.03.21 10:46
Оценка: 4 (1) +1
Здравствуйте, Passerby, Вы писали:

G>>У тебя есть возможность подготавливать специальную сборку программы для сервера?

G>>На каком языке и ГУИ-фреймворке вообще она написана?
P>Это моя программа. Написал для себя на С шарпе. ГУИ никакого нет, только консоль и вывод в файлы. ГУИ планировал сделать в дальнейшем, не особенно важно.

К сожалению на Си Шарпе сломать будет легко, т.к. это байт код выполняемый в дотнет машине. И Энигмой не защитишь.
Если это прям тебе важно, лучше перепиши на компилируемом языке, типа C++ или Free Pascal, а потом защити бинарник вирт.машиной энигмы.
Re: Что нужно для размещения программы на удаленном сервере?
От: vsb Казахстан  
Дата: 24.03.21 18:38
Оценка: 2 (1) +1
Здравствуйте, Passerby, Вы писали:

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


Вряд ли. Шифрование диска с вводом пароля при загрузке это самая разумная мера. Ещё посоветую пользоваться крупным хостингом вроде Microsoft, Google, Amazon, у них с безопасностью всё в порядке и кто попало точно не будет смотреть на вашу программу.

P>Можно ли скрыть от персонала, обслуживающего сервер, результаты программы, которые выводятся на монитор.


Не нужно ничего выводить на монитор. Программа должна быть консольной и работать под Linux.
Отредактировано 24.03.2021 18:39 vsb . Предыдущая версия .
Re[3]: Что нужно для размещения программы на удаленном серве
От: gyraboo  
Дата: 27.03.21 08:35
Оценка: 4 (1)
Здравствуйте, Passerby, Вы писали:

P>Здравствуйте, vsb, Вы писали:

vsb>>Не нужно ничего выводить на монитор. Программа должна быть консольной и работать под Linux.
P>Программа написана под Win. Могу попробовать перекомпилировать под Linux. Сейчас результат программы выводится на монитор. Я не знаю, виден ли этот результат при удаленном подключении на сервере. Если виден, то вывод на монитор буду отключать, а результат работы программы сохранять в файл. При этом тоже неясно, можно ли этот файл открывать на сервере или в этом случае его содержимое сразу будет видно? Т.е. необходимо ли файл скачивать, а уже потом открывать?

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

Использовать симметричное шифрование не стоит. т.к. если программу взоломают и узнают симметричный ключ, которым ты шифруешь, то им же и расшифруют все твои файлы, которые я кстати знаю что содержат:
  спойлер
не знаю))


P.S. Также помни о том, что нужно максимально сужать окно уязвимости, т.е. когда твоя прога генерирует в ОЗУ результаты и записывает их в зашифрованный файл, нужно минимизировать время нахождения этой инфы в памяти, т.к. иначе дамп ОЗУ все твои данные "рассекретит" и без доступа злодеев к ключу. И ещё вариант доп.защиты — используй систему типа Enigma Protector, которая может погрузить твою программу в защищенную виртуальную машину, но это коммерческий продукт, его надо покупать, хотя вроде триал есть.
Отредактировано 27.03.2021 8:46 gyraboo . Предыдущая версия . Еще …
Отредактировано 27.03.2021 8:45 gyraboo . Предыдущая версия .
Отредактировано 27.03.2021 8:44 gyraboo . Предыдущая версия .
Re[3]: Что нужно для размещения программы на удаленном сервере?
От: vsb Казахстан  
Дата: 24.03.21 19:03
Оценка: 2 (1)
Здравствуйте, Passerby, Вы писали:

vsb>>Не нужно ничего выводить на монитор. Программа должна быть консольной и работать под Linux.

P>Программа написана под Win. Могу попробовать перекомпилировать под Linux. Сейчас результат программы выводится на монитор. Я не знаю, виден ли этот результат при удаленном подключении на сервере. Если виден, то вывод на монитор буду отключать, а результат работы программы сохранять в файл. При этом тоже неясно, можно ли этот файл открывать на сервере или в этом случае его содержимое сразу будет видно? Т.е. необходимо ли файл скачивать, а уже потом открывать?

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

Если диск зашифрован, то в файлы можно сохранять, всё будет зашифровано. Про "открывать/скачивать" я не очень понял, о чём речь. Но если сомневаетесь, лучше сначала скачайте (по безопасному зашифрованному протоколу, например SFTP). Если использовать только консольный интерфейс, то с сервером вы будете работать через SSH, там всё зашифровано как положено и только вы будете видеть то, что там передаётся. Если вы используете графический интерфейс, тут уже есть нюансы. Первый вариант это когда виртуальная машина выводит изображение на виртуальную видеокарту, а это изображение обычно по протоколу VNC передаётся от вашего хостера к вам. В этом случае хостер очевидно имеет полный доступ к этому изображению. Второй вариант это когда ваша операционная система кодирует и шифрует изображение перед тем, как отправлять его вам. В Windows это обычно через RDP делается. Я тут не специалист, как оно там шифруется, надёжно ли. Но теоретически это должно быть достаточно надёжно и никто это не должен увидеть. Хотя я обычно не встречал ситуаций, когда люди выставляют RDP в интернет, тут в общем лучше Windows-специалистов послушать.
Re[5]: Что нужно для размещения программы на удаленном сервере?
От: vsb Казахстан  
Дата: 24.03.21 20:08
Оценка: 2 (1)
Здравствуйте, Passerby, Вы писали:

vsb>> Программа должна быть консольной и работать под Linux.

P>А под Win лучше не работать? В Windows сейчас тоже есть SFTP https://winitpro.ru/index.php/2016/03/31/sftp-ssh-ftp-na-windows-server-2012-r2/
P>Или в Linux что-то еще есть более хорошее чем в Windows в плане безопасности?

Лично я бы предпочёл Linux в минимальной установке просто потому, что он проще. Меньше "движущихся частей" — меньше проблем. Но в целом существенной разницы, наверное, нет. Я, правда, не знаю, как установить Windows так, чтобы всё шифровалось, включая саму Windows, кроме какого-то минимально-необходимого для загрузки куска, но, наверное, можно так сделать. Используйте то, что лучше знаете.

vsb>>Второй вариант это когда ваша операционная система кодирует и шифрует изображение перед тем, как отправлять его вам. В Windows это обычно через RDP делается. Я тут не специалист, как оно там шифруется, надёжно ли. Но теоретически это должно быть достаточно надёжно и никто это не должен увидеть. Хотя я обычно не встречал ситуаций, когда люди выставляют RDP в интернет, тут в общем лучше Windows-специалистов послушать.


P>Т.е. если при использовать RPD, картинка на мониторе сервера не отображается?


Не знаю точно, что там у Windows. Вроде как там есть нюансы. Например если заходишь через RDP с ключом /admin, то попадаешь в "основную" сессию и на подключённом (виртуальном) мониторе всё дублируется, что у тебя показывается, а если без этого ключа, то будет отдельная сессия. Наверное лучше как-то это проверить.

P>Вероятно, что легче снять дамп памяти, чем что-то расшифровывать.


Против снятия дампа памяти защищаться почти невозможно. Но снять его и что-то понять в нём не так просто. Поэтому остаётся только надеяться, что никто этим заниматься не будет.
Re[7]: Что нужно для размещения программы на удаленном сервере?
От: vsb Казахстан  
Дата: 24.03.21 21:09
Оценка: 2 (1)
Здравствуйте, Passerby, Вы писали:

vsb>>Я, правда, не знаю, как установить Windows так, чтобы всё шифровалось, включая саму Windows, кроме какого-то минимально-необходимого для загрузки куска, но, наверное, можно так сделать.


P>А если Линукс, то можно зашифровать не только диск с данными или файлы, но и сам Линукс?


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

Конечно с точки зрения безопасности тут везде можно дыры найти: и ядро ОС можно подменить и ввод пароля можно перехватить. Но с точки зрения соотношений усилия/результат, по-мне, это вполне эффективно.
Re[3]: Что нужно для размещения программы на удаленном сервере?
От: L.K. Марс  
Дата: 27.03.21 10:20
Оценка: 2 (1)
LK>>Единственная возможность — это поставить в ЦОД свой физический сервер (colocation).
LK>>Всё остальное ("облачная инфраструктура") находится во власти хостера, он может зайти на любой сервер под рутом.
P>И шифрование диска не спасет?

А как сервер загрузится с зашифрованного диска? Кто и как введёт ключ расшифровки? Если ключ введёт пользователь в консоли ssh, то его может перехватить хостер.

Т.е. тут вся надежда либо на маловажность данных на сервере (в случае кражи особого ущерба не будет), либо на честность хостера (на то, что хостер не будет красть ценные данные из-за репутационных потерь).
Re[11]: Что нужно для размещения программы на удаленном серве
От: gyraboo  
Дата: 27.03.21 11:20
Оценка: 2 (1)
Здравствуйте, Passerby, Вы писали:

P>А как взломают, если она ее поместить на шифрованном диске? Или ты имеешь в виду дамп памяти?


Да, в памяти-то ты не шифруешь эти данные? А даже если шифруешь, то ключ шифрования тоже хранится в памяти, значит надо его прятать, в общем одно тянет за другое и в итоге получается только гемор, поэтому нужно исправить саму архитектуру программы, сеситивные данные хранить в защищеной вирт.машине энигмы, вынеся в dll секретный метод как и говоришь.
Re[11]: Что нужно для размещения программы на удаленном серве
От: gyraboo  
Дата: 30.03.21 18:29
Оценка: 2 (1)
Здравствуйте, Passerby, Вы писали:

P>А Энигма сможет защитить ключи, т.е. константные строки?


Да, если они будут в бинарно скомпилированной DLL, в этом случае этот код будет выполняться в защищенной вирт.машине (хотя я вот видел что в энигме появилась какая-то защита дот-нет байт-кода, но у меня доверия к этому пока мало).
И напомню, что лучше также дополнительно усилить защиту "математикой", т.е. не использовать для шифрования симметричный ключ, т.к. при доступе к нему злоумышленник сможет им же и расшифровать твой файл. Размещать в публичной DLL нужно публичный ключ ассиметричной пары, а расшифровывать уже приватным ключом на приватном компьютере. Если конечно бизнес-логика это подразумевает. Если же расшифровкой тоже должна заниматься та же программа на том же публичном сервере, то приватный ключ нужно тоже размещать в защищённой DLL. Использование приватного ключа, пусть и в публичном блоке программы, всё равно немного затрудняет взлом, чем симметричный ключ, имхо.
Re[2]: Что нужно для размещения программы на удаленном сервере?
От: Passerby  
Дата: 26.03.21 21:33
Оценка: -1
Здравствуйте, wildwind, Вы писали:
W>Сервер обычный или виртуальный (VPS)? У него монитор хоть есть?
Откуда же я знаю? Про какой монитор спрашиваешь? Просмотрел несколько предложений, нигде про мониторы не говорится. Мне нужен быстрый сервер с быстрым интернетом. И чтобы нельзя было посмотреть программу и секретные ключи в ней. Консольная программа сейчас работает под Win 10 на моем ПК, на диске занимает 2.4 мб, диспетчер показывает оперативную память 24 мб, загрузка i5 7500 процессора 2%, но скоро подключу еще модули и загрузка возрастет, думаю раза в 2 или 3.
Какой выбрать сервер: VPS, VDS или дедик? Какую выбрать ОС: Debian, Ubuntu, Xubuntu, CentOS, FreeBSD? Какая из них защищенней? Какую программу потом установить для шифрования диска? Что сделать, чтобы я мог на своем ПК смотреть результат на консоли, а на сервере это смотреть не было возможности? Если такое нельзя, удалю вывод на консоль и оставлю вывод в файл, который надо будет скачивать. У меня нет никакого опыта, даже малого работы с сервером.
Что нужно для размещения программы на удаленном сервере?
От: Passerby  
Дата: 24.03.21 12:32
Оценка:
Никогда не пользовался удаленным сервером, а сейчас необходимо разместить на сервере программу. Программа имеет доступ по секретным ключам к деньгам поэтому должна быть ее защита от обслуживающего персонала. Есть ли методы защиты кроме шифрования диска. Можно ли скрыть от персонала, обслуживающего сервер, результаты программы, которые выводятся на монитор.
Отредактировано 24.03.2021 17:20 Passerby . Предыдущая версия .
Re[2]: Что нужно для размещения программы на удаленном сервере?
От: Passerby  
Дата: 24.03.21 18:52
Оценка:
Здравствуйте, vsb, Вы писали:
vsb>Не нужно ничего выводить на монитор. Программа должна быть консольной и работать под Linux.
Программа написана под Win. Могу попробовать перекомпилировать под Linux. Сейчас результат программы выводится на монитор. Я не знаю, виден ли этот результат при удаленном подключении на сервере. Если виден, то вывод на монитор буду отключать, а результат работы программы сохранять в файл. При этом тоже неясно, можно ли этот файл открывать на сервере или в этом случае его содержимое сразу будет видно? Т.е. необходимо ли файл скачивать, а уже потом открывать?
Re[4]: Что нужно для размещения программы на удаленном сервере?
От: Passerby  
Дата: 24.03.21 19:51
Оценка:
Здравствуйте, vsb, Вы писали:
vsb> Программа должна быть консольной и работать под Linux.
А под Win лучше не работать? В Windows сейчас тоже есть SFTP https://winitpro.ru/index.php/2016/03/31/sftp-ssh-ftp-na-windows-server-2012-r2/
Или в Linux что-то еще есть более хорошее чем в Windows в плане безопасности?

vsb>Второй вариант это когда ваша операционная система кодирует и шифрует изображение перед тем, как отправлять его вам. В Windows это обычно через RDP делается. Я тут не специалист, как оно там шифруется, надёжно ли. Но теоретически это должно быть достаточно надёжно и никто это не должен увидеть. Хотя я обычно не встречал ситуаций, когда люди выставляют RDP в интернет, тут в общем лучше Windows-специалистов послушать.


Т.е. если при использовать RPD, картинка на мониторе сервера не отображается? Вероятно, что легче снять дамп памяти, чем что-то расшифровывать.
Re[6]: Что нужно для размещения программы на удаленном сервере?
От: Passerby  
Дата: 24.03.21 20:26
Оценка:
Здравствуйте, vsb, Вы писали:
vsb>Я, правда, не знаю, как установить Windows так, чтобы всё шифровалось, включая саму Windows, кроме какого-то минимально-необходимого для загрузки куска, но, наверное, можно так сделать. А если Линукс, то можно зашифровать не только диск с данными или файлы, но и сам Линукс?
Re[8]: Что нужно для размещения программы на удаленном сервере?
От: Passerby  
Дата: 24.03.21 22:07
Оценка:
Здравствуйте, vsb, Вы писали:
vsb>Да, незашифрованным остаётся маленький раздел с ядром ОС. При загрузке надо ввести пароль, с помощью которого расшифровывается раздел с остальными файлами операционной системы (ну и все прочие разделы). Может быть можно и лучше зашифровать, но такой способ доступен прям из инсталлятора, мне его хватало.
Прочел, что Виндоус тоже шифруется https://trashexpert.ru/software/security/kak-zashifrovat-fajly-papki-i-diski-na-windows-10/
Re: Что нужно для размещения программы на удаленном сервере?
От: wildwind Россия  
Дата: 25.03.21 13:05
Оценка:
Здравствуйте, Passerby, Вы писали:

P>Никогда не пользовался удаленным сервером, а сейчас необходимо разместить на сервере программу. Программа имеет доступ по секретным ключам к деньгам поэтому должна быть ее защита от обслуживающего персонала. Есть ли методы защиты кроме шифрования диска. Можно ли скрыть от персонала, обслуживающего сервер, результаты программы, которые выводятся на монитор.


Сервер обычный или виртуальный (VPS)? У него монитор хоть есть?
Re: Что нужно для размещения программы на удаленном сервере?
От: L.K. Марс  
Дата: 27.03.21 03:32
Оценка:
P>должна быть ее защита от обслуживающего персонала

Единственная возможность — это поставить в ЦОД свой физический сервер (colocation).

Всё остальное ("облачная инфраструктура") находится во власти хостера, он может зайти на любой сервер под рутом.
Re[2]: Что нужно для размещения программы на удаленном сервере?
От: Passerby  
Дата: 27.03.21 06:44
Оценка:
Здравствуйте, L.K., Вы писали:

P>>должна быть ее защита от обслуживающего персонала


LK>Единственная возможность — это поставить в ЦОД свой физический сервер (colocation).


LK>Всё остальное ("облачная инфраструктура") находится во власти хостера, он может зайти на любой сервер под рутом.

И шифрование диска не спасет?
Re: Что нужно для размещения программы на удаленном сервере?
От: Miroff Россия  
Дата: 27.03.21 07:59
Оценка:
Здравствуйте, Passerby, Вы писали:

P>Никогда не пользовался удаленным сервером, а сейчас необходимо разместить на сервере программу. Программа имеет доступ по секретным ключам к деньгам поэтому должна быть ее защита от обслуживающего персонала. Есть ли методы защиты кроме шифрования диска. Можно ли скрыть от персонала, обслуживающего сервер, результаты программы, которые выводятся на монитор.


С таким уровнем понимания ИБ, боюсь, что ничего вы не защитите

Общепринятый подход для работы с секретными ключами на сервере это хранить их зашифрованными и расшифровывать при запуске программы вводя ключ вручную, в консоли. Так чтобы расшифрованный ключ находился только в оперативной памяти. И там есть куча ньюансов, незнание которых сильно снижает безопасность.
Re[2]: Что нужно для размещения программы на удаленном сервере?
От: Passerby  
Дата: 27.03.21 08:27
Оценка:
Здравствуйте, Miroff, Вы писали:
M>И там есть куча ньюансов, незнание которых сильно снижает безопасность.
А почему ключи нельзя просто хранить на зашифрованном диске?
Re[3]: Что нужно для размещения программы на удаленном серве
От: gyraboo  
Дата: 27.03.21 08:38
Оценка:
Здравствуйте, Passerby, Вы писали:

M>>И там есть куча ньюансов, незнание которых сильно снижает безопасность.

P>А почему ключи нельзя просто хранить на зашифрованном диске?

Если речь о симметричном ключе, которым и шифруют и дешифруют, то его нельзя хранить в чужой инфраструктуре, даже если она сама "зашифрована", есть базовый принцип "не доверяй чужой инфраструктуре". Спасёт здесь замена симметричного ключа ассиметричной парой — шифруешь публичным ключом, который может находится в чужой инфраструктуре, а расшифровываешь приватным, который есть только у тебя (в идеале на машине, отключенной от интернета).
Отредактировано 27.03.2021 8:41 gyraboo . Предыдущая версия .
Re[4]: Что нужно для размещения программы на удаленном серве
От: Passerby  
Дата: 27.03.21 09:42
Оценка:
На монитор можно выводить консольной программы? Как сделать, чтобы эти данные не были видны на мониторе сервера?
Re[5]: Что нужно для размещения программы на удаленном серве
От: gyraboo  
Дата: 27.03.21 09:46
Оценка:
Здравствуйте, Passerby, Вы писали:

P>На монитор можно выводить консольной программы? Как сделать, чтобы эти данные не были видны на мониторе сервера?


Я бы не стал, ни в консоль ни на монитор, т.к. это чужая инфраструктура, ты не знаешь, как она работает и как сконфигурирована.
Просто совсем убери вывод в видеопамять и весь вывод в потоки std и err. Если программа у тебя должна работать на каких-то компьютерах с выводом, а на каких-то — без, то лучше отключать это условной компиляцией, чтобы код вывода вообще не попал в исполняемый файл, даже в виде false-ветки кода.

Для защиты от дампа ОЗУ — погрузить в защищенную вирт.машину типа Enigma. Все окна уязвимостей снизить до минимума (сгенерировал сенситивные данные, зашифровал, оригинал сразу удали, явно затерев нулями). Если в программе есть сборщик мусора, то с сенситивными данными работать так, чтобы они удалялись сразу после использования, а не отдавать их очистку на откуп GC.

А вообще просто поставь себя на места взломщика — как бы он ломал твою программу?
Отредактировано 27.03.2021 10:12 gyraboo . Предыдущая версия . Еще …
Отредактировано 27.03.2021 9:47 gyraboo . Предыдущая версия .
Re[6]: Что нужно для размещения программы на удаленном серве
От: Passerby  
Дата: 27.03.21 10:23
Оценка:
Могу сделать такой вывод, значение которого буду понимать только я. В таком случае, как отключить вывод на монитор на сервере?
Re[7]: Что нужно для размещения программы на удаленном серве
От: gyraboo  
Дата: 27.03.21 10:34
Оценка:
Здравствуйте, Passerby, Вы писали:

P>Могу сделать такой вывод, значение которого буду понимать только я. В таком случае, как отключить вывод на монитор на сервере?


Не понял насчет фразы про "вывод".
У тебя есть возможность подготавливать специальную сборку программы для сервера?
На каком языке и ГУИ-фреймворке вообще она написана?
Re[7]: Что нужно для размещения программы на удаленном серве
От: Dimatec  
Дата: 27.03.21 10:40
Оценка:
Здравствуйте, Passerby, Вы писали:

P>Могу сделать такой вывод, значение которого буду понимать только я. В таком случае, как отключить вывод на монитор на сервере?


Сделай тогда прогу как сервис(служба). Можешь из нее сервер сделать и с помощью SSL подключаться за получением результатов.
Re[8]: Что нужно для размещения программы на удаленном серве
От: Passerby  
Дата: 27.03.21 10:43
Оценка:
G>У тебя есть возможность подготавливать специальную сборку программы для сервера?
G>На каком языке и ГУИ-фреймворке вообще она написана?
Это моя программа. Написал для себя на С шарпе. ГУИ никакого нет, только консоль и вывод в файлы. ГУИ планировал сделать в дальнейшем, не особенно важно.
Re[10]: Что нужно для размещения программы на удаленном серве
От: Passerby  
Дата: 27.03.21 10:50
Оценка:
А как взломают, если она ее поместить на шифрованном диске? Или ты имеешь в виду дамп памяти?
Re[11]: Что нужно для размещения программы на удаленном серве
От: gyraboo  
Дата: 27.03.21 10:55
Оценка:
Здравствуйте, Passerby, Вы писали:

P>А как взломают, если она ее поместить на шифрованном диске? Или ты имеешь в виду дамп памяти?


Вариантов масса, тут ключевой фактор то, что это чужая инфраструктура, а не твоя, и контролируешь её не ты.
Могут например сделать дамп ОЗУ, тогда шифрование диска смысла вообще не имеет.
Могут перехватить нажатия клавиш пароля, который ты вводишь. Если ты вводишь пароль вирт.клавиатурой, то могут тупо подсмотреть экран.
И т.д. и т.п. И всё проистекает из того, что это чужая инфраструктура.
Re[12]: Что нужно для размещения программы на удаленном серве
От: Passerby  
Дата: 27.03.21 11:03
Оценка:
Никаких паролей вводить не буду. Есть только два длинных ключа от главного сервера, которые планирую защитить одним из 2 вариантов:
!. Зашифровать у себя на компе, а когда прога на сервере запустится, она скачает эти зашифрованные ключи, распакует их и начнет работу.
2. Зашифровать их и поместить в отдельный файл, в начале работы программа расшифровывает их и удаляет файл.
Что касается перекомпиляции в С++, возможно, сделаю для основного секретного метода.
Re[13]: Что нужно для размещения программы на удаленном серве
От: gyraboo  
Дата: 27.03.21 11:14
Оценка:
Здравствуйте, Passerby, Вы писали:

P>Никаких паролей вводить не буду. Есть только два длинных ключа от главного сервера, которые планирую защитить одним из 2 вариантов:

P>!. Зашифровать у себя на компе, а когда прога на сервере запустится, она скачает эти зашифрованные ключи, распакует их и начнет работу.
P>2. Зашифровать их и поместить в отдельный файл, в начале работы программа расшифровывает их и удаляет файл.
P>Что касается перекомпиляции в С++, возможно, сделаю для основного секретного метода.

Да, это вариант. Секретный метод можно в dll, а dll защитить энигмой, и все сенситивные данные генерить только в этом методе, чтобы они не попали в дамп ОЗУ.
Re[12]: Что нужно для размещения программы на удаленном серве
От: Passerby  
Дата: 27.03.21 13:03
Оценка:
Триальная версия Энигмы ломается очень просто. https://spy-soft.net/enigma-protector-trial-crack/
Re[13]: Что нужно для размещения программы на удаленном серв
От: gyraboo  
Дата: 27.03.21 14:00
Оценка:
Здравствуйте, Passerby, Вы писали:

P>Триальная версия Энигмы ломается очень просто. https://spy-soft.net/enigma-protector-trial-crack/


Попробуй еще что-нибудь из класса защищенных вирт.машин, если энигма смущает. Слабый триал не обязательно говорит о слабой защите вирт.машины. Лично мне энигма нравится, ни разу не ломали мои продукты (либо если частным образом и ломали, то это не влияло заметно на продажи). Это не значит что это идеальная защита, ведь сломать можно всё, это вопрос уровня профессионалов и затраченных усилий, и абсолютной защиты наверное не существует. Энигма мне ещё нравится тем, что у неё есть детектор запуска из-под виртуалок, детектор запущенных дебаггеров и т.д.
А тебе нужна абсолютная защита?
Отредактировано 27.03.2021 14:01 gyraboo . Предыдущая версия .
Re[14]: Что нужно для размещения программы на удаленном серв
От: Passerby  
Дата: 27.03.21 18:51
Оценка:
Здравствуйте, gyraboo, Вы писали:
G>А тебе нужна абсолютная защита?
Абсолютной защиты, вероятно, нет. Но хочется максимально обезопаситься.
Встречаются 2 психиатра.
— Как жизнь?
— Эх, лечил параноика от мании преследования, почти вылечил, и тут его убили...
Re[2]: Что нужно для размещения программы на удаленном сервере?
От: vsb Казахстан  
Дата: 28.03.21 07:20
Оценка:
Здравствуйте, L.K., Вы писали:

P>>должна быть ее защита от обслуживающего персонала


LK>Единственная возможность — это поставить в ЦОД свой физический сервер (colocation).


LK>Всё остальное ("облачная инфраструктура") находится во власти хостера, он может зайти на любой сервер под рутом.


Если уж мы тут обсуждаем злонамеренных сотрудников, что мешает сотруднику ЦОДа взломать физический сервер? Он от виртуального принципиально ничем не отличается.
Re[15]: Что нужно для размещения программы на удаленном серв
От: gyraboo  
Дата: 28.03.21 07:29
Оценка:
Здравствуйте, Passerby, Вы писали:

P>Здравствуйте, gyraboo, Вы писали:

G>>А тебе нужна абсолютная защита?
P>Абсолютной защиты, вероятно, нет. Но хочется максимально обезопаситься.
P>Встречаются 2 психиатра.
P>- Как жизнь?
P>- Эх, лечил параноика от мании преследования, почти вылечил, и тут его убили...

Более надёжные инструменты стоят дороже. Энигма — это некий баланс цены и качества, всё из коробки за двести баксов.
Re[3]: Что нужно для размещения программы на удаленном сервере?
От: L.K. Марс  
Дата: 28.03.21 15:44
Оценка:
vsb>что мешает сотруднику ЦОДа взломать физический сервер? Он от виртуального принципиально ничем не отличается.

На физическом сервере у владельца — полноценные рутовые права. Взлом тут возможен только физический (замораживание памяти, изучение на всяких электронных микроскопах, получение снимка памяти). При этом на сервере может быть защита от вскрытия корпуса, что ещё сильнее усложняет задачу.

А виртуальный сервер полностью во власти хостера, который может в любую минуту зайти на сервер под рутом.
Re[4]: Что нужно для размещения программы на удаленном серве
От: vsb Казахстан  
Дата: 28.03.21 16:23
Оценка:
Здравствуйте, L.K., Вы писали:

LK>На физическом сервере у владельца — полноценные рутовые права. Взлом тут возможен только физический (замораживание памяти, изучение на всяких электронных микроскопах, получение снимка памяти). При этом на сервере может быть защита от вскрытия корпуса, что ещё сильнее усложняет задачу.


Зачем электронный микроскоп? Если нет шифрования диска — просто перезагружаешься, нажимаешь e в меню grub-а, дописываешь init=/bin/sh и вот тебе рут.

LK>А виртуальный сервер полностью во власти хостера, который может в любую минуту зайти на сервер под рутом.


Как ты себе это представляешь? Не может он зайти под рутом в работающую виртуальную машину. Откуда он пароль возьмёт?
Отредактировано 28.03.2021 16:24 vsb . Предыдущая версия .
Re[5]: Что нужно для размещения программы на удаленном серве
От: L.K. Марс  
Дата: 28.03.21 18:20
Оценка:
vsb>Если нет шифрования диска

Разумеется, шифрование диска есть. Ключ — у владельца сервера на флешке. Любой перезапуск сервера (обновление ядра, сбой питания...) происходит в присутствии владельца.

vsb>Не может он зайти под рутом в работающую виртуальную машину. Откуда он пароль возьмёт?


Пароль от vds хостер сам выдаёт. И, разумеется, он этот пароль знает.

Образ системы также подготовлен хостером. Т.е. в системе могут быть какие угодно закладки на уровне ядра.
Re[6]: Что нужно для размещения программы на удаленном серве
От: vsb Казахстан  
Дата: 28.03.21 19:06
Оценка:
Здравствуйте, L.K., Вы писали:

vsb>>Если нет шифрования диска


LK>Разумеется, шифрование диска есть. Ключ — у владельца сервера на флешке. Любой перезапуск сервера (обновление ядра, сбой питания...) происходит в присутствии владельца.


Это непрактично до жути.

vsb>>Не может он зайти под рутом в работающую виртуальную машину. Откуда он пароль возьмёт?


LK>Пароль от vds хостер сам выдаёт. И, разумеется, он этот пароль знает.


Пароль меняется командой passwd.

LK>Образ системы также подготовлен хостером. Т.е. в системе могут быть какие угодно закладки на уровне ядра.


Это фантазии. Нет там никаких закладок, обычный образ с преднастроенной сетью и изредка парой изменённых sysctl-ов. Ну и никто не мешает переустановить систему, что лично я всегда и делаю на всякий случай.
Re[7]: Что нужно для размещения программы на удаленном серве
От: L.K. Марс  
Дата: 28.03.21 20:22
Оценка:
vsb>Это непрактично до жути.

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

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

vsb>Пароль меняется командой passwd.


А смысл? Если хостер знает изначальный пароль, то он полностью контролирует систему в т.ч. сессию ssh. И хостер сразу же узнает новый пароль.

vsb>Нет там никаких закладок, обычный образ с преднастроенной сетью


Это уже дело веры. Можно верить, что закладок нет. А можно подозревать, что они там есть. И то, и другое — недоказуемо. Но теоретически хостеру ничто не мешает вставить закладку в образ системы.
Re[5]: Что нужно для размещения программы на удаленном серве
От: ути-пути Россия  
Дата: 29.03.21 07:09
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Как ты себе это представляешь? Не может он зайти под рутом в работающую виртуальную машину. Откуда он пароль возьмёт?


Зачем в работающую? У него есть образ диска, с которого можно загрузиться независимо от работы машины, или просто его исследовать без загрузки.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[10]: Что нужно для размещения программы на удаленном серве
От: Passerby  
Дата: 30.03.21 17:58
Оценка:
А Энигма сможет защитить ключи, т.е. константные строки?
Re[12]: Что нужно для размещения программы на удаленном серве
От: Passerby  
Дата: 30.03.21 22:39
Оценка:
Здравствуйте, gyraboo, Вы писали:

G>Здравствуйте, Passerby, Вы писали:


P>>А Энигма сможет защитить ключи, т.е. константные строки?


G>Да, если они будут в бинарно скомпилированной DLL, в этом случае этот код будет выполняться в защищенной вирт.машине (хотя я вот видел что в энигме появилась какая-то защита дот-нет байт-кода, но у меня доверия к этому пока мало).


Тогда сделаю класс из двух константных строк строк и скомпилирую в dll.
G>а расшифровывать уже приватным ключом на приватном компьютере.
Скорее всего помещу dll на тот же сервер, т.к. WCF не знаю. И IP моего ПК динамический.
Re[3]: Что нужно для размещения программы на удаленном сервере?
От: Vetal_ca Канада http://vetal.ca
Дата: 05.04.21 17:50
Оценка:
Здравствуйте, Passerby, Вы писали:


P>Откуда же я знаю? Про какой монитор спрашиваешь? Просмотрел несколько предложений, нигде про мониторы не говорится. Мне нужен быстрый сервер с быстрым интернетом. И чтобы нельзя было посмотреть программу и секретные ключи в ней. Консольная программа сейчас работает под Win 10 на моем ПК, на диске занимает 2.4 мб, диспетчер показывает оперативную память 24 мб, загрузка i5 7500 процессора 2%, но скоро подключу еще модули и загрузка возрастет, думаю раза в 2 или 3.

P>Какой выбрать сервер: VPS, VDS или дедик? Какую выбрать ОС: Debian, Ubuntu, Xubuntu, CentOS, FreeBSD? Какая из них защищенней? Какую программу потом установить для шифрования диска? Что сделать, чтобы я мог на своем ПК смотреть результат на консоли, а на сервере это смотреть не было возможности? Если такое нельзя, удалю вывод на консоль и оставлю вывод в файл, который надо будет скачивать. У меня нет никакого опыта, даже малого работы с сервером.


4 варианта:

1. Потратить несколько лет на освоение ИБ
2. Отдать человеку, оплатив, который в этом разбирается — самый практичный
3. "Домашний" хостинг с доступом через VPN. Быстрый сервер с быстрым интернетом
4. Отказаться от всей затеи сразу

Легкого варианта нет. Точно-точно — нет и не будет.

По теме, как тут писали, Linux, console, в stdout не выводи

Секреты храни в Hashicorp Vault или в всторонних сервисах, Elastic Secret manager AWS), Azure Keyvault и т.п. Но и с этим, тебе п. 1 или 2 обязательны.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.