@hesy

Как обезопасить виртуальный сервер от хакерских атак?

UPD: хостер ответил, что оказывается это с моего сервера кто-то там что-то брутил (по-моему их сеть).
Вопрос, как это вообще возможно? Они отказываются разблокировать сервер.
Мне кажется это была какая-то замануха, сервер 2 цп, 2 ram за 3 евро в месяц, чтобы через пару дней после покупки заблокировать под глупым предлогом.

-------------------------------------------
Недавно приобрел виртуальный сервер, никогда до этого не пользовался им, только обычные хостинги.

Сегодня мне хостер прислал сообщение с логами, что кто-то брутил мой сервер поэтому они в цели безопасности остановили его.

Сообщение с логами
An attempt to brute-force account passwords over SSH/FTP by a machine in your domain or in your network has been detected. Attached are the host who attacks and time / date of activity. Please take the necessary action(s) to stop this activity immediately. If you have any questions please reply to this email.

Host of attacker: xx.xx.xxx.xxx => xx.xx.xxx.xxx => xx.xx.xxx.xxx
Responsible email contacts: abuse@pq.hosting
Attacked hosts in our Network: 77.75.251.232, 178.250.9.139, 37.228.156.166, 85.158.183.41, 178.250.15.226, 178.250.9.27

Logfile entries (time is CE(S)T):
Fri Jun 19 15:00:40 2020: user: root service: ssh target: 37.228.156.166 source: xx.xx.xxx.xxx
Fri Jun 19 15:00:26 2020: user: root service: ssh target: 178.250.9.139 source: xx.xx.xxx.xxx
Fri Jun 19 14:58:24 2020: user: root service: ssh target: 178.250.15.226 source: xx.xx.xxx.xxx
Fri Jun 19 14:58:20 2020: user: root service: ssh target: 77.75.251.232 source: xx.xx.xxx.xxx
Fri Jun 19 14:58:19 2020: user: root service: ssh target: 85.158.183.41 source: xx.xx.xxx.xxx
Fri Jun 19 14:57:05 2020: user: root service: ssh target: 178.250.9.27 source: xx.xx.xxx.xxx
Fri Jun 19 14:56:20 2020: user: test10 service: ssh target: 37.228.156.166 source: xx.xx.xxx.xxx
Fri Jun 19 14:56:06 2020: user: test10 service: ssh target: 178.250.9.139 source: xx.xx.xxx.xxx
Fri Jun 19 14:54:19 2020: user: test10 service: ssh target: 85.158.183.41 source: xx.xx.xxx.xxx
Fri Jun 19 14:54:14 2020: user: test10 service: ssh target: 178.250.15.226 source: xx.xx.xxx.xxx
Fri Jun 19 14:54:10 2020: user: test10 service: ssh target: 77.75.251.232 source: xx.xx.xxx.xxx
Fri Jun 19 14:52:55 2020: user: test10 service: ssh target: 178.250.9.27 source: xx.xx.xxx.xxx
Fri Jun 19 14:52:10 2020: user: ubuntu service: ssh target: 37.228.156.166 source: xx.xx.xxx.xxx
Fri Jun 19 14:52:06 2020: user: ubuntu service: ssh target: 178.250.9.139 source: xx.xx.xxx.xxx
Fri Jun 19 14:50:19 2020: user: ubuntu service: ssh target: 85.158.183.41 source: xx.xx.xxx.xxx
Fri Jun 19 14:50:14 2020: user: ubuntu service: ssh target: 178.250.15.226 source: xx.xx.xxx.xxx
Fri Jun 19 14:50:10 2020: user: ubuntu service: ssh target: 77.75.251.232 source: xx.xx.xxx.xxx
Fri Jun 19 14:48:55 2020: user: ubuntu service: ssh target: 178.250.9.27 source: xx.xx.xxx.xxx
Fri Jun 19 14:48:10 2020: user: test2 service: ssh target: 37.228.156.166 source: xx.xx.xxx.xxx
Fri Jun 19 14:47:56 2020: user: test2 service: ssh target: 178.250.9.139 source: xx.xx.xxx.xxx
Fri Jun 19 14:46:14 2020: user: test2 service: ssh target: 178.250.15.226 source: xx.xx.xxx.xxx
Fri Jun 19 14:46:10 2020: user: test2 service: ssh target: 77.75.251.232 source: xx.xx.xxx.xxx
Fri Jun 19 14:46:08 2020: user: test2 service: ssh target: 85.158.183.41 source: xx.xx.xxx.xxx
Fri Jun 19 14:44:55 2020: user: test2 service: ssh target: 178.250.9.27 source: xx.xx.xxx.xxx
Fri Jun 19 14:44:00 2020: user: julio service: ssh target: 37.228.156.166 source: xx.xx.xxx.xxx
Fri Jun 19 14:43:46 2020: user: julio service: ssh target: 178.250.9.139 source: xx.xx.xxx.xxx
Fri Jun 19 14:41:54 2020: user: julio service: ssh target: 178.250.15.226 source: xx.xx.xxx.xxx
Fri Jun 19 14:41:50 2020: user: julio service: ssh target: 77.75.251.232 source: xx.xx.xxx.xxx
Fri Jun 19 14:41:48 2020: user: julio service: ssh target: 85.158.183.41 source: xx.xx.xxx.xxx
Fri Jun 19 14:40:25 2020: user: julio service: ssh target: 178.250.9.27 source: xx.xx.xxx.xxx
Fri Jun 19 14:39:30 2020: user: root service: ssh target: 37.228.156.166 source: xx.xx.xxx.xxx
Fri Jun 19 14:39:06 2020: user: root service: ssh target: 178.250.9.139 source: xx.xx.xxx.xxx
Fri Jun 19 14:36:58 2020: user: root service: ssh target: 85.158.183.41 source: xx.xx.xxx.xxx
Fri Jun 19 14:36:54 2020: user: root service: ssh target: 178.250.15.226 source: xx.xx.xxx.xxx
Fri Jun 19 14:36:50 2020: user: root service: ssh target: 77.75.251.232 source: xx.xx.xxx.xxx
Fri Jun 19 14:35:15 2020: user: root service: ssh target: 178.250.9.27 source: xx.xx.xxx.xxx
Fri Jun 19 13:45:20 2020: user: root service: ssh target: 37.228.156.166 source: xx.xx.xxx.xxx
Fri Jun 19 13:36:44 2020: user: root service: ssh target: 178.250.15.226 source: xx.xx.xxx.xxx
Fri Jun 19 13:36:38 2020: user: root service: ssh target: 85.158.183.41 source: xx.xx.xxx.xxx
Fri Jun 19 13:36:30 2020: user: root service: ssh target: 77.75.251.232 source: xx.xx.xxx.xxx
Fri Jun 19 13:30:55 2020: user: root service: ssh target: 178.250.9.27 source: xx.xx.xxx.xxx


Я хотел бы попросить совета, как мне защититься от подобных аттак?
Я понимаю, это самая ламерская атака, где сканирует адреса и начинают брут, но знаний линукса не позволяют мне защиться от этого =(

Немного о машине:
  • Сайт доступен из интернета по IP адресу.
  • Подключение по SSH ssh root@xx.xx.xxx.xxx (по логин/пароль, без ключей)
  • Есть домены, по которым можно так же подключиться ssh root@example.com (по логин/пароль, без ключей)
  • На машине только 1 IP адрес


Можно ли как-то ограничить подключение по SSH через IP машины и оставить из множеств доменов конкретно один по которому можно будет подключиться?
Можно ограничить подключение по паролю для root, чтобы хостер мне не остановил сервер, а с ним все мои проекты/сайты?

И вообще, какие самые базовые вещи сделать, чтобы обезопасить сервер?
  • Вопрос задан
  • 448 просмотров
Пригласить эксперта
Ответы на вопрос 7
@Serebriakov9
Уже по первым строкам вашего поста мне показалось, что вам попался недобросовестный хостер. Два раза с 2006 года натыкался на подобный подход. Когда закроете порты и текущие дыры, дальше будут претензии по чрезмерной нагрузке на сервер - доплатите и перейдите на более дорогой тариф. Перейдете на более дорогой тариф - будут претензии по авторским правам на какие-нибудь картинки на сайте. И так далее. И все это будет сопровождаться постоянным спонтанным отключением сервера. Запомните - нормальный хостер никогда не отключит ваш сервер без предварительного уведомления на электронную почту с разъяснениями (работы в дата-центре и т.п.). Основным параметром хорошего хостинга или сервера является его аптайм (беспрерывное время работы) - и нормальные хостеры стремятся держать его на уровне 100%. Время простоя - упущенная выгода клиента, часто измеряемая реальными деньгами. У хостера, спонтанно отключающего ваши сервера без предупреждения хотя-бы на e-mail, лучше сразу запрашивать манибэк и бежать от него. Ну а если более конкретно по вашему вопросу - если у вас через два дня пользования начались такие проблемы, то это тоже вина хостера: почему предоставленный им для установки дистрибутив linux имеет такую плохую первоначальную настройку, что у него "из коробки" установлен хакерский троянец-брутфорсер? Уверен на 200% хостер сам подсадил вам эту дрянь, по обозначенным выше причинам. Да возможно и атаки никакой не было - скорее всего заранее заготовленное письмо с фальшивыми логами. Попали на мошенников, частое явление. Мне известны всего три реальные причины, почему ваш сервер может быть спонтанно отключен (конечно, если вы сами не нарушали закон хакерской деятельностью, или раздачей торрентов с сервера): авария в дата-центре (или жесткий DDoS всей подсети дата-центра), DMСA (жалоба на нарушение авторских прав), а так же аномальный расход трафика вашим сервером (значительно превышающий все допустимые границы, например, месячный трафик за день). В остальных случаях любое спонтанное отключение сервера можно расценивать как недобросовестность хостера или мошенничество.
Ответ написан
Sanes
@Sanes
  1. Поменять стандартный порт
  2. Авторизация только по ключу
  3. Сделать заглушку при подключению к веб-серверу по IP
Ответ написан
@pfg21
ex-турист
в довесок к вышесказанному, еще посоветую прикрутить порт-кнокинг.
вещица несколько долгая в настройке, но станет просто пофиг на брутфорсы. порты-то просто закрыты :)
Ответ написан
Комментировать
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Закрыть SSH из интернета. Всё остальное (ну, может кроме кнокинга) - гомеопатия.
Ответ написан
@Karpion
Если это Ваш сервер брутфорсил окружающий мир - то в первую очередь просите хостера закрыть Вашему серверу возможность исходящих соединений на TCP:22.
Вообще, странно, что хостер закрыл весь сервер, а не исходящие вызовы.

После этого смотрите, что у Вас там запущено. Похоже, кто-то подсадил резидентный процесс, постоянно висящий в памяти и долбящий соседей брутфорс-запросами. Ну так смотрите, какие процессы открывают TCP-соединения.
Теоретически - взломщик может не запускать дополнительный процесс, а дописать к нормальной программе, которая должна работать постоянно, свой кусок кода, который уже брутфорсит.

Далее подумайте над тем, какие исходящие TCP-порты Вам вообще нужны. Что-то мне кажется - практически никакие. Закройте ненужные порты - будет безопаснее; закрыть можно как силами хостера, так и силами Вашего сервера; правда, при взломе сервера - взломщик может отключить блокировку портов, сделанную силами Вашего сервера;, но это только если он получит root-привилегии.
В идеале - хостер должен предоставить Web-интерфейс, в котором клиент может сам открывать нужные ему порты и закрывать ненужные. По умолчанию - все типичные для хакеров порты д.б. закрыты.
Ответ написан
Jump
@Jump Куратор тега Системное администрирование
Системный администратор со стажем.
по логин/пароль, без ключей

Юзер root а пароль 123 или что-то в этом же стиле?

Можно ли как-то ограничить подключение по SSH через IP машины и оставить из множеств доменов конкретно один по которому можно будет подключиться?
Можно.
На файерволе можно указать адреса с которых можно подключаться, использовать для подключения нормальный пароль, а лучше ключ, настроить port knocking
Ответ написан
@tortaletka
Поменяй хостера на добросовестного

У кселента сейчас 3 месяца бесплатный период, так что самое время
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы