Не секрет, что современный интернет напичкан различными ботами, которые пытаются проникнуть в "тело" Вашего сайта, попросту говоря - взломать его. Поэтому после установки LAMP сервера требуется настроить его таким образом, чтобы обезопасить себя от таких попыток.

Данная статья написана после обнаружения проникновения вируса на одном из моих сайтов, о чем было написано в этой статье. Поверьте, лучше обезопасить себя заранее, чем потом вычищать следы проникновения, или еще хуже - восстанавливать всю систему. Не повторяйте чужих ошибок! ;)

Итак LAMP сервер, как известно, состоит из Apache, Mysql, PHP. Идём по порядку

Защита Apache

Скрываем вывод версии Apache, информацию об операционной системе в сообщениях об ошибках. Такая информация появляется к примеру на странице, которая не найдена или запрещена для просмотра. Файл конфигурации в Ubuntu лежит тут

/etc/apache2/conf-available/security.conf

 Тут выставляем значения

ServerTokens Prod 
Server Signature Off

Теперь сервер не будет выдавать информацию о своей версии и версии операционной системы.

В настройках хостов, к Options добавляем

<Directory />
.... Options -Indexes ....
</Directory>

 

Защита PHP

Смотрим все подключённые модули PHP и отключаем не нужные. Список всех модулей можно увидеть введя в терминале команду

php -m

В файле настроек php.ini отключаем "небезопасные" функции, через которые злоумышленник обычно может получить "ненужную" ему информацию. Если у Вас уже есть отключенные функции в данной строчке, просто добавьте к ним следующие:

disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open, eval, curl_exec, curl_multi_exec, parse_ini_file

В том же файле добавляем (раскомментируем или меняем значение)

register_globals=off
safe_mode=off
allow_url_fopen=Off
allow_url_include=Off

Первые две функции были удалены начиная с версии php 5.4, так что, если у вас эта версия или более поздняя, не стоит себя утруждать.

Устанавливаем open_basedir .

open_basedir /home/user/site_dir/

Ограничивает указанным деревом каталогов файлы, которые могут быть доступны для PHP, включая сам файл. Эта директива НЕ подвержена влиянию безопасного режима.

 Отключаем вывод версии php, его не за чем знать кому-то кроме вас

expose_php = Off

Защита Mysql

Если базы данных MySQL используются только вашим сервером (localhost), в конфигурационном файле установите

bind-address=127.0.0.1

После того, как изменили конфигурационные файлы apache, php, mysql можно защитить их от перезаписи, выполнив следующие команды из терминала:

# chattr +i /etc/php5/apache2/php.ini
# chattr +i /etc/apache2/conf-available/*
# chattr +i /etc/mysql/my.cnf

команда chattr +i сделает файлы неизменяемыми, даже root пользователь не сможет их изменить. Если вы применили данный приём, то это нужно запомнить и в дальнейшем, чтобы изменить эти файлы, сначала нужно будет выполнить ту же команду с параметром -i

# chattr -i filename

 


Для комментирования недостаточно прав! Наверное нужно зарегистрироваться...