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-порт.