Что было на прошлой неделе, пришло письмо от Nic.ru, что с нашего IP адреса арендуемого физического сервера (Supermicro 5017C-MTF, CPU Xeon E3-1240v2 3.4GHz, RAM 8Gb, SATA 1Tb x 2, RAID) на котором установлена операционная система Ubuntu 18.04 Server + основной сайт компании и поддомены сайтов регионов идут жалобы что с него осуществляется несанкционированная деятельность по отношению к узлам.

Ниже содержимое письма от dedicated@nic.ru

Здравствуйте.

На ваш сервер поступают жалобы в связи с вредоносной активностью.

Вам необходимо проверить сервер антивирусным программным обеспечением, например, maldet, удалить вредоносные скрипты и устранить причины жалоб в течение 10 дней.

В противном случае, нам придется заблокировать IP-адрес вашего сервера.

Дополнительная информация:

Your IP 80.92.47.166 has been filtered due to brute force during last days please check those IPs
it was targeting our ips (list is limited to 20) :
ip: 46.30.243.11
ip: 46.30.243.14
ip: 46.30.243.18
ip: 46.30.243.24
ip: 46.30.243.28
ip: 46.30.243.31
ip: 46.30.243.41
ip: 46.30.243.43
ip: 46.30.243.48
ip: 46.30.243.55
ip: 46.30.243.58
ip: 46.30.243.77
ip: 46.30.243.81
ip: 46.30.243.88
ip: 46.30.243.93
ip: 46.30.243.94
ip: 46.30.243.101
ip: 46.30.243.117
ip: 46.30.243.121
ip: 46.30.243.122
it was targeting this ports (list is limited to 10):
port: 80
port: 1928
port: 2460
port: 4241
port: 4305
port: 5867
port: 6022
port: 8818
port: 8856
port: 9256
if need more info please contact at abuse@serverplan.com
Connection Details, line limited in Connection Logs, line sampled by ip and port
Feb 21 20:16:11 SRC=80.92.47.166 DST=46.30.243.197 PROTO=TCP SPT=443 DPT=16495 Feb 21 20:17:02 SRC=80.92.47.166 DST=46.30.243.140 PROTO=TCP SPT=443 DPT=28488 Feb 21 20:17:02 SRC=80.92.47.166 DST=46.30.243.140 PROTO=TCP SPT=443 DPT=30989 Feb 21 20:17:12 SRC=80.92.47.166 DST=46.254.33.121 PROTO=TCP SPT=443 DPT=48609 Feb 21 20:17:15 SRC=80.92.47.166 DST=46.254.33.227 PROTO=TCP SPT=443 DPT=19345 Feb 21 20:17:15 SRC=80.92.47.166 DST=46.254.33.227 PROTO=TCP SPT=443 DPT=19345 Feb 21 20:17:17 SRC=80.92.47.166 DST=46.30.243.230 PROTO=TCP SPT=443 DPT=18854 Feb 21 20:17:36 SRC=80.92.47.166 DST=46.254.33.229 PROTO=TCP SPT=443 DPT=22982 Feb 21 20:17:42 SRC=80.92.47.166 DST=46.30.243.157 PROTO=TCP SPT=443 DPT=30921 Feb 21 20:17:45 SRC=80.92.47.166 DST=46.254.33.229 PROTO=TCP SPT=443 DPT=22982 Feb 21 20:17:50 SRC=80.92.47.166 DST=46.30.243.31 PROTO=TCP SPT=443 DPT=27427 Feb 21 20:17:56 SRC=80.92.47.166 DST=46.254.33.190 PROTO=TCP SPT=443 DPT=61423 Feb 21 20:17:56 SRC=80.92.47.166 DST=46.254.33.190 PROTO=TCP SPT=443 DPT=61423 Feb 21 20:17:56 SRC=80.92.47.166 DST=46.254.33.190 PROTO=TCP SPT=443 DPT=61423 Feb 21 20:17:56 SRC=80.92.47.166 DST=46.254.33.190 PROTO=TCP SPT=443 DPT=61423 Feb 21 20:17:56 SRC=80.92.47.166 DST=46.254.33.190 PROTO=TCP SPT=443 DPT=61423 Feb 21 20:18:02 SRC=80.92.47.166 DST=46.30.243.140 PROTO=TCP SPT=443 DPT=30989 Feb 21 20:18:06 SRC=80.92.47.166 DST=46.254.33.19 PROTO=TCP SPT=443 DPT=45945 Feb 21 20:18:13 SRC=80.92.47.166 DST=46.254.33.80 PROTO=TCP SPT=443 DPT=40065 Feb 21 20:18:17 SRC=80.92.47.166 DST=46.30.243.230 PROTO=TCP SPT=443 DPT=18854 Feb 21 20:11:43 SRC=80.92.47.166 DST=89.46.224.14 PROTO=TCP SPT=443 DPT=51603 Feb 22 15:24:13 SRC=80.92.47.166 DST=93.95.223.125 PROTO=TCP SPT=443 DPT=30693 Feb 22 15:24:36 SRC=80.92.47.166 DST=185.81.3.187 PROTO=TCP SPT=443 DPT=17332 Feb 22 15:24:36 SRC=80.92.47.166 DST=185.81.3.187 PROTO=TCP SPT=443 DPT=25186 Feb 22 15:24:50 SRC=80.92.47.166 DST=93.95.217.199 PROTO=TCP SPT=443 DPT=1928 Feb 22 15:25:00 SRC=80.92.47.166 DST=46.254.35.253 PROTO=TCP SPT=443 DPT=42343 Feb 22 15:35:05 SRC=80.92.47.166 DST=93.95.217.146 PROTO=TCP SPT=443 DPT=37958 Feb 22 15:35:09 SRC=80.92.47.166 DST=185.81.3.48 PROTO=TCP SPT=443 DPT=17398 Feb 22 15:35:22 SRC=80.92.47.166 DST=185.81.3.211 PROTO=TCP SPT=443 DPT=44942 Feb 22 15:35:23 SRC=80.92.47.166 DST=93.95.217.184 PROTO=TCP SPT=443 DPT=6022 Feb 22 15:35:29 SRC=80.92.47.166 DST=93.95.217.78 PROTO=TCP SPT=443 DPT=37174 Feb 22 15:35:30 SRC=80.92.47.166 DST=93.95.217.78 PROTO=TCP SPT=443 DPT=37174 Feb 22 15:35:32 SRC=80.92.47.166 DST=185.81.3.142 PROTO=TCP SPT=443 DPT=25421 Feb 22 15:35:33 SRC=80.92.47.166 DST=46.254.35.176 PROTO=TCP SPT=443 DPT=8856 Feb 22 15:35:33 SRC=80.92.47.166 DST=93.95.217.11 PROTO=TCP SPT=443 DPT=34137 Feb 22 15:35:34 SRC=80.92.47.166 DST=185.81.3.57 PROTO=TCP SPT=443 DPT=33319 Feb 22 15:35:35 SRC=80.92.47.166 DST=185.81.3.57 PROTO=TCP SPT=443 DPT=33319 Feb 22 15:35:39 SRC=80.92.47.166 DST=46.254.35.179 PROTO=TCP SPT=443 DPT=34507 Feb 22 15:35:41 SRC=80.92.47.166 DST=185.81.3.95 PROTO=TCP SPT=443 DPT=26852 Feb 22 15:35:41 SRC=80.92.47.166 DST=185.81.3.95 PROTO=TCP SPT=443 DPT=26852 Feb 22 15:35:43 SRC=80.92.47.166 DST=185.81.3.121 PROTO=TCP SPT=443 DPT=14070 Feb 22 13:46:03 SRC=80.92.47.166 DST=46.28.0.33 PROTO=TCP SPT=443 DPT=57097 Feb 22 13:42:04 SRC=80.92.47.166 DST=46.254.33.147 PROTO=TCP SPT=443 DPT=35269 Feb 22 13:42:17 SRC=80.92.47.166 DST=46.254.33.194 PROTO=TCP SPT=443 DPT=27309 Feb 22 13:42:17 SRC=80.92.47.166 DST=46.254.33.194 PROTO=TCP SPT=443 DPT=61675 Feb 22 13:42:42 SRC=80.92.47.166 DST=46.30.243.11 PROTO=TCP SPT=443 DPT=38538 Feb 22 13:42:42 SRC=80.92.47.166 DST=46.30.243.11 PROTO=TCP SPT=443 DPT=47833 Feb 22 13:43:04 SRC=80.92.47.166 DST=46.254.33.2 PROTO=TCP SPT=443 DPT=42794 Feb 22 13:43:15 SRC=80.92.47.166 DST=46.30.243.18 PROTO=TCP SPT=443 DPT=33818 Feb 22 13:43:33 SRC=80.92.47.166 DST=46.254.33.131 PROTO=TCP SPT=443 DPT=8818 Feb 22 13:53:21 SRC=80.92.47.166 DST=46.254.33.25 PROTO=TCP SPT=443 DPT=16570 Feb 22 13:53:31 SRC=80.92.47.166 DST=46.30.243.81 PROTO=TCP SPT=443 DPT=14519 Feb 22 13:53:31 SRC=80.92.47.166 DST=46.30.243.81 PROTO=TCP SPT=443 DPT=14519 Feb 22 13:53:31 SRC=80.92.47.166 DST=46.254.33.101 PROTO=TCP SPT=443 DPT=55477 Feb 22 13:53:32 SRC=80.92.47.166 DST=46.254.33.101 PROTO=TCP SPT=443 DPT=55477 Feb 22 13:53:38 SRC=80.92.47.166 DST=46.254.33.220 PROTO=TCP SPT=443 DPT=55932 Feb 22 13:53:38 SRC=80.92.47.166 DST=46.254.33.220 PROTO=TCP SPT=443 DPT=55932 Feb 22 13:53:41 SRC=80.92.47.166 DST=46.254.33.103 PROTO=TCP SPT=443 DPT=35157 Feb 22 13:53:53 SRC=80.92.47.166 DST=46.254.33.43 PROTO=TCP SPT=443 DPT=61978 Feb 22 13:53:54 SRC=80.92.47.166 DST=46.30.243.88 PROTO=TCP SPT=443 DPT=10627 Feb 22 13:53:55 SRC=80.92.47.166 DST=46.30.243.122 PROTO=TCP SPT=443 DPT=64368 Feb 22 13:54:02 SRC=80.92.47.166 DST=46.254.33.205 PROTO=TCP SPT=47154 DPT=80
——
С уважением,
Константин Осин
Департамент по работе с клиентами
RU-CENTER Group
https://nic.ru

Вот те на, почему так произошло, а потому что системой занимаюсь я, но к ней нет предпосылок что ее взломали:

  • Доступ по SSH только по ключам (см заметку: "Изучаем переход ключей SSH на Ed25519")
  • Доступ по SSH только с авторизованных IP адресов
  • Доступ к FTP и Passive FTP также только с авторизованных IP адресов

а во вне доступно только 80/tcp & 443/tcp — а это в нашем случае Web-сервис где в качестве сайта(ов) используется Bitrix, за него отвечают подрядчики, а подрядчиков, обслуживающих сайт(сайты) у нас с момента как я работаю в этой конторе было несколько.

Вот чем плохи подрядчики — они меняются, что они делают порой не понятно, все должно делаться исключительно собственными силами, учить своих специалистов.

Так ладно.

Шаг №1: Захожу на сайт https://ekzorchik.ru/bitrix со своими административными правами и смотрю журнал вторжений: Настройки - Проактивная защита - Журнал Вторжений

в поле "Событие" вписываю "Попытка атаки через" и нажимаю "Найти", вижу отсортированные попытки

Журна событий в Bitrix отображающий "Попытка атаки через".

Уже что-то, полистав журнал событий как временная мера прихожу к выводу, что нужно каким-либо способом колонку IP экспортировать. И экспортировать можно весь журнал событий в Excel, такой функционал в нашем Bitrix есть, делается следующим образом:

в правом верхнем углу чуть ниже есть значок шестеренки, нажав на который выбираем элемент меню "Excel"

Экспортируем "Журнал вторжений" в Excel

когда выбрал элемент меню "Excel" через браузер автоматически скачивается лог: event_log.xls

Отчет в Excel представляет из себя таблицу:

Так выглядит "Журнал вторжений" в Excel.

Ну а тут все просто, применяю форматирование и колонку "IP" копирую в текстовый файл, к примеру log.txt

Шаг №2: Внедряю к серверу с осью Ubuntu 18.04 и к настроенному брандмауэру функционал блокировки злоумышленников с которых возникают попытки несанкционированного подключения с целью проэксплуатировать какую либо уязвимость в функционале сайта под Bitrix. А функционал блокировки будет строиться на базе заметки "GEO блокировка через firewalld на Ubuntu 22.04", но перед этим сформированный log.txt нужно подготовить:

Удалить повторяющиеся IP-адреса

nano log.txt
wc -l log.txt
307 log.txt - было адресов
cat log.txt | uniq -u > wanblock.zone
wc -l wanblock.zone
wanblock.zone - стало адресов после удаления повторяющихся
sudo firewall-cmd --permanent --new-ipset=wanblock.zone --type=hash:net --option=family=inet --option=hashsize=4096 --option=maxelem=200000
sudo firewall-cmd --zone=drop --ipset=wanblock.zone --add-entries-from-file=/home/ekzorchik/wanblock.zone --permanent
sudo firewall-cmd --permanent --zone=drop --add-source="ipset:wanblock.zone"

если после изменения /home/ekzorchik/wanblock.zone вы опять делаете
sudo firewall-cmd --permanent --zone=drop --add-source="ipset:wanblock.zone"
Warning: ALREADY_ENABLED: ipset:wanblock.zone
success

то изменения вносятся, т.е. ваш ipset:wanblock.zone дополняется

На заметку: Стоит осторожно подходить к процедуре добавления в брандмауэр списка адресов так как в нем может содержатся Ваш WAN-IP если кто-либо из сам попытался проэксплуатировать что-либо из зафиксированного журнала событий, чтобы не заблокировать самого себя.

Чтобы удалить из списка IP-адрес можно просто проверить что он там есть, а потом через текстовый редактор удалить:

sudo bash -c "cat /etc/firewalld/ipsets/wanblock.zone.xml"
<?xml version="1.0" encoding="utf-8"?>
<ipset type="hash:net">
<option name="family" value="inet"/>
<option name="hashsize" value="4096"/>
<option name="maxelem" value="200000"/>
<entry>103.14.26.206/32</entry>
<entry>165.22.212.100/32</entry>
<entry>52.167.144.176/32</entry>
<entry>89.151.179.147/32</entry>
<entry>40.77.167.53/32</entry>
<entry>66.249.64.230/32</entry>
<entry>5.161.97.117/32</entry>
<entry>94.180.250.151/32</entry>
</ipset>
sudo nano /etc/firewalld/ipsets/wanblock.zone.xml
sudo firewall-cmd --reload

Короче, я предпринял первые шаги, которые сперва увидел, по итогу связавшись с поддержкой nic.ru там отметили, что активность прошла.

Но этого мало как по мне.

Шаг №3: На функционале Bitrix насколько я знаю есть:

Настройка - Проактивная защита - Сканер безопасности

  • Запустил сканирование

Настройка - Проактивная защита - Веб-антивирус

  • Включил

Шаг №4: Поставил на Ubuntu 18.04 Server антивирусное программное обеспечение в лице утилиты maldet. Запустил полное сканирование каталога /var/www/html — никаких вредоносных файлов либо кода не выявлено:

Проверка прошла, сканирование maldet никаких вредоносных файлов либо кода не выявило.

Все отчеты чистые.

HOST:      ekzorchik.ru

SCAN ID:   240227-1819.18544

STARTED:   Feb 27 2024 18:19:50 +0300

COMPLETED: Feb 27 2024 19:39:07 +0300

ELAPSED:   4757s [find: 10s]

PATH:          /var/www/html/ekzorchik

TOTAL FILES:   103966

TOTAL HITS:    0

TOTAL CLEANED: 0

Шаг №5: Совместно с подрядчиками выявили файлы которые удалили:

  • restore.php.1 - скрипт восстановления из бэкапа. При восстановлении из бэкапа в конце сам битрикс его должен удалять в целях безопасности. Почему он там остался - вопрос.
  • index_1.php - phpinfo(); - Тех. информация о конфигурации PHP в системе
  • i.php - phpinfo(); - Тех. информация о конфигурации PHP в системе
  • siteekbekzorchikru.php -  Тех. информация о конфигурации PHP в системе
  • "fokin.php" "fdg.php" "f_auth_bitrix.php" - был вызов функции для авторизации под админом
  • "admin.php" - был вызов функции для авторизации под админом, но сам код был закомментирован
  • в "adminer" - был скрипт по управлению БД (с требованием доступа)

Список удаленных файлов, которые вызвали подозрение:

  • /var/www/html/ekzorchik_2022/adminer
  • /var/www/html/ekzorchik_2022/bitrix_server_test.php
  • /var/www/html/ekzorchik_2022/tst.php — phpinfo();
  • /var/www/html/ekzorchik_2022/index_1.php — phpinfo();
  • /var/www/html/ekzorchik_2022/admin.php
  • /var/www/html/ekzorchik/adminer
  • /var/www/html/ekzorchik/admin.php
  • /var/www/html/ekzorchik_old/adminer
  • /var/www/html/ekzorchik_old/admin.php
  • /var/www/html/ekzorchik_old/tesst.php
  • /var/www/html/baikal/siteekbekzorchikru.php — phpinfo();
  • /var/www/html/baikal/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/chel/pi.php — phpinfo();
  • /var/www/html/chel/siteekbekzorchikru.php — phpinfo();
  • /var/www/html/chel/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/ekb/admin.php
  • /var/www/html/ekb/siteekbekzorchikru.php — phpinfo();
  • /var/www/html/ekb/te.php — phpinfo();
  • /var/www/html/ekb/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/ekb/restore.php.1
  • /var/www/html/kazan/restore.php.1
  • /var/www/html/kazan/siteekbekzorchikru.php
  • /var/www/html/kazan/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/kazan/restore.php.1
  • /var/www/html/khabarovsk/restore.php.1
  • /var/www/html/khabarovsk/siteekbekzorchikru.php
  • /var/www/html/khabarovsk/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/krasnodar/restore.php.1
  • /var/www/html/krasnodar/siteekbekzorchikru.php
  • /var/www/html/krasnodar/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/perm/restore.php.1
  • /var/www/html/perm/siteekbekzorchikru.php
  • /var/www/html/perm/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/rostov/restore.php.1
  • /var/www/html/rostov/siteekbekzorchikru.php
  • /var/www/html/rostov/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/shop/i.php — phpinfo();
  • /var/www/html/spb/restore.php.1
  • /var/www/html/spb/siteekbekzorchikru.php
  • /var/www/html/spb/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/spb/fokin.php
  • /var/www/html/test/adminer
  • /var/www/html/test/admin.php
  • /var/www/html/test/index_1.php — phpinfo();
  • /var/www/html/test/tst.php — phpinfo();
  • /var/www/html/test/auth/fdg.php
  • /var/www/html/testshop/tst.php — phpinfo();
  • /var/www/html/tomsk/restore.php.1
  • /var/www/html/tomsk/pi.php
  • /var/www/html/tomsk/siteekbekzorchikru.php
  • /var/www/html/tomsk/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/volgograd/restore.php.1
  • /var/www/html/volgograd/siteekbekzorchikru.php
  • /var/www/html/volgograd/test.php — отправка почты (leonov_andrew@mail.ru)
  • /var/www/html/volgograd/f_auth_bitrix.php
  • /var/www/html/volgograd/pma
  • /var/www/html/ekb/20210314.tar.gz

Вывод: все что для теста и после какого-либо переноса должно чистится, а вообще для теста использовать тестовую среду, на боевом ничего не тестировать.

По итогу еще через несколько дней написали в поддержку nic.ru — пришел ответ, что уже несколько дней подозрительной активности и писем на наш IP нет. Делаем вывод, что мы все почистили, надеюсь правда.

А так, теперь я периодически провожу выгрузку в Excel и заношу в блок лист источника, который зафиксировался в Bitrix отчета.

На этом данный кейс успешно завершен, с уважением автор блога Олло Александр aka ekzorchik.