Автор: @Местный
Специально для codeby.net
Всех приветствую! Решил написать небольшое руководство для пользователей, которые держат свой небольшой блог или форум. Поскольку данный форум индексируется в поисковиках, подумал хорошей идеей будет выложить именно сюда. Мой товарищ решил поднять небольшой wordpress блог duty-free.cc и заодно forum.duty-free.cc на xenforo и столкнулся с множеством проблем.
Конкуренты и другие недоброжелатели не дремлют. Постоянно пытаются вывести ресурс из строя. Поэтому важно было выбрать нормального хостера.
Защита блога wordpress
1. Не рекомендую устанавливать непроверенные плагины, рекомендую вообще плагины не устанавливать. Из-за них 90% проблем с безопасностью.
2. Отключите возможность оставлять комментарии. Мы оставили возможность оставлять комментарии и нас засорили полезными нагрузками для SQLI и XSS, около 160 полезных нагрузок было отправлено=) Даже, если версия не уязвима, зачем вам хранить лишний мусор на сервере и нагружать его.
3. Если регистрация в вашем блоге отключена, то заблокируйте путь к wp-login.php для всех ip, кроме разрешенных. Сделать это можно через cloudflare или веб-сервер. Если даже учетки от админки утекут злоумышленник не сможет авторизоваться, поскольку он не находится в вашей сети. Помимо wp-login.php мы можете блокировать всех, кто обращается к /wp-json/ чтобы никнеймы зарегистрированных пользователей были недоступны. Можно также запретить и другой функционал, чтобы если злоумышленник проник в админку не смог удалить ваши статьи и выложить свою вредоносную рекламу. Также отключите API, xmlrpc, чтобы защититься от брутфорс атак.
Вот вам небольшая шпаргалка. Примерно так можно настроить cloudflare.
4. Обрывать все соединения напрямую по ip адресу. Если вы этого не сделаете школьники будут заниматься примерно подобным=))
Идем в /var/log/nginx посмотрим сколько бомжик отправил запросов на наш сервер.
Неудивительно, что наш ресурс был недоступен.
Очистим логи. Зачем нам 11 миллионов бесполезной информации. Перед выполнением этой операции не забудьте отключить nginx, если вы под атакой. Теперь осталось запретить ему стучать напрямую по нашему ip.
Добавляем сюда пулл айпи адресов вашего CDN, я использую CF:
После этого мой сайт заработал и злоумышленник перестал vCPU нагружать=)
5. Убедитесь, что у вас не торчат наружу порты или файлы в которых конфиденциальная информация например .env или .git.
6. Поставьте MFA на аккаунт администратора.
После проделанных действий атака частично остановилась. Теперь вместо миллионов запросов он отправлял пару штучек, поскольку средств на пркоси у него нет, мы просто взяли заблокировали айпи злоумышленника.
Также в дополнение хотелось бы рассказать, что в качестве CDN ранее мы использовали stormwall.pro. Хороший вещь, поддержка отвечает частенько. Но пришлось отказаться из-за стоимости, пока такая защита не нужна=)
Продолжение выйдет, когда нас продолжат атаковать.
Специально для codeby.net
Всех приветствую! Решил написать небольшое руководство для пользователей, которые держат свой небольшой блог или форум. Поскольку данный форум индексируется в поисковиках, подумал хорошей идеей будет выложить именно сюда. Мой товарищ решил поднять небольшой wordpress блог duty-free.cc и заодно forum.duty-free.cc на xenforo и столкнулся с множеством проблем.
Конкуренты и другие недоброжелатели не дремлют. Постоянно пытаются вывести ресурс из строя. Поэтому важно было выбрать нормального хостера.
Защита блога wordpress
1. Не рекомендую устанавливать непроверенные плагины, рекомендую вообще плагины не устанавливать. Из-за них 90% проблем с безопасностью.
2. Отключите возможность оставлять комментарии. Мы оставили возможность оставлять комментарии и нас засорили полезными нагрузками для SQLI и XSS, около 160 полезных нагрузок было отправлено=) Даже, если версия не уязвима, зачем вам хранить лишний мусор на сервере и нагружать его.
3. Если регистрация в вашем блоге отключена, то заблокируйте путь к wp-login.php для всех ip, кроме разрешенных. Сделать это можно через cloudflare или веб-сервер. Если даже учетки от админки утекут злоумышленник не сможет авторизоваться, поскольку он не находится в вашей сети. Помимо wp-login.php мы можете блокировать всех, кто обращается к /wp-json/ чтобы никнеймы зарегистрированных пользователей были недоступны. Можно также запретить и другой функционал, чтобы если злоумышленник проник в админку не смог удалить ваши статьи и выложить свою вредоносную рекламу. Также отключите API, xmlrpc, чтобы защититься от брутфорс атак.
Вот вам небольшая шпаргалка. Примерно так можно настроить cloudflare.
4. Обрывать все соединения напрямую по ip адресу. Если вы этого не сделаете школьники будут заниматься примерно подобным=))
45.84.107.172 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-favicongH9Atp96vHnISBsOqUZHdoBMVx33I88j0OshdBJ9Ondf2JhwBzD0SEIs6Fuu04TtIbmnfifBRPEAQ6c8GtxsOp6C7GxGL20dBGEhXivZaWyKwwfvSr71ZgdQnZqXlM5dC.ico HTTP/1.1" 404 7095 "
185.220.101.96 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconxNuDWxvSEf3wCFV3llcZm6Wj6W1aWkf5WqslxKi450DDE4peDXFKY3FVXhKCtJa31qTWAeD4RPrwXW2vid7qr0uJcFVB84rKJs7Df0AM9sbOccF1WOUtOdhMIGSqiPbi3.ico HTTP/1.1" 404 7097 "
104.244.73.193 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconAoHOMMhD4801Lh06VTFYnjZoYG3Au5ZrDLdCBEW0HxMUtPQKIqMK3fwlGqKT36ytQCCvrbiYsJLGv7rW.ico HTTP/1.1" 404 7054 "
185.129.61.10 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconNVQ3YisoETOoOqK8XSC7utsgtzr619O40akV2ZKwsbup8WXoTOBPVJSETyHrJF4Yuir2IuJHoQOVsUSly.ico HTTP/1.1" 404 7050 "
193.189.100.202 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconMhnD3FUjYyeqFGhazbNaXhBbtNDYn7XZ8jCBKJxosoe3vW.ico HTTP/1.1" 404 7014 "
185.220.101.12 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconkiHdGVdVnQUybIx0pQQzYyDR2D9kJBJaDcjRHD8jIVG2Io41FpnI.ico HTTP/1.1" 404 7023 "
109.70.100.3 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconpvOiviIr94vX44CJIz2wZWISunwh8o01q2txtm4VHnYjBIPz2ykZQ3FQfCZDfu.ico HTTP/1.1" 404 7029 "
185.220.100.252 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconTa7p7gLqRYlLoBCpgJz2usI666IiO7w8XmdTlyVtyOZvfdq4jN0xQwYKrKXzhQz4YICRjq9x1emkhHWUGKFMxAHhbpsTT0Gz.ico HTTP/1.1" 404 7067 "
185.220.101.102 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconnN16o0OHfhUBpdx8WgAEBERAMt3lM.ico HTTP/1.1" 404 6997 "
109.70.100.69 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconuFF9tD5bCgGj90xrh3FITUYhYg08fQde9zbu9R0iEP7wUvXYRF1RGv88IO0Hd4j8x5qtj.ico HTTP/1.1" 404 7039 "
185.220.101.31 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconjIJ2lasPylgvcvrjpHERV4Nnqzp5IGA4lSx7zi7WcnCWdVXJuGt4yGY5tqg531SCGVUTAzWjIWYF9kr48h4AFv6VV.ico HTTP/1.1" 404 7059 "
109.70.100.70 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconT3AcBfQvdnLbW08azhOgke0yq1jHR8q0fISjutOZvgtXadz8obIURp2aQSSZ0q1CfiyHnuYqI8rmmoBdd.ico HTTP/1.1" 404 7045 "
194.26.192.142 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconzoW1w07ZoUqxmBkEIHJv5jzCgbFOWKJTUTpZS4W5CY1oqgdfojNZu1zudHDnOsHxnAXxNp7M0f3f1sNhR2KSooOe0Qj.ico HTTP/1.1" 404 7058 "
185.220.101.8 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-favicon8STVAnwGxmx7VW4rUJkV9IoC2jD4x9ltMpBj0RZ8IKBnc9BRBTmo4aTpj.ico HTTP/1.1" 404 7024 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0 TO-Browser/TOB7.124.0.305_01"185.220.101.96 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconxNuDWxvSEf3wCFV3llcZm6Wj6W1aWkf5WqslxKi450DDE4peDXFKY3FVXhKCtJa31qTWAeD4RPrwXW2vid7qr0uJcFVB84rKJs7Df0AM9sbOccF1WOUtOdhMIGSqiPbi3.ico HTTP/1.1" 404 7097 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (iPhone; CPU iPhone OS 16_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1"104.244.73.193 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconAoHOMMhD4801Lh06VTFYnjZoYG3Au5ZrDLdCBEW0HxMUtPQKIqMK3fwlGqKT36ytQCCvrbiYsJLGv7rW.ico HTTP/1.1" 404 7054 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/117.0.5938.0 Safari/537.36"185.129.61.10 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconNVQ3YisoETOoOqK8XSC7utsgtzr619O40akV2ZKwsbup8WXoTOBPVJSETyHrJF4Yuir2IuJHoQOVsUSly.ico HTTP/1.1" 404 7050 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/103.0.5060.114 Safari/537.36"193.189.100.202 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconMhnD3FUjYyeqFGhazbNaXhBbtNDYn7XZ8jCBKJxosoe3vW.ico HTTP/1.1" 404 7014 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (iPhone; CPU iPhone OS 16_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Mobile/15E148 Safari/604.1"185.220.101.12 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconkiHdGVdVnQUybIx0pQQzYyDR2D9kJBJaDcjRHD8jIVG2Io41FpnI.ico HTTP/1.1" 404 7023 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/123.0.6312.123 Safari/537.36"109.70.100.3 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconpvOiviIr94vX44CJIz2wZWISunwh8o01q2txtm4VHnYjBIPz2ykZQ3FQfCZDfu.ico HTTP/1.1" 404 7029 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) GSA/308.0.615969171 Mobile/15E148 Safari/604.1"185.220.100.252 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconTa7p7gLqRYlLoBCpgJz2usI666IiO7w8XmdTlyVtyOZvfdq4jN0xQwYKrKXzhQz4YICRjq9x1emkhHWUGKFMxAHhbpsTT0Gz.ico HTTP/1.1" 404 7067 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"185.220.101.102 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconnN16o0OHfhUBpdx8WgAEBERAMt3lM.ico HTTP/1.1" 404 6997 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15"109.70.100.69 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconuFF9tD5bCgGj90xrh3FITUYhYg08fQde9zbu9R0iEP7wUvXYRF1RGv88IO0Hd4j8x5qtj.ico HTTP/1.1" 404 7039 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (iPad; CPU OS 15_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6,2 Mobile/15E148 Safari/604.1"185.220.101.31 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconjIJ2lasPylgvcvrjpHERV4Nnqzp5IGA4lSx7zi7WcnCWdVXJuGt4yGY5tqg531SCGVUTAzWjIWYF9kr48h4AFv6VV.ico HTTP/1.1" 404 7059 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"109.70.100.70 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconT3AcBfQvdnLbW08azhOgke0yq1jHR8q0fISjutOZvgtXadz8obIURp2aQSSZ0q1CfiyHnuYqI8rmmoBdd.ico HTTP/1.1" 404 7045 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1"194.26.192.142 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-faviconzoW1w07ZoUqxmBkEIHJv5jzCgbFOWKJTUTpZS4W5CY1oqgdfojNZu1zudHDnOsHxnAXxNp7M0f3f1sNhR2KSooOe0Qj.ico HTTP/1.1" 404 7058 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1.2 Mobile/15E148 Safari/604.1"185.220.101.8 - - [07/Feb/2025:07:49:55 +0100] "GET /styles/default/xenforo/xenforo-favicon8STVAnwGxmx7VW4rUJkV9IoC2jD4x9ltMpBj0RZ8IKBnc9BRBTmo4aTpj.ico HTTP/1.1" 404 7024 "
Ссылка скрыта от гостей
" "Mozilla/5.0 (Linux; Android 7.0; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4695.0 Mobile Safari/537.36 Chrome-Lighthouse"Идем в /var/log/nginx посмотрим сколько бомжик отправил запросов на наш сервер.
cat access.log | wc -l
11165004
Неудивительно, что наш ресурс был недоступен.
logrotate -f /etc/logrotate.d/nginx
Очистим логи. Зачем нам 11 миллионов бесполезной информации. Перед выполнением этой операции не забудьте отключить nginx, если вы под атакой. Теперь осталось запретить ему стучать напрямую по нашему ip.
Код:
ufw allow from 103.21.244.0/22 to any port 443
ufw allow from 103.21.244.0/22 to any port 80
Добавляем сюда пулл айпи адресов вашего CDN, я использую CF:
Ссылка скрыта от гостей
После этого мой сайт заработал и злоумышленник перестал vCPU нагружать=)
5. Убедитесь, что у вас не торчат наружу порты или файлы в которых конфиденциальная информация например .env или .git.
6. Поставьте MFA на аккаунт администратора.
После проделанных действий атака частично остановилась. Теперь вместо миллионов запросов он отправлял пару штучек, поскольку средств на пркоси у него нет, мы просто взяли заблокировали айпи злоумышленника.
ufw deny from 45.148.10.111
Код:
ufw deny from 172.70.57.196
ufw deny from 45.84.107.33
Также в дополнение хотелось бы рассказать, что в качестве CDN ранее мы использовали stormwall.pro. Хороший вещь, поддержка отвечает частенько. Но пришлось отказаться из-за стоимости, пока такая защита не нужна=)
Продолжение выйдет, когда нас продолжат атаковать.