URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 76649
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Использование amon для дополнительн..."

Отправлено auto_tips , 25-Апр-11 21:42 
Для экспресс-блокировки выполняемых при работе определенного PHP-скрипта внешних программ удобно использовать библиотеку amon.so (http://www.lucaercoli.it/amon.html), которая подменяет своим обработчиком системный вызов execve() и контролирует его выполнение. Библиотека amon.so рассчитана на тесное взаимодействие с PHP и учитывает особенности его работы, позволяя защититься от простейших атак и блокировать работу бэкдоров, подобных r57shell.

Так как библиотека amon пока отсутствует в стандартных пакетах, загрузим и соберем её вручную (пример для Debian/Ubuntu).

Устанавливаем необходимые для сборки компоненты:

   apt-get install build-essential

Загружаем amon:

   wget http://www.lucaercoli.it/amon/amon.c

Открываем файл amon.c и находим в верхней части строку "char * cmds []", в которой определен список допустимых команд. При необходимости правим список на своё усмотрение.

По умолчанию список разрешенных программ выглядит следующим образом:

   "/usr/sbin/sendmail"
   "/usr/lib/sendmail"
   "/etc/alternatives/lib.sendmail"
   "/usr/lib/sm.bin/sendmail"
   "/usr/bin/mail"
   "/bin/mv"
   "/bin/rm"
   "/usr/bin/unlink"
   "/bin/rmdir"
   "/bin/cp"
   "/bin/date"
   "/bin/bzip2"
   "/bin/gunzip"
   "/bin/gzip"
   "/usr/bin/unzip"
   "/bin/tar"
   "/usr/bin/host"
   "/usr/bin/file"
   "/usr/bin/uptime"
   "/bin/grep"
   "/usr/bin/diff3"
   "/bin/pwd"

Компилируем amon

   gcc -fPIC -shared -ldl -o amon.so amon.c

Копируем amon.so в директорию /lib:

   mv ./amon.so /lib/

В простейшем случае для защиты php-скрипта, запущенного в командной строке или в режиме CGI можно использовать следующий скрипт (php5-cgi-wrapper):

   #!/bin/sh
   export LD_PRELOAD=amon.so
   exec /path/del/vero/php5-cgi "$@"

При использовании механизма suEXEC, этот скрипт можно прописать вместо вызова php, например, указать в конфигурации apache:

   ScriptAlias /php_amon/ "/usr/local/bin/"
   AddHandler php-script .php
   Action php-script /php_amon/php5-cgi-wrapper

В случае необходимости работы php в виде модуля (libapache2-mod-php5), работающего внутри Apache, добавляем в /etc/apache2/envvars:

   export LD_PRELOAD=amon.so

и перезапускаем apache:

   /etc/init.d/apache2 restart

Для проверки загрузилась ли библиотека создадим и запустим простейший скрипт, в выводе которого должно быть упоминание amon.so:

   <?php
   phpinfo();
   ?>

Для php-скриптов, работающих в режиме FastCGI через mod_fcgid, достаточно написать промежуточный shell-скрипт, который использовать для запуска основного php-скрипта:

   #!/bin/sh
   export PHPRC=/etc/php5/cgi
   export LD_PRELOAD = amon.so
   exec /usr/lib/cgi-bin/php


В ситуации, когда php-скрипт попытается запустить, допустим, /bin/sh, операция будет блокирована, а в error.log будет оставлена запись:

   sh: command_name: command not found


URL: http://www.howtoforge.com/amon.so-highjacking-system-calls-f...
Обсуждается: https://www.opennet.ru/tips/info/2567.shtml


Содержание

Сообщения в этом обсуждении
"Использование amon для дополнительной защиты PHP-интерпретатора от выполнения внешних программ"
Отправлено apparmor , 25-Апр-11 21:42 
apparmor же есть

"Использование amon для дополнительной защиты PHP-интерпретат..."
Отправлено mma , 26-Апр-11 06:13 
тсссс, не мешай людям изобретать велосипед. Еще чуть-чуть и selinux уже начнут изучать

"Использование amon для дополнительной защиты PHP-интерпретат..."
Отправлено sa10 , 27-Апр-11 17:41 
> Еще чуть-чуть и selinux уже начнут изучать

А не подскажете где изучить selinux который внутри контейнера openvz работает?



"Использование amon для дополнительной защиты PHP-интерпретат..."
Отправлено Аноним , 27-Апр-11 22:14 
use KVM/XEN Luke

"Использование amon для дополнительной защиты PHP-интерпретат..."
Отправлено mma , 28-Апр-11 07:02 
ну это надо спрашивать с разработчиков openvz
LXC дружит с selinux.

"Использование amon для дополнительной защиты PHP-интерпретат..."
Отправлено Аноним , 26-Апр-11 11:36 
> apparmor же есть

Статья про Debian.


"Использование amon для дополнительной защиты PHP-интерпретатора от выполнения внешних программ"
Отправлено WbxC , 26-Апр-11 21:34 
А что, красиво придумано: хакерскими методами - против самих же хакеров. Клин клином вышибают.

"Использование amon для дополнительной защиты PHP-интерпретат..."
Отправлено axe , 27-Апр-11 02:16 
феерический костыль

"Использование amon для дополнительной защиты PHP-интерпретат..."
Отправлено V , 27-Апр-11 11:39 
не то слово

"Использование amon для дополнительной защиты PHP-интерпретат..."
Отправлено Аноним , 28-Апр-11 06:48 
> не то слово

да, костыль редкостный


"Использование amon для дополнительной защиты PHP-интерпретатора от выполнения внешних программ"
Отправлено Василий , 20-Ноя-17 17:26 
Подскажите пожалуйста, а как его собрать на 8 дебиане 64 бит

на команду
gcc -fPIC -shared -ldl -o amon.so amon.c
сыпет кучу ошибок вроде:

/usr/include/x86_64-linux-gnu/bits/fcntl.h:40:5: error: unknown type name ‘__off_t’