The OpenNET Project / Index page

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



"Раздел полезных советов: Использование amon для дополнительн..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Использование amon для дополнительн..."  +/
Сообщение от auto_tips on 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ообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от apparmor on 25-Апр-11, 21:42 
apparmor же есть
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от mma on 26-Апр-11, 06:13 
тсссс, не мешай людям изобретать велосипед. Еще чуть-чуть и selinux уже начнут изучать
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от Аноним (??) on 26-Апр-11, 11:36 
> apparmor же есть

Статья про Debian.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от WbxC on 26-Апр-11, 21:34 
А что, красиво придумано: хакерскими методами - против самих же хакеров. Клин клином вышибают.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от axe (??) on 27-Апр-11, 02:16 
феерический костыль
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от V (??) on 27-Апр-11, 11:39 
не то слово
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от sa10 email(ok) on 27-Апр-11, 17:41 
> Еще чуть-чуть и selinux уже начнут изучать

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


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

8. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от Аноним (??) on 27-Апр-11, 22:14 
use KVM/XEN Luke
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от Аноним (??) on 28-Апр-11, 06:48 
> не то слово

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

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от mma on 28-Апр-11, 07:02 
ну это надо спрашивать с разработчиков openvz
LXC дружит с selinux.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

11. "Использование amon для дополнительной защиты PHP-интерпретат..."  +/
Сообщение от Василий email(??) on 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’

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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