
Недавно я переключил свой хостинг-сервер на AWS. Поначалу все работало нормально, но недавно я столкнулся с проблемами с сервером, из-за которых он несколько раз выходил из строя.
Я внимательно следил за ним и заметил, что загрузка ЦП несколько раз достигала 100%, и каждый раз мне приходилось перезапускать свой экземпляр.
Итак, я проверил журнал доступа и журналы ошибок и, похоже, на моем сервере происходят какие-то хакерские действия. Пожалуйста, посмотрите ниже журналы моего файла журнала ошибок:
[Wed Sep 23 14:25:56.081268 2015] [:error] [pid 18791] [client 193.0.***.***:59940] script '/var/www/html/includes/custom.php' not found or unable to stat, referer: -1' OR 2+20-20-1=0+0+0+1 or 'Q2fRfUkq'='
[Wed Sep 23 14:25:56.122526 2015] [:error] [pid 18780] [client 193.0.***.***:59939] script '/var/www/html/includes/custom.php' not found or unable to stat, referer: @@EKtcl
[Wed Sep 23 14:25:56.365583 2015] [:error] [pid 18788] [client 193.0.***.***:59930] script '/var/www/html/includes/custom.php' not found or unable to stat, referer: -1" OR 2+392-392-1=0+0+0+1 --
[Wed Sep 23 14:25:56.663520 2015] [:error] [pid 18786] [client 193.0.***.***:59908] script '/var/www/html/includes/custom.php' not found or unable to stat, referer: if(now()=sysdate(),sleep(9),0)/*'XOR(if(now()=sysdate(),sleep(9),0))OR'"XOR(if(now()=sysdate(),sleep(9),0))OR"*/
[Wed Sep 23 14:25:56.994941 2015] [:error] [pid 18791] [client 193.0.***.***:59940] script '/var/www/html/includes/custom.php' not found or unable to stat, referer: (select(0)from(select(sleep(9)))v)/*'+(select(0)from(select(sleep(9)))v)+'"+(select(0)from(select(sleep(9)))v)+"*/
Теперь я вижу, что он пытается получить доступ к несуществующему файлу и добавляет SQL-инъекции, и невероятная вещь - это работает, он использует мой процессор на 100%, а служба MySQL использует здесь 90%.
Так как же этого избежать, помогите мне, пожалуйста.
Он берет доступ к mysql здесь, так что это происходит? Как мы видим, нет никаких доступных custom.php, тогда как они запускают запросы mysql на сервере?
И самое главное, хакер взламывает через curl или post script, но вообще не использует мою машину.
решение1
учитывая этот код, это, кажется, и автоматизированная попытка попробовать общие шаблоны для SQL-инъекции. Вот почему происходит интенсивное использование процессора. Это не означает, что атака успешна на этом уровне.
Вы заметили поврежденные данные в вашей базе данных или странное поведение вашего PHP-приложения?
Чтобы этого избежать:
Проверьте в вашем php-приложении, как sql управляется в вашем php-коде. НИКОГДА не позволяйте php-коду напрямую манипулировать командами SQL. Используйте функции, очищайте свои URL-адреса и формы POST. Если это так, то можете расслабиться.
Найдите способ занести в черный список такую активность. Я имею в виду софт, который проверяет ваши логи и блокирует IP. Установите IDS, например SNORT.
Простым решением будет установка артиллерии. Это простая приманка, которая автоматически заносит в черный список попытки на основе поддельных портов. Вы можете найти хороший урок наhttps://www.digitalocean.com/community/tutorials/how-to-set-up-an-artillery-honeypot-on-an-ubuntu-vpsи артиллерийский репо вhttps://github.com/trustedsec/artilleryЯ использовал это решение для некоторых клиентов, оно эффективно и просто.