Задать вопрос
@wtfowned

Как скрыть PHP код на сервере при условии что надо его править?

Добрый день!

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

Нашел разные обсфукаторы бесплатные превращающие код в нечто такое
<?php include(base64_decode('Li4vY29uZmlnLnBocA=='));include(base64_decode('cHJpdmF0ZS92ZW5kb3IvYXV0b2xvYWQucGhw'));$krc_5bf7f45b=[];foreach($bhi_6f9322e1as $xol_e8b7be43){$xol_e8b7be43=explode(base64_decode('Og=='),$xol_e8b7be43);try{$uic_c59361f8=new \xee_d9cb1642\cko_659fc60();$uic_c59361f8->ldc_aa08cb10($xol_e8b7be43[0],$xol_e8b7be43[1]);$krc_5bf7f45b[]=$uic_c59361f8;}catch(Exception $wky_efda7a5a)


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

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

3. Вариант не предоставлять root доступ к серверу, а осуществлять запуск через браузер, дать доступ только к FTP для заливки конфига в отдельную папку. Но тут есть ряд моментов - все скрипты выполняются вплоть до недели, и должны быть выполнены под root. Как это решить?
  • Вопрос задан
  • 2501 просмотр
Подписаться 2 Средний Комментировать
Ответ пользователя metajiji К ответам на вопрос (4)
@metajiji
На вкус и цвет по вашим возможностям и степени паранои вот варианты:
Selinux/Apparmor
Docker/lxc/systemd-nspawn
KVM/VirtualBOX/etc
Chroot/cgroups/chroot+cgroups
Так же не забываем про простые вещи типа open_basedir

По опыту скажу, что сейчас обернуть это в контейнер проще простого, тот же systemd есть везде.
Если боитесь контейнеров, сделайте chroot и для верности помажьте сверху cgroup (получите +- тот же контейнер) ну и конечно же всегда есть kvm но это оверкилл, зато просто и надёжно.
Ответ написан
Комментировать