Отключение функций в PHP для защиты от ssh

Работая над безопасностью хостинг-сервера, совсем неплохо отключать «небезопасные» возможности PHP. Смысл в том, что большинство php-шеллов так или иначе используют функции exec();, system();, shell_exec(); или passthru();.

В настройках по умолчанию, используя PHP, есть возможность выполнять системные команды через PHP-скрипты. Можно просмотреть содержимое директорий с помощью утилиты ls, выполнить вывод файла с помощью утилиты cat, видеть свои процессы, etc.

Ети возможности серьезно подрывают безопасность сервера, особенно в случае хостинг-сервера. Чтобы повысить безопасность, отключим некоторые функции. Для этого в файле /etc/php.ini допишем функции, которые хотим запретить, в параметр disable_functions:

disable_functions = exec,ini_get,ini_get_all,parse_ini_file,passthru,php_uname,popen,proc_open,shell_exec,show_source,system

После внесения изменений необходимо дать команду Apache или php-fpm перечитать изменения:

service php-fpm restart

Описание указанных функций:

exec — вызов внешней программы
ini_get — получает значение опции конфигурации
ini_get_all — получает все опции конфигурации
parse_ini_file — разбирает файл конфигурации
passthru — вызов внешней программы и вывод «сырых» результата на дисплей
php_uname — возвращает информацию об ОС, на которой php был построен
popen — открывает файловый указатель процесса
proc_open — выполняет команду и открывает файловый указатель для ввода/вывода
shell_exec — выполняет команду в оболочке/shell и возвращает полный вывод в виде строки
show_source — вывод исходного текста текущей веб страницы
system — вызов внешней программы и вывод результата на дисплей

Также стоит подумать над отключением таких функций:

diskfreespace — псевдоним функции disk_free_space
disk_free_space — получить размер доступного пространства в каталоге
disk_total_space — возвращает общий размер диска
eval — вычисляет строку, заданную в code_str, как код PHP (eval ( string code_str))
fileperms — получить информацию о правах на файл
fopen — открывает файл или URL
opendir — возвращает дескриптор каталога для последующего использования с функциями closedir(), readdir() и rewinddir()
phpinfo — выводит всю информацию об php, Ос
phpversion — выводит версию php
posix_getpwuid — возвращает информацию о пользователе по его user id
posix_getgrgid — возвращает информацию о группе по её group id
posix_uname — получает системное имя, возвращает хэш строк с информацией о системе

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


Понравилась статья? Поделись с остальными.

Комментарии закрыты.