Это старая версия документа!
secure 1.04.2019
Установка модуля disable_eval для php7.2
Данный модуль отключает опасные функции php, такие как eval.
wget https://wiki.mikbill.ru/_media/billing/php_diseval_extension-master.tar tar xvf php_diseval_extension-master.tar cd PHP_diseval_extension-master/source
для сборки модуля необходим phpize из пакета php-devel (centos) или php7.2-dev (debian):
phpize ./configure make sudo make install
Подключим его к php:
touch /etc/php.d/10-diseval.ini echo "extension=diseval" > /etc/php.d/10-diseval.ini
Так же если php-fpm использует отдельные модули, diseval необходимо подключить и к нему.
Для того что бы web подтянул новый модуль необходимо перезапустить nginx/httpd/php-fpm
Установка модуля disable_eval для php5.3
для сборки модуля необходим phpize из пакета php-devel (centos) или php-dev (debian):
wget http://download.suhosin.org/suhosin-0.9.33.tgz --no-check-certificate tar -xvf suhosin-0.9.33.tgz cd suhosin-0.9.33 phpize ./configure make make install echo 'extension=suhosin.so' > /etc/php.d/suhosin.ini echo 'suhosin.executor.disable_eval = On' >> /etc/php.ini echo 'suhosin.executor.func.blacklist = strip_tags' >> /etc/php.ini echo 'suhosin.executor.eval.blacklist = strip_tags' >> /etc/php.ini
Так же если php-fpm использует отдельные модули, diseval необходимо подключить и к нему. Для того что бы web подтянул новый модуль необходимо перезапустить nginx/httpd/php-fpm
Установка модуля disable_eval для php5.4
для сборки модуля необходим phpize из пакета php-devel (centos) или php-dev (debian):
wget https://download.suhosin.org/suhosin-0.9.38.tar.gz --no-check-certificate tar -xvf suhosin-0.9.38.tar.gz cd suhosin-0.9.38 phpize ./configure make make install echo 'extension=suhosin.so' > /etc/php.d/suhosin.ini echo 'suhosin.executor.disable_eval = On' >> /etc/php.ini echo 'suhosin.executor.func.blacklist = strip_tags' >> /etc/php.ini echo 'suhosin.executor.eval.blacklist = strip_tags' >> /etc/php.ini
Так же если php-fpm использует отдельные модули, diseval необходимо подключить и к нему. Для того что бы web подтянул новый модуль необходимо перезапустить nginx/httpd/php-fpm
Изменение memory_limit после установки disable_eval
Так как disable_eval отключает возможность выставлять размер памяти из php скриптов, необходимо внести изменения в php.ini:
Текущий лимит памяти можно посмотреть выполнив:
php -i | grep memory_limit
Для изменения лимита необходимо выполнить:
sed -i "s|memory_limit =|memory_limit = -1;|g" /etc/php.ini
Где /etc/php.ini это путь к .ini параметрам php (cli), аналогично нужно сделать и для fpm если он использует другой конфиг (обычно такое встречается у debian).
Найти путь к php.ini для cli и fpm можно командой:
find /etc -type f -name "php.ini"
Скрипт проверки на заражение
#!/bin/bash FILES=( /var/www/mikbill/stat/data/lib/new_js.php /var/www/mikbill/stat/app/log/daily_draws.png /var/www/mikbill/stat/app/log/monthly_draws.png /var/www/mikbill/admin/res/fsb/css/plugins/datapicker/main.php /var/www/mikbill/admin/res/fsb/css/plugins/datapicker/index.php /var/www/mikbill/stat/sys/user_null/uid_null-2week.png /var/www/mikbill/stat/data/template/olson/css/images/ui-icons_d38f41_256x240.png /var/www/mikbill/stat/data/template/olson/font/fontawesome-webfontb31e.eot /var/www/mikbill/stat/data/template/olson/font/fontawesome-webfontd94d.eot ) for ITEM in ${FILES[*]} do if [ -f "$ITEM" ]; then echo "suspicious file: $ITEM" fi done find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" \) -exec grep -H 'file_get_contents(.font_xpattr)' {} \; find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" -and ! -name "*.js" \) -exec grep -H '], .black_list' {} \; find /var/www/mikbill/ -type f \( ! -name "*.log" -and ! -name "*.gz" -and ! -name "*.so" -and ! -name "*.js" \) -exec grep -H 'eval(' {} \;
Если в результате были найдены файлы и они не относятся к phpmyadmin, необходимо удалить/заменить на оригинальные файлы и запланировать переустановку сервера.
Удалить найденные файлы можно командой rm -f путь_к_файлу
Если выбивает ошибку то сделать chattr -i путь_к_файлу и повторить удаление.
Так же на чистый сервер советуем поставить IDS AIDE или Tripware.
Чистые файлы лк от версии 3.03.01
Скачать архив stat.tar и распаковать его:
cd /var/www/mikbill/stat wget https://wiki.mikbill.ru/_media/billing/stat.tar tar xvf stat.tar
Далее необходимо поправить права и владельца файлов:
find /var/www/mikbill/stat -type f -exec chmod 644 -- {} + find /var/www/mikbill/stat -type d -exec chmod 755 -- {} + chown apache:apache -R /var/www/mikbill/stat