DDoS-атаки стали обычным делом в последнее время. Для генерации флуда используются различные методы, иногда весьма креативные. Компания Sucuri рассказывает об одном таком случае, когда в атаке участвовали более 162 000 сайтов WordPress с включенным протоколом вызова удаленных процедур XML-RPC (который активирован по умолчанию).
В данном случае сайты генерируют поток запросов Layer 7. Каждый из них способен отправлять сотни тысяч запросов в секунду. В логах наблюдается следующая картина.
74.86.132.186 - - [09/Mar/2014:11:05:27 -0400] "GET /?4137049=6431829 HTTP/1.0" 403 0 "-" "WordPress/3.8; http://www.mtbgearreview.com" 121.127.254.2 - - [09/Mar/2014:11:05:27 -0400] "GET /?4758117=5073922 HTTP/1.0" 403 0 "-" "WordPress/3.4.2; http://www.kschunvmo.com" 217.160.253.21 - - [09/Mar/2014:11:05:27 -0400] "GET /?7190851=6824134 HTTP/1.0" 403 0 "-" "WordPress/3.8.1; http://www.intoxzone.fr" 193.197.34.216 - - [09/Mar/2014:11:05:27 -0400] "GET /?3162504=9747583 HTTP/1.0" 403 0 "-" "WordPress/2.9.2; http://www.verwaltungmodern.de" ..
Как можно заметить, все запросы содержат случайное значение (как “?4137049=643182″), чтобы пробить кэш и форсирорвать полную загрузку страницы каждый раз. Такая атака довольно быстро выводит сервер из строя. Самое интересное, что все запросы идут от нормальных сайтов WordPress.
162 тысячи — лишь небольшая часть сайтов WordPress, подверженных уязвимости XML-RPC. Теоретически, можно сделать ботнет и большего размера, считают в Sucuri. Чтобы проверить свой сайт на участие в DDoS-атаке, нужно поискать в логах POST-запросы к файлу XML-RPC или пройтипроверку в онлайне по базе сайтов, замеченных в таких атаках.
Для предотвращения нецелевого использования своего сайта специалисты рекомендуют прописать в шаблон следующий код.
add_filter( ‘xmlrpc_methods’, function( $methods ) { unset( $methods['pingback.ping'] ); return $methods; } );