Cygwin SSHd Autoblock не удалось войти

Я использую Cygwin с SSH-демоном на компьютере с Windows Server 2008. Я смотрел на Event Viewer и заметил 5-6 неудачных попыток входа в секунду (грубая сила) в течение последней недели или около того с разных IP-адресов.

Как я могу автоматически блокировать эти IP-адреса, а не блокировать их один за другим вручную?

Спасибо ахмад

7 ответов

Решение

Я написал программу для блокировки IP-адресов, как вы просили пару лет назад, но сделал это для Заказчика как работу по найму. Так как сегодня вечером у меня было немного "свободного" времени, я решил заново реализовать все это с нуля, написать некоторую полезную документацию и вообще сделать ее презентабельной программой. Так как я слышал от нескольких людей, что это было бы удобно, кажется, что это стоит того времени. Надеюсь, что вы и другие члены сообщества сможете извлечь из этого пользу.


Windows sshd_block

sshd_block - это программа VBScript, которая действует как приемник событий WMI для получения записей журнала событий Windows, зарегистрированных в sshd. Он анализирует эти записи журнала и действует на них следующим образом:

  • Если IP-адрес пытается войти в систему с именем пользователя, помеченным как "немедленно забанить", IP-адрес немедленно забаняется.

  • Если IP-адрес пытается войти в систему чаще, чем разрешено в данный период времени, IP-адрес запрещается.

Имена пользователей и пороги немедленного запрета, связанные с повторными попытками входа в систему, настраиваются в разделе "Конфигурация" сценария. Настройки по умолчанию следующие:

  • Немедленно забаньте имена пользователей - администратор, root, гость
  • Разрешены попытки входа в систему - 5 за 120 секунд (2 минуты)
  • Продолжительность бана - 300 секунд (5 минут)

Раз в секунду любые IP-адреса, которые были забанены на время запрета, отменяются (путем удаления маршрута черной дыры из таблицы маршрутизации).


Вы можете скачать программное обеспечение здесь и просмотреть архив здесь.

Редактировать:

По состоянию на 2010-01-20 я обновил код для поддержки использования "Расширенного брандмауэра" в Windows Vista / 2008 / 7 / 2008 R2 для выполнения "черного" трафика через создание правил брандмауэра (что намного больше соответствует поведение "fail2ban"). Я также добавил несколько дополнительных подходящих строк, чтобы перехватить версии OpenSSH, которые являются "недопустимым пользователем", а не "нелегальным пользователем".

На Linux denyhosts делает трюк, не может сказать вам, будет ли он работать на Windows / Cygwin или нет. Попробуйте.

Это очень интересно, мы сейчас оцениваем это решение:

Syspeace тесно сотрудничает с Windows, чтобы обнаруживать возможные угрозы с оптимальной производительностью. События в журнале событий постоянно отслеживаются на предмет подозрительного поведения. Если событие считается угрозой для системы, Syspeace переходит на следующий уровень путем проверки внутренней базы правил, которая просто блокирует IP-адрес и добавляет правило в брандмауэр Windows.

Местный белый список

Пользователь всегда может добавить IP-адреса в локальный белый список, чтобы, например, предотвратить блокировку любых внутренних сетей или временно добавить отдельные ПК. Это следует использовать с осторожностью, так как любые IP-адреса в этом списке считаются заслуживающими доверия Syspeace и всегда будут игнорироваться.

Локальный черный список

Любые угрозы будут автоматически добавлены в локальный черный список Syspeace. Вы всегда можете просмотреть черный список и добавлять или удалять их по своему усмотрению. Однако мы рекомендуем не вносить никаких изменений в этот список, поскольку вы можете случайно проложить путь неизвестному хакеру.

Глобальный черный список

Ключевой особенностью Syspeace является возможность упреждающего блокирования известных глобальных IP-адресов. Выбрав этот параметр, Syspeace импортирует глобальный черный список на ваш клиент и будет действовать соответствующим образом, добавляя все глобальные черные списки IP-адресов в набор правил брандмауэра одним нажатием кнопки.

обменсообщениями

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

Отчеты

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

www.syspeace.com

Буквально все попытки входа в систему из Китая / США / Индии на моем сервере пытаются выполнить вход администратора, который я отключил.

Не будет ли проще отключить вход администратора, а затем написать сценарий, который блокирует все IP-адреса, которые пытаются войти, используя "Администратор" в качестве имени пользователя?

Возможно, вам придется возиться с брандмауэром Windows; Cygwin не будет иметь такой тип функциональности.

Вы можете рассмотреть возможность использования SSHBlock - скрипта Perl для управления попытками перебора.

SSHBlock - это демон, который отслеживает журнал системного журнала на предмет попыток взлома с использованием SSH и автоматически блокирует поврежденные хосты, добавляя строки в /etc/hosts.allow (TCP Wrappers). Предопределено несколько пороговых значений, чтобы можно было блокировать попытки сделать много попыток в течение более длительного или более короткого периода. Используйте -h, чтобы увидеть параметры командной строки.

Я еще ни разу не использовал его на Cygwin.
Однако вот ссылка на другую статью, описывающую sshblock с некоторыми другими способами:
Защита от атак SSH грубой силы

Всем, кто просит блокировать RDP (или другой не-SSH порт): рекомендую делать что угодно через ssh-туннели!

Например, для RDP (со стандартными портами для RDP и SSH) на клиентском компьютере откройте консоль и запустите эту команду (также хорошо работает с PuTTY):

      ssh -L33890:<SERVER-MACHINE-NAME>:3389 -x -o <USER>@<SERVER-MACHINE-IP> sleep 100

Затем у вас есть 100 секунд, чтобы открыть RDP-соединение по этому адресу:

      localhost:33890

(где 33890 может быть любым неиспользуемым номером порта <65535, но, конечно, он должен быть одинаковым в обоих местах)

На всех компьютерах, которыми я администрирую, (обычно) открыт только SSH-порт.

Другие вопросы по тегам