Цитата | ||||
---|---|---|---|---|
написал:
|
15.05.2025 16:13:56
|
|||||||
|
|
18.05.2025 21:46:04
|
|||
|
|
18.05.2025 22:07:48
Сейчас посмторел логи, хареры не унимаются...
194.190.153.24 - - [18/May/2025:21:11:17 +0300] "POST /bitrix/admin/esol_import_excel_cron_settings.php 194.190.153.24 - - [18/May/2025:21:11:17 +0300] "POST /bitrix/admin/esol_export_excel_cron_settings.php 194.190.153.24 - - [18/May/2025:21:11:17 +0300] "POST /bitrix/admin/esol_import_xml_cron_settings.php 194.190.153.24 - - [18/May/2025:21:11:18 +0300] "POST /bitrix/admin/esol_export_xml_cron_settings.php 194.190.153.24 - - [18/May/2025:21:11:19 +0300] "POST /bitrix/admin/kda_import_excel_cron_settings.php 194.190.153.24 - - [18/May/2025:21:11:20 +0300] "POST /bitrix/admin/kda_export_excel_cron_settings.php 194.190.153.24 - - [18/May/2025:21:11:20 +0300] "POST /bitrix/admin/esol_allimportexport_cron_settings.php 194.190.153.24 - - [18/May/2025:21:11:23 +0300] "POST /bitrix/admin/esol_massedit_profile.php 194.190.153.24 - - [18/May/2025:21:11:24 +0300] "GET /6940ecae5880.php Лично у меня ломали Битрикс с самыми последними обновлениями решений и платформы, для себя проблему решил кардинально - помимо фильтрации в nginx от греха подальше удалил оригинальный модуль от esol и вместо него установил переимнованый, в результатее имеем например /bitrix/admin/esoool_import_xml_cron_settings.php и хакеры лупят в пустоту... |
|
|
|
19.05.2025 08:07:11
И что довольно важно, в секции server выше !!! всех location желательно прописать следующее:
# block SQL injections set $block_sql_injections 0; if ($query_string ~ "uni on.*select.*\(") {set $block_sql_injections 1;} if ($query_string ~ "union.*all.*sel ect.*") {set $block_sql_injections 1;} if ($query_string ~ "concat.*\(") {set $block_sql_injections 1;} if ($block_sql_injections = 1) {return 444;} # block base64 decode if ($query_string ~* "(file_put_contents|file_get_contents|base64_decode|js_error.txt|base64_|fwrite)") {return 444;} if ($http_referer ~* "(file_put_contents|file_get_contents|base64_decode|js_error.txt|base64_|fwrite)") {return 444;} if ($request_body ~* "(file_put_contents|file_get_contents|base64_decode|js_error.txt|base64_|fwrite)") {return 444;} # block file injections set $block_file_injections 0; if ($query_string ~ "[a-zA-Z0-9_]=http://") {set $block_file_injections 1;} if ($query_string ~ "[a-zA-Z0-9_]=(\.\.//?)+") {set $block_file_injections 1;} if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") {set $block_file_injections 1;} if ($block_file_injections = 1) {return 444;} # block common exploits set $block_common_exploits 0; if ($query_string ~ "(<|%3C).*script.*(>|%3E)") {set $block_common_exploits 1;} if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") {set $block_common_exploits 1;} if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") {set $block_common_exploits 1;} if ($query_string ~ "proc/self/environ") {set $block_common_exploits 1;} if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") {set $block_common_exploits 1;} if ($query_string ~ "base64_(en|de)code\(.*\)") {set $block_common_exploits 1;} if ($block_common_exploits = 1) {return 444;} Подобный конфиг не нов, но в тех что видел в случае атаки сервер отдает атакующему 403 ошибку, я же прописал 444 - при выполнении условий соединение закрывается без отправки данных клиенту, дабы хакеры не получали никакой инфы от атакуемого сервера |
|
|
|
19.05.2025 08:13:29
Годные замечания. Юрий Олейников, спасибо!
|
|
|
|
19.05.2025 08:14:43
И что крайне желательно - если нет зарубежных клиентов, то для уменьшения вектора атак лучше заблокировать весь трафик из за границы, в nginx для этого уже имеется модуль ngx_http_geoip2_module который на ура режет все запросы не из Роcсии, настройки минимальные, если кому будет интерсно опубликую для dedian / ubuntu
|
|
|
|
19.05.2025 08:27:07
|
|
|
|
19.05.2025 08:27:41
Правда сейчас довольно много народу под VPN сидят... Их можно потерять
|
|
|
|
19.05.2025 09:24:37
Собственно сабж: есть такая замечательная компания как MaxMind сайт sudo apt install -y nginx-full ну а дальше дело техники, постараюсь прописать как можно понятней ------------------------------------------------------------------------------------------------------------------ создать каталог для базы sudo mkdir /usr/share/geoip2 ------------------------------------------------------------------------------------------------------------------- создать скрипт загрузки базы, ввести в терминале sudo nano /usr/local/bin/update_geoip2.sh и в открывшемся окне прописать #!/bin/bash # mkdir /usr/share/geoip2/tmp/ wget cp /usr/share/geoip2/tmp/GeoLite2-Country.mmdb /usr/share/geoip2/GeoLite2-Country.mmdb rm -r /usr/share/geoip2/tmp/ systemctl restart nginx -------------------------------------------------------------------------------------------------------------------------------- сделать соданный скрипт исполняемым sudo chmod +x /usr/local/bin/update_geoip2.sh -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- чтобы удостовериться что все работает произвести ручной запуск скрипта, в папке /usr/share/geoip2 должа появиться база sudo /usr/local/bin/update_geoip2.sh если все ок, то добавить в cron sudo crontab -e следующую запись загружающую свежую базу каждый день скажем в 6 утра 0 6 * * * /usr/local/bin/update_geoip2.sh -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- далее открыть основной конфиг nginx и после # Virtual Host Configs прописать следующее sudo nano /etc/nginx/nginx.conf # geeoip geo $lan-ip { default no; 192.168.0.1/10 yes; } geoip2 /usr/share/geoip2/GeoLite2-Country.mmdb { $geoip2_data_country_iso_code country iso_code; } map $geoip2_data_country_iso_code $allowed_country { default no; RU yes; } где первая часть разрешает доступ по локальной сети, если используется то прописать свои данные вместо 192.168.0.1/10 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ну и последнее, в конфиге сервера дописать вверху, выше всех location !!! следующее # geeoip2 if ($lan-ip = yes) {set $allowed_country yes;} if ($allowed_country = no) {return 444;} --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- После перезагрузить nginx командой sudo systemctl restart nginx и вуаля! |
||||
|
|
|||