The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Раздел полезных советов: Использование amon для дополнительн..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Есть идеи по улучшению форума и сайта ? Пишите.
"Раздел полезных советов: Использование 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...
Обсуждается: http://www.opennet.me/tips/info/2567.shtml

Ответить | Правка | Cообщить модератору

Оглавление
Раздел полезных советов: Использование amon для дополнительн..., auto_tips, 25-Апр-11, 21:42  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру