Полезные команды SSH

Общие рекомендации по удалению вирусов


ОЧЕНЬ полезная страница для создания GREP

grep-параметры


top

Запущенные процессы. Выход клавишей "q".


Перезагрузка web-сервера:

service httpd restart

sudo httpd restart


du --max-depth=1 -h
Узнать размер директорий в текущей.

du -s -h
Узнать суммарный размер всех директорий


grep -F -l -H -a --include="*.php" -R "\x47\x4c\x4f\x42\x41\x4c\x53" /home/o/olden/

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


grep -F -l -H -a --include="*.php" -R "preg_replace(\"/.*/e\",\"" /home/o/olden2/

Этой командой ищем точное вхождение текста, при этом кавычки нужно экранировать.


egrep -l -H --include="*.php" -R '\$[[:alpha:]][[:digit:]]{1,5}\[[[:digit:]]{1,3}\]\.\$[[:alpha:]][[:digit:]]{1,3}\[' /home/o/olden/

Расширенная версия grep, которая позволяет искать регулярные выражения. Стандартные \d меняются на [[:digit:]] . Полный список изменений есть тут.


egrep -lRZ -H --include="*.php" -R '<?php.*(\$[a-zA-Z]+[0-9]+\[[0-9]\]\s?\.\s?)+.*?>' /home/o/olden2/ | xargs -0 -l sed -i'.OLD' -e 's/<?php.*\(\$[a-zA-Z]\+[0-9]\+\[[0-9]\] \?\. \?\)\+.*?>//'

Удаляем вхождение регулярного выражения. Жадное. При этом создаются файлы бэкапов. В команда SED экранируются все маски, а спецсимволы не все.


Удаляем строку с вирусом по точному вхождению строки, зашёл через SSH и ввёл команду

find /sitedir -name '*.js' -exec sed -i 's/textdodelete//' {} \;


Вторая версия этой же команды, но делаем проверку регулярным выражением по вхождению определённого текста в строку. При нахождении строка удаляется целиком

find /sitedir -name '*.js' -exec sed -i '/7kSKlBXYjNXZfhSZwF2YzVm/d' {} \;


Не забываем проверить вот на такое вхождение строк

eval(gzinflate(base64_decode('

if (isset($_REQUEST['en'])) eval(stripslashes($_REQUEST['en']));


zip -r logs.zip /.

Архивирование папки рекурсивно. Отличие * от . заключается в том, что с * не будут архивироваться скрытые файлы.


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

Найти все файлы по маске, созданные за последние 7 дней, рекурсивно


find /home/o/olden/ -newermt 2015-01-13

Найти все файлы по маске, созданные новее определённой даты


find /home/o/olden/ -name "*.php" -newermt 20150101 \! -newermt 20150130

Найти все файлы по маске, созданные в интервале дат


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

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


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

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


find /home/o/olden2/ -name 'modx-1.0.13.rar' -exec rm {} \;

Рекурсивный поиск файлов по маске и их удаление.


tar xvfz westernhorse-day.tar.gz -C ~/var/www/westernhorse.ru/htdocs/

Распаковать файл из текущей папки в нужную папку. Если использовать аргумент xvf, то распакуется не .gz, а .tar


rm -rf *

Рекурсивно удалить все папки и файлы в текущей папке


mv oldfolder newfolder

Переместить папку или переимновать её. Работают также пути типа / .. и др.


chmod -R 777 *

Изменить права на все файлы и папки начиная с текущей, рекурсивно.


mv oldfolder newfolder

Переместить папку


scp -P 22 user@myhost.com:/home/user/dir1/file.txt /home/user/dir2

Пароли вводятся после этого.


mysql -u name_user -pmypassword name_db < /home/backup/db.sql

Импорт из файла в базу даных


-name "php.ini" -print

Найти файл по имени начиная с корня сервера.


find ./ -type d|xargs chmod 755

Найти все папки в текушей папке и вложенные и поставить на них 755


find ./ -type f|xargs chmod 644

Найти все файлы в текушей папке и вложенные и поставить на них 644


find /home/o/olden/ -name '*.php' -size -300b -type f -mtime -3

Найти все файлы .php моложе двух дней и меньше 300 байт.




Примеры команд, которыми я находил вирусы

  • egrep -l -H --include="*.php" -R '\+\=\$GLOBALS' /home/o/olden/
  • egrep -l -H --include="*.php" -R '\$r{1,5}\[{1,3}\]\.\$r{1,3}\[' /home/o/olden/
  • egrep -l -H --include="*.php" -R '(GLOBALS.{1,}){3,}' /home/o/olden/
  • egrep -l -H --include="*.php" -R '(base64\_decode.{1,}){3,}' /home/o/olden/
  • egrep -l -H --include="*.php" -R 'preg\_replace\(\"\/\.\*\/e' /home/o/olden/

Признаки вирусов

  • if(@md5($_SERVER['HTTP_PATH'])==='51fe4b870d654af6a1f5b3b8a7c486b4'){ @extract($_REQUEST); @die($stime($mtime)); }
  • grep -F -l -H -a --include="*.php" -R "PATH'])===" /home/o/olden2/
  • grep -F -l -H -a --include="*.php" -R "if(@md5($_SERVER['HTTP_PATH'])===" /home/o/olden2/
  • grep -F -l -H -a --include="*.php" -R "$default_action = 'FilesMan';" /home/o/olden2/
  • grep -F -l -H -a --include="*.php" -R "?><?" /home/o/olden/
  • grep -F -l -H -a --include="*.php" -R "?> <?" /home/o/olden/
  • egrep -l -H --include="*.php" -R '(\$[a-zA-Z]+[0-9]+\[[0-9]\]\s?\.\s?)+' /home/o/olden/
  • egrep -l -H --include="*.php" -R 'de.{1,10}code.{1,100}str\_replace' /home/o/olden/
  • egrep -lR -H --include="*.php" -R '(\$$[a-zA-Z]+$[0-9]+\$[$[0-9]\]\.)+'
  • egrep -l -H --include="*.php" -R "\$\_POST\[\'pass\'\]" /var/www/westernhorse.ru/data/www/westernhorse.ru/
  • EDITOR=nano crontab -e -- открытие кронтаба в нормальном редакторе
Яндекс.Метрика