Добрый ночи rb. Спасибо Вам за то, что следите за перепиской на форуме.
Мои высказывания и рекомендации - это всего лишь мои мысли в слух и они могут иногда быть ошибочными.
Что делать и как поступать - решать каждому админу сайта на свое усмотрение.
К сожалению, в данном случаи, сказанное ранее мое мнение не иллюзия а реалии с которыми сталкиваются очень много пользователей.
CHMOD или права доступа.
Для начала нам нужно задать себе вопрос, что это такое?
CHMOD - название программы, которая работает на серверах под ОС Linux и дает возможность нам назначать права доступа различным объектам : каталогам , файлам.
Права доступа разделяются по отношению к файлам и к каталогам. Обозначаются они одинаково, но означают немного разное.
Сами привилегии подразделяются на три категории и записываются одной строкой сразу для трёх типов пользователей:
владелец — u (непосредственно владелец файлов)
группа — g (других пользователей, входящих в группу владельца)
остальные — о (всех прочих пользователей);
Обычно Chmod задают в цифровом виде. Стандартно можно увидеть и это рекомендовано делать такие комбинации:
600
только владелец файла может читать/записывать
644
владелец файла, может читать/записывать, члены группы и остальные только читать
666
любой пользователь может читать/записывать
700
только владелец файла, может читать/записывать и запускать на исполнение
711
владелец файла, может читать/записывать и запускать на исполнение, члены группы и остальные могут запускать на исполнение, но не могут читать и изменять
755
любой пользователь может входить в этот каталог и читать содержимое каталога, но изменять содержимое может только владелец
777
любой пользователь может читать/записывать и запускать на исполнение
Для каталогов:
700
только владелец может входить в этот каталог, читать и записывать в него файлы
755
любой пользователь может входить в этот каталог и читать содержимое каталога, но изменять содержимое может только владелец
На этом теорию заканчиваем. Ее и так много в интернете.
Перейдем к практике:
Взлом Вашего Веб ресурса можно разделить на несколько этапов:
Этап 1. Подготовка.
Подготовить себе прокси сервера и туннели через которые можно будет проходить, отправлять запрос на Ваш сайт и при этом скрывать о себе информацию.
Этап 2. Получить доступ.
Вариантов как это сделать - много.
Остановимся на условии, когда к примеру Вы скачали бесплатный модуль или взломанный модуль с непроверенных источников в котором есть уязвимость или как в народе говорят "дыра" .
Что же делает эта "дыра"?
В зависимости от функций заложенных в файлах - скриптах, через такую вот "дыру" злоумышленник проделав определенный запрос через браузер получит к примеру логин, пароль от админ панели, или как вариант сможет залить вредоносный скрипт, который в будущем позволит ему делать что угодно.
Этап 3. Управление.
После того как злоумышленник получил хоть какой то доступ, он пытается произвести некоторые действия для получения результата.
Результатом может быть как просто повредить Ваш ресурс так и использовать его для размещения рекламы и т.д.
Этап 4. Маскирование.
Злоумышленник попытается максимально спрятать свой код между всеми остальными файлами Вашего сайта. Чтоб в будущем сразу обратится к шелл скрипту и опять проделать все что ему необходимо.
Этап 5. Контроль и сканирование.
Если Ваш веб ресурс стал для злоумышленника платформой для заработка денег на трафике, рекламе и т.д, то он, злоумышленник, пытается автоматизировать процесс.
Под автоматизацией, я подразумеваю выполнение некоторых операции с помощью неких программ, которые время от времени сканируют Ваш сайт и смотрят, установлен ли еще их вредоносный код или нет. И если нет пытаются его установить снова через шелл скрипт.
Теперь настало время вернутся к правам доступа.
Дело в том, что при наличие уязвимости, права доступа иногда честно говоря мало в чем могут помочь.
К примеру: если у нас появилась возможность залить шел скрипт, то теперь злоумышленник может выполнять разные действия над Вашими файлами.
Знаю, после этих слов будет много вопросов... как так? стоят же права к примеру только читать?
Ответ очень простой: шелл скрипты могут изменять права других файлов. А если не могут то с помощью простой функции RENAME() могут заменить свой полученный файл на любой файл вашей системы.
Кто не верит, может попробовать на шарет хостинге проделать эксперимент:
Суть эксперимента 1 (названия файлов выдуманные):
1. Вам необходимо создать файл config.php с любым содержанием и назначить ему любые логичные права доступа Вашей системы.
2. Создать скрипт rename.php и использовать функцию RENAME() (функция PHP, переименовывает файл или директорию)
3. Создать скрипт newconfig.php с любым содержанием.
4. Запустить rename.php , после откроем файл config.php и увидим в нем содержимое newconfig.php
Суть эксперимента 2 (названия файлов выдуманные):
1. Вам необходимо создать файл config.php с любым содержанием и назначить ему любые логичные права доступа Вашей системы к примеру 400.
2. Создать скрипт сhmod.php и использовать в нем функцию php сhmod(), в которой прописать путь к файлу config.php и переопределить права на 777
3. Запустить скрипт сhmod.php
После чего мы видим что права на наш скрипт были сменены
Вопрос, почему же так? Почему же можно менять тогда так легко права доступа с помощью Shell Скриптов , которые используют сhmod() функцию?
Ответ прост: Apache и скрипты работают с одними и теми же правами.
Мало того, есть большая угроза заражению всех Ваших веб сайтов на Вашем хостинге, если хоть один с сайтов уже заражен.
Распространение вирус - скрипта можно остановить использую разные правовые группы для разного своего веб проекта на одном хостинге. Но для этого необходимо как минимум установить и настроить nginx+apache2-mpm-itk