Какие права надо поставить, чтобы не залили шелл, поиск дряни на сервере

выставить все файлам владельца root

find . -type f -exec chown root:root {} \;

выставить 755 всем каталогам и 644 всем файлам:

find . -type d | xargs chmod 755
или если есть каталоги с пробелами
find . -type d -exec chmod 755 {} ';'

для файлов:
find . -type f | xargs chmod 644
или если есть файлы с пробелами
find . -type f -exec chmod 644 {} ';'
ПОчистить кеши, а вдруг уже какая-то зараза есть:
rm engine/cache/*
rm engine/cache/system/*

Чтобы DLE смог писать всякие кеши и делать бекапы:

find uploads/ -type d -exec chmod 777 {} ';'

chmod 777 torrents/

chmod 777 backup/
chmod 777 engine/cache/
chmod 777 engine/cache/system/
chmod 777 engine/data/xfields.txt
chmod 777 engine/data/xprofile.txt

 

И все вместе, чтобы тупо скопировать:

rm engine/cache/*
rm engine/cache/system/*
find . -type d -exec chmod 755 {} ';'
find . -type f -exec chmod 644 {} ';'
find uploads/ -type d -exec chmod 777 {} ';'
chmod 777 torrents/
chmod 777 backup/
chmod 777 engine/cache/
chmod 777 engine/cache/system/
chmod 777 engine/data/xfields.txt
chmod 777 engine/data/xprofile.txt

ПОЛЕЗНО  Скачиваем сайты целиком - утилита wget

Просмотр всех пользователей системы:

cut -d: -f1 /etc/passwd

Просмотр всех не системных пользователей:

cat /etc/passwd | awk /bash/{print} | cut -d: -f1

Просмотр пользователей, залогиненных в системе

who

тут показано имя пользоавтеля, терминал и IP

 

Поиск php-файлов по владельцу:

find . -type f -iname "*.php" -user www-data

Если зальют шелл, владельцем этого файла станет пользователь от имени которого работал php-процесс, по умолчанию это www-data

 

Если надо поставить права рекурсивно конкретным файлам по маске, делаем так:

<code>find . -type f -name *rc -exec chown root:root {} \;

Поиск шелла в картинках:
</code>find . -type f |xargs grep '&lt;?php'

Поиск всех не php-файлов, в которых вшит код php:
find /var/www ! -regex '.*php' -type f |xargs grep '&lt;?php'

На всякий случай сменить root-пароль на mysql
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('secret_password');
А вот поиск с пропуском большого каталога:
nice -n 19 ionice -c 3 find . \( -path uploads/photos -o -path uploads/post \) -prune -o ! -regex '.*php' -type f |xargs grep '<?php'

Поиск текста "eval" во всех файлах с расширением .php с заданной директории:

find /dir/to/find/ -type f -iname "*.php" -exec grep -Him1 'eval' {} \;

Поиск "eval" среди файлов, у которых выставлены права 777

find /dir/to/find/ -perm 2 -type f -iname "*.php" -exec grep -Him1 'eval' {} \;

Простой поиск php-скриптов в заданной папке

find /dir/to/find/ -perm 2 -type f -iname "*.php"

Поиск .php файлов, созданных или измененных за последние 7 дней, мне всегда помогала именно она:

find /dir/to/find/ -type f -iname "*.php" -mtime -7

Далее пробегаемся по списку файлов, смотрим их содержимое и, если найден shell удаляем его.

  • Соня

    У меня на сайт кто-то залил целую папку зловредных файлов - я её нашла, но боюсь удалять. Судя по лёгкости написания вами советов - чую вы профи. Не возьмётесь за чистку моего сайта от ЗЛА? Спасибо

    • Roman NMSK

      сама чистка вредоносных файлов особо не даст результата. т.к. нужно искать место, через которое залили. это может быть или дыра в скрипте на сайте или украденный пароль от фтп к сайту. я бы посоветовал из консоли поискать файлы созданные за последние 7 или 30 дней и выявить среди них наиболее подозрительные.
      так же вредоносный код могли вписать внутри каких-то нормальных файлов системы - их тоже необходимо просмотреть.
      + советую поставить логер ПОСТ-запросов к сайту (если хостинг позволяет такое подключать) - так сможете найти через какой скрипт заливают заразу (http://coding.dp.ua/php/1555-logirovanie-post-zaprosov-k-saytu.html)

  • I like Movies

    "Если зальют шелл, владельцем этого файла станет пользователь от имени которого работал php-процесс, по умолчанию это www-data"
    Хочу уточнить, файлы на сервере где владелец х...х, группа www-data, то в этих файлах "ковырялся" злоумышленник?