Мой сервер постоянно атакован [закрыт]

32

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

Feb 14 04:07:20 foodwiz3 sshd[1264]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:07:21 foodwiz3 sshd[1264]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:07:21 foodwiz3 sshd[1264]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:07:23 foodwiz3 sshd[1264]: Failed password for root from 23.249.167.223 port 32997 ssh2
Feb 14 04:07:23 foodwiz3 sshd[1264]: Received disconnect from 23.249.167.223: 11: Bye Bye [preauth]
Feb 14 04:13:04 foodwiz3 sshd[1289]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:13:05 foodwiz3 sshd[1289]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:13:05 foodwiz3 sshd[1289]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:13:07 foodwiz3 sshd[1289]: Failed password for root from 23.249.167.223 port 41562 ssh2

Это что-то вполне нормальное, или я должен волноваться / что-то делать с этим?

SivaDotRender
источник
3
Попробуйте изменить номер порта и посмотрите, сохраняется ли он. Если они не нацелены на вас конкретно, это, вероятно, не будет.
Златовласка
13
Лучшее решение - отключить аутентификацию по паролю в SSH, поскольку это, безусловно, остановит атаки методом подбора!
Виллем
2
Возможные дубликаты Каковы плюсы / минусы различных методов блокирования SSH-атак методом перебора?
Восстановите Монику - М. Шредер
3
@ Виллем - нет, отключение аутентификации по паролю НЕ остановит атаки. Это только сделает их неудачными (злоумышленники не поймут, что аутентификация по паролю отключена, и продолжат попытки).
Мартин Вегтер

Ответы:

59

Добро пожаловать в чудесный мир интернета ... Есть ли у вас:

Но реальный ответ: да, это нормально : BotNet Maffia всегда может использовать несколько очень плохо защищенных серверов ...

Fabby
источник
1
Я предпочитаю не иметь SSH в диком, диком Интернете. +1
Руи Ф. Рибейро
2
Помимо изменения порта по умолчанию для ssh у нас также есть стук портов .
Пабло А
15

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

Изменение SSH-портов - это скорее решение типа «безопасность по неизвестности», но оно помогает при потоке. Я подчеркиваю, это не очень элегантно; Существуют де-факто порты для услуг по причине.

Как и должно быть по умолчанию, но убедитесь, что вы не можете SSH на ваш сервер как root. Это имя пользователя, которое довольно непротиворечиво среди серверов и, таким образом, является основной целью для попыток входа в систему путем перебора пароля. Выполните настройку с помощью следующей строки sshd_config:

PermitRootLogin no

Также посмотрите, fail2banчто контролирует логи sshd для повторных нарушителей. Например, 5 неудачных попыток входа в систему за 3 минуты с определенного IP-адреса блокируют этот IP-адрес на 10 минут. Я увеличил время запрета до 24 часов, чтобы еще больше сократить спам в журнале - успешно. :)

unperson325680
источник
1
apt-get install fail2ban поможет вам в полной мере
Willem
7
«Я увеличил время запрета до 24 часов, чтобы еще больше сократить спам в журнале». Поверьте мне. Если у вас нет физического доступа к серверу, однажды вы будете глубоко сожалеть об этом. ;)
Даниил
8

Я бы предложил вам сделать несколько вещей:

  1. Измените порт, который прослушивает ssh (на значение, намного превышающее 1024), и убедитесь, что вы не используете версию 1 протокола:

/ И т.д. / SSH / sshd_config

# What ports, IPs and protocols we listen for
Port 50022
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
  1. Instal fail2ban- он контролирует файлы журнала и временно или постоянно блокирует подверженные ошибкам адреса, обновляя существующие правила брандмауэра ( iptables).

  2. Убедитесь, что вы занесены в белый список ваших надежных местоположений.

pawel7318
источник
7

Да, волнуйся . Возможно, вас никогда не обожгут, но вы должны следовать рекомендациям ИТ. Береженого Бог бережет.

Я сетевой администратор в больнице. Всегда плохая идея подключить коробку напрямую к интернету. То, что вы видите, - это тысячи автоматических сканеров, которые сканируют уязвимости в Интернете. Я вижу, что эти и все виды вещей (сканирование портов, различные известные тесты уязвимостей) для всех видов программного обеспечения (ssh, telnet, ftp и т. Д.) Отображаются на нашей коробке идентификаторов.
Ваша машина должна быть защищена брандмауэром / NAT, и вам следует только Перенаправить требуемые порты в Интернет (80, 443 и т. д.). Это относительно легко сделать.
Наличие чего-либо, что вы можете использовать для managemnt (SSH telnet), - плохая идея иметь дело с Интернетом, потому что если - по какой-либо причине - в программном обеспечении SSH / telnet на этом сервере есть ошибка, автоматический бот обнаружит это в одно мгновение. и ты облажался Ошибки в программном обеспечении происходят постоянно, и может потребоваться некоторое время для выпуска патча или для того, чтобы вы его запомнили.

Если вам необходимо удаленное управление, посмотрите, как настроить VPN-решение, или, если вы используете Windows, настройте шлюз служб терминалов для удаленного рабочего стола. Я знаю, что вы можете использовать отдельную коробку Linux или Windows с 2 сетевыми картами для настройки маршрутизации и удаленного доступа для VPN и NAT, если вы просто небольшой магазин. В противном случае такие поставщики, как Cisco, используют аппаратные брандмауэры / решения NAT (Cisco ASA).

Итак, поставьте свою машину за NAT. Перенаправлять только порты, необходимые для работы службы. Не переносите службы переадресации, используемые для управления, в Интернет, вместо этого обращайтесь к VPN для удаленного управления.

PS Изменение портов SSH может помочь с объемом журнала, но на самом деле это не препятствует доступу к SSH. Любой из тысяч автоматических искателей уязвимостей может и будет выполнять сканирование портов, чтобы увидеть, какие порты прослушивают какие службы. Вы можете сделать это самостоятельно с помощью инструмента под названием nmap .

человек
источник
7
На самом деле, решение VPN не более или менее безопасно, чем сервер SSH. Они оба полагаются на правильную реализацию криптографических протоколов и правильную настройку сервисов. Я бы сказал, что разными способами они обеспечивают одинаковый уровень безопасности. Тогда, если я вас хорошо понимаю, вы ставите SSH за VPN, тогда да, это на один уровень более безопасным.
lgeorget
Да, вы правы, это то, что я имел в виду, используйте vpn, чтобы пройти через firewall / nat, а затем ssh на сервер
человек,
1
Между прочим, большинство настроек VPN проходят несколько уровней аутентификации клиента, а также обеспечивают единую точку, в которой внешний трафик может достигать внутренней сети. По сравнению с большим количеством узлов. Концентраторы VPN также обычно не являются интересными целями сами по себе, в отличие от сервера, на котором, вероятно, размещен sshdэкземпляр. Перемычка ssh может быть такой же безопасной, как и большинство конфигураций VPN, но в целом это не так.
Братчли
5

Вы можете настроить внутренний брандмауэр ядра с помощью iptables . Таким образом, только несколько машин могут подключиться к вашему серверу по протоколу ssh и позволить сбросить другие IP-пакеты Смотрите man iptablesдля получения дополнительной информации.

Например, если 192.168.1.67 - это хост, с которого вы используете ssh, то на сервере введите:

sudo iptables -A INPUT -p tcp --dport ssh -s 192.168.1.67 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j DROP
sudo iptables-save
CFF
источник
2
Обратите внимание, что вы будете сильно облажаться, если удаленное управление является единственным вариантом. Большинство IP являются только полупостоянными. Измените оборудование, и вы будете сожжены.
Мачта
3

Вам действительно нужен ваш сервер в интернете? Если вы действительно хотите, чтобы он был в Интернете, убедитесь, что он безопасен, прежде чем разместить его там.

Смена порта - это просто безопасность через неизвестность. Если ваш злоумышленник более изощрен, чем просто запускает сценарии, это не поможет.

Уже упоминалось несколько вещей, которые я рекомендую также:

  1. Я согласен с Fail2Ban, и должным образом настроенный будет держать сценарии и самых сложных хакеров в страхе.
  2. Установка PermitRootLogin в значение no является обязательным.
  3. Настройте брандмауэр. Я обычно просто редактирую правила iptables, но что-то вроде UFW или firehol тоже подойдет.

Я только что присоединился к этому сообществу, потому что есть две вещи, которые я не считаю адекватными.

  • В настройках брандмауэра заблокируйте / отключите абсолютно все, что не является абсолютно необходимым. Прежде чем открывать какие-либо порты, спросите себя: «Мне действительно нужна эта услуга из Интернета?» Каждый порт / служба, которую вы открываете, становится еще одним потенциальным вектором, который кто-то может использовать. Если в этом сервисе есть ошибка, которая позволяет им получить root-доступ к серверу, они могут получить доступ ко всему на нем. Ваша безопасность так же сильна, как и самое слабое звено.
  • Теперь о последней вещи и, пожалуй, самой важной. Сценарии, которые вы видели при попытке доступа к ssh, могут со временем угадать ваш пароль. Fail2Ban сильно их замедлит, но они все еще могут догадаться. Если они это сделают, вы хотите 2-х факторной аутентификации на доступных сервисах. Для этого я рекомендую бесплатный аккаунт в Duo Security. https://www.duosecurity.com/docs/duounix
moriab
источник
1
Смена порта имеет преимущество очистки файлов журналов: поскольку дети сценариев в основном не атакуют порты не по умолчанию, вы знаете, что любая запись в журнале представляет серьезную угрозу.
Марк
Изменение порта также не совсем нулевое использование против реальной угрозы. Ускорение скорости - это не большая часть стены, но это все же увеличение скорости, и есть способы, которыми вы можете превратить это в несколько больший удар скорости. Кроме того, хотя двухфакторная аутентификация, безусловно, является хорошей идеей, которую следует использовать всегда, когда это возможно, и почти всегда должна быть возможной, существуют крайние случаи. Если есть конкретный минимальный промежуток времени, вы можете быть уверены, что Fail2Ban задержит их, затем просто изменив свой пароль чаще, чем это заставит их запускаться повторно и никогда не заканчиваться.
Мэтью Наджмон
2

Еще один пример ответа @cff, если вы намереваетесь запретить любые последовательные «попытки» на вашем SSH-сервере:

sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --update --seconds 600 --hitcount 4 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
sudo iptables-save

Эта попытка соединения «помечает», и если больше чем 4 происходит за 600 с (10 мин), то источник «забанен». Используйте это вместо решения @cff, потому что это более безопасно (если вы заблокировались, подождите 10 минут и повторите попытку).

xryl669
источник