Иногда бывает так, что виртуальные машины используются не по назначению и вовсе даже не их владельцами. Такие случаи мы замечаем и отрезаем бокс от внешнего мира, отключая ему сеть. Эта мера помогает остановить действия злоумышленника, сохранив при этом данные виртуальной машины.
Ваши сайты недоступны, к боксу не удается подключиться по сети, а в Панели управления — предупреждение?
Проверьте адрес электронной почты, который вы указали при регистрации. В момент отключения сети мы отправляем на него подробную информацию о причинах. Если письмо не удается найти — причина недоступности может быть вовсе не в наших ограничениях. Напишите нам — мы поможем разобраться.
Поиск причины и ее устранение
В первую очередь нужно найти причину и устранить ее.
Для поиска подключитесь к боксу по VNC удобным вам способом: можно прямо из Панели управления, а можно и через сторонние клиенты. Вот инструкция.
Мы понимаем, что некоторые решения, например, включающие в себя установку новых пакетов, доступны только с включенной сетью. Опишите нам план работ — предоставим доступ к боксу.
Рассмотрим несколько возможных причин ограничения работы сети.
Рассылка спама
Спам может быть разным, от безопасной (хоть и навязчивой) рекламы до мошеннических писем, ведущих к реальному ущербу.
Независимо от своего характера спам-рассылка ставит ваш IP-адрес под риск: он может попасть в черные списки почтовых IP-адресов. К IP-адресам, оказавшимся в списках, их владельцы принимают разные меры, начиная от помещения писем в папку «спам» ящиков, до отклонения писем вовсе. Несмотря на прекращение спам-рассылки, санкции будут применяться и к легитимным письмам.
Зачастую блокируется не один IP-адрес, а вся подсеть, что ставит под удар других клиентов.
Чтобы найти источник спама и пресечь его, изучите заголовки спам-письма, которое мы переслали вам. В поиске помогут журналы почтового сервера и веб-сервера, которые чаще всего хранятся в директории /var/log. Дальнейший путь к файлам и их имена могут различаться. Сопоставьте записи в журналах со временем отправки письма в его заголовках. Учтите, что часовой пояс в заголовке может отличаться от часового пояса, используемого в журналах.
Приведем несколько примеров того, с чем вы можете столкнуться. В разборе мы используем примеры из журналов exim и apache.
Взлом почтового ящика
Со временем отправки письма будет совпадать подобная запись в журнале:
2020-04-14 13:33:26 1jOIsg-0000Os-Js <= mailbox@site.ru H=(localhost) [94.140.192.2] P=esmtpa A=dovecot_plain:mailbox@site.ru S=638 id=783957c2-b887-6366-3ce0-945e0cd68fbb@site.ru
Обратите внимание на протокол, используемый при отправке — P=esmtpa – SMTP с авторизацией, и на информацию, следующую за ним: A=dovecot_plain:mailbox@site.ru — в этом фрагменте указано имя ящика, в котором авторизовался злоумышленник.
Чтобы устранить уязвимость:
- проверьте устройства, с которых работали с ящиком, антивирусом;
- измените пароль ящика.
Спам через скрипты
Письма могут отправляться не только из почтовых ящиков, но и с помощью скриптов. Запись в журнале будет выглядеть так:
2020-04-14 12:14:20 1jOHe8-0004oI-GK <= admin@box-41483 U=admin P=local S=846 id=efc24490529dd23507f35069a16ad79f@site.ru
Обратите внимание на используемый протокол — P=local.
Найдите в журнале веб-сервера соответствующую по времени запись и обратите внимание на URL, к которому поступил запрос, и на referer — страницу, с которой отправлен запрос. В зависимости от URL и referer потребуются разные действия.
Спам через форму регистрации
Записи в журнале почтового сервера соответствует такой запрос:
185.251.89.92 - - [14/Apr/2020:12:14:20 +0300] "POST /wp-login.php?action=register HTTP/1.0" 302 453 "http://site.ru/wp-login.php?action=register" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
Он направлен к скрипту авторизации: POST /wp-login.php?action=register
А при переходе по ссылке из referer — http://site.ru/wp-login.php?action=register — можно увидеть саму форму регистрации.
Установите на формы регистрации защиту от роботов – CAPTCHA, а уже зарегистрировавшихся ботов удалите вручную через панель администрирования. Если посетителям сайта не требуется регистрация, отключите эту возможность внутри сайта.
Форма комментариев или обратной связи
185.251.89.92 - - [14/Apr/2020:12:18:10 +0300] "POST /wp-comments-post.php HTTP/1.0" 302 794 "http://site.ru/?p=1" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
Запрос направлен к скрипту обработки комментариев: POST /wp-comments-post.php
В referer — страница, с которой он отправлен: http://site.ru/?p=1
185.251.89.92 - - [14/Apr/2020:12:11:08 +0300] "POST /feedback.php HTTP/1.0" 200 2512 "http://site.ru/contacts.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
Запрос поступил к скрипту feedback.php
А в referer — страница контактной информации: http://site.ru/contacts.html
Установите CAPTCHA на формы комментариев или обратной связи, либо отключите возможность отправки сообщений, если это не требуется.
Рассылка спама вредоносными скриптами
Записи в журнале почтового сервера соответствует запрос к скрипту, который не относится к скриптам сайта:
5.18.207.47 - - [14/Apr/2020:12:11:28 +0300] "POST /ihpwgn.php HTTP/1.1" 200 1157 "-" "curl/7.64.1"
Проверьте скрипт вручную или с помощью специальных программ, например ClamAV. Удалите вредоносный скрипт и замените скрипты сайта их версиями из дистрибутивов CMS или восстановите бокс из резервной копии.
Спамвертайзинг
Спамвертайзинг — это тоже спам-рассылка, но в ней рекламируется определенный интернет-ресурс.
Такое письмо не обязательно отправлено с вашего бокса, но в его тексте есть ссылка на ваш сайт.
Чтобы понять, как поступить, прочитайте письмо.
Если его отправляли вы, значит, письмо получил кто-то, кто вовсе не хотел его получать или забыл о том, что подписывался раньше. Избежать этого поможет правильное содержимое письма:
- Обращайтесь в письме персонально к получателю.
- Сообщайте в письме, что адресат получил его, так как ранее подписался на рассылку.
- Сообщайте в письме, каким образом можно отписаться от рассылки.
- Старайтесь при оформлении писем избегать стиля, используемого в спаме.
Время от времени проверяйте, что все адреса в базе существуют и их владельцы хотят получать рассылку. Не используйте базы адресов, полученные из открытых источников.
Если письмо отправили не вы, а текст письма никак не связан с вашим сайтом, проверьте, куда ведет ссылка. Злоумышленники взламывают сайты, размещают на них рекламную или фишинговую страницу и запускают спам-рассылку с созданной ссылкой из другого источника.
Проверьте ваш сайт на вирусы вручную или с помощью специальных программ, например ClamAV. Удалите вредоносный скрипт и замените скрипты сайта их версиями из дистрибутивов CMS или восстановите бокс из резервной копии.
Исходящий DDoS и другой подозрительный трафик
Ваш бокс стал частью ботнета для DDoS-атаки или сканирует порты других виртуальных машин.
Источником такой активности является не виртуальная машина в целом, а один или несколько скриптов. Чтобы найти их, примените один из способов.
Проверьте запущенные процессы с помощью утилит top, atop или ps. Часто источники подозрительной активности отличает высокое потребление памяти или CPU:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10034 admin 20 0 167092 80292 9721 R 99.7 5.4 1:03.46 3.03_config 9018 root 20 0 152004 73052 7676 R 30.8 3.6 0:00.93 spamd 1 root 20 0 159968 7708 5156 S 9.9 0.4 0:02.14 systemd 8997 root 20 0 96144 33240 5324 S 7.3 1.6 0:00.22 spamd
В примере здесь нежелательный процесс — 3.03_config, запущен пользователем admin.
Используйте lsof, netstat или ss для поиска процессов, запущенных на определенных портах или осуществляющих запросы к определенным адресам. Информация об адресе и порте — в письме, отправленном в момент блокировки сети. Используйте их для фильтрации вывода утилиты.
Например, известно, что соединения происходят с 1587 порта. Найдите с помощью nestat процесс, слушающий этот порт:
# netstat -tulpn | grep 1587 tcp 0 0 0.0.0.0:1587 0.0.0.0:* LISTEN 1464/3.03_config
Отобрать соединения по IP-адресу цели поможет утилита ss:
# ss -eputa | grep 141.8.193.210 tcp ESTAB 0 0 185.251.91.87:48074 141.8.193.210:ssh users:(("ssh",pid=17780,fd=3)) timer:(keepalive,119min,0) ino:145025 sk:6e <->
Аналогично для поиска можно воспользоваться lsof:
# lsof -i @141.8.193.210 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ssh 18017 root 3u IPv4 145799 0t0 TCP box-41569:48082->valhalla.from.sh:ssh (ESTABLISHED)
Этой же утилитой можно отобрать соединения по типу подключения:
# lsof -i :ssh COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1165 root 3u IPv4 20536 0t0 TCP *:ssh (LISTEN) sshd 1165 root 4u IPv6 20551 0t0 TCP *:ssh (LISTEN) ssh 18017 root 3u IPv4 145799 0t0 TCP box-41569:48082->valhalla.from.sh:ssh (ESTABLISHED)
Если источник найти не удалось, просканируйте виртуальную машину при помощи ClamAV или восстановите бокс из резервной копии.
Входящий DDoS
Ограничить доступ мы можем и в случае, если вы сами стали жертвой атаки. Наше отношение к ним и действия описаны в документе.
Действуйте по инструкции:
- Закажите выделенный IP-адрес.
- Воспользуйтесь услугами сервисов защиты от DDoS-атак.
Претензия Роскомнадзора
При поступлении уведомления от Роскомнадзора мы как провайдер обязаны ограничить доступ к нарушающей странице. Поскольку доступа к содержимому бокса мы не имеем, делаем это единственным способом — отключаем сеть бокса.
Восстановить доступность можно легко: подключитесь к боксу и удалите проблемную страницу.
Профилактика
Остановка в работе проекта всегда неприятна. Что сделать, чтобы такое не повторилось?
- Используйте сложные пароли, содержащие 15-20 символов, включая символы верхнего регистра, цифры, специальные символы.
- Не храните пароли в браузере и других программах.
- Меняйте пароли время от времени.
- Настройте межсетевой экран, оставив открытыми только нужные порты, а неиспользуемые закрыв.
- Замените порты сервисов на нестандартные (например, 746 вместо 22 для SSH).
- Используйте fail2ban, блокируя попытки доступа налету.
- Установите антивирусное ПО (например, ClamAV) и регулярно запускайте проверку.
- Своевременно обновляйте систему, пакеты, CMS и компоненты сайта.