22 Янв
Отключение функций в 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, поэтому для определенных ресурсов эти функции все же можно оставить включенными. Конечно, необходимо быть уверенным в том, что возможность заливать и модифицировать файлы есть только у доверенного круга лиц.
Понравилась статья? Поделись с остальными.

