Можно ли забанить IP-адрес после Х числа неудачных попыток входа на Windows Server? Не для конкретного аккаунта, который я умею делать, а для всей машины.
Мы очень сильно пострадали от атак грубой силы, пытаясь угадать имена пользователей, так что это действительно помогло бы получить некоторую нагрузку на сервер.
windows
brute-force-attacks
HeavyWave
источник
источник
Ответы:
Вы можете сделать это с PowerShell и диспетчером задач. Вероятно, это не идеальное решение, но оно работает довольно хорошо, и у меня есть около 100 заблокированных IP-адресов за два месяца. Я написал скрипт, который выбирает из EventLog указанные события («ошибка аудита»). Если существует много неудачных входов с любого IP-адреса, он добавляется в правило брандмауэра (созданное вручную) с именем «BlockAttackers», которое блокирует любой трафик на указанные IP-адреса.
PS1 Script:
Создайте задачу в планировщике и установите триггер на событие 4625 (вход в Windows, включая службы терминалов). Но вы можете установить запуск триггера, например, два раза в час, чтобы избежать ненужной загрузки сервера.
и после триггера запустить скрипт powershell. Вы также должны установить более высокие привилегии для запуска этого скрипта, иначе он завершится с ошибкой безопасности.
Вы также можете привязать этот скрипт к другим событиям безопасности.
источник
Я знаю, что этот вопрос старый, но это было первое сообщение на форуме, с которым я столкнулся, когда начал пытаться делать то же самое пару недель назад. Мне удалось придумать рабочий скрипт, который 24 часа назад будет анализировать журналы событий на наличие только плохих записей в журнале событий входа в систему, захватывать те, которые имеют более 10 неправильных входов в систему, а затем помещать их в список фильтров ipsec, используя команда netsh. Затем я написал пакетный файл с этой строкой
powershell .\*scriptname.ps1*
и создал запланированное задание для запуска пакетного файла каждые 24 часа (по какой-то причине он не будет выполняться напрямую).Я знаю, что этот сценарий, вероятно, неэффективен, но когда я начал работать над этим, у меня не было абсолютно никакого опыта в PowerShell, поэтому моя способность оптимизировать сценарии оставляет желать лучшего. Однако, несмотря на этот факт, я подумал, что поделюсь этим с любым, кто мог бы его использовать.
Я благодарю Ремунду за то, что она дала мне первоначальную идею, что именно этот плакат заставил меня задуматься об использовании PowerShell для поиска в журналах событий.
источник
Этот скрипт основан на ответе remunda и идет немного дальше https://serverfault.com/a/397637/155102 Он учитывает правило «BlockAttackers», для которого еще не введены IP-адреса (который возвращает «*» в виде строки). Он также записывает комментарий в файл журнала, чтобы сообщить, когда IP-адрес был добавлен в правило.
Хороший совет - создать правило «BlockAttackers», которое блокирует IP-адреса, НО сначала отключить его. Затем запустите этот скрипт один раз вручную, чтобы он мог заполнить поле «Удаленные адреса» фактическими IP-адресами, которые должны быть заблокированы. Посмотрите на эти IP-адреса, чтобы убедиться, что ничего критического не было добавлено, а затем включите правило брандмауэра. Добавьте это правило в брандмауэр, как описано в remunda.
Git для этого скрипта
источник
Я не могу взять кредит на этот ответ, но https://serverfault.com/users/7200/evan-anderson упомянул его проект http://opensource.wellbury.com/projects/windows_sshd_block/newest-release/
источник
Как правило, не стоит позволять кому-то еще контролировать ваши правила брандмауэра. Это в основном то, что вы просите здесь.
источник
Это старая ветка. Я использовал сценарий, предоставленный kevinmicke в 2014-2015 годах. Тогда это просто перестало работать. Поэтому мне пришлось немного отредактировать его, чтобы принять аутентификацию Windows Network Security, которая не оставляет IP-адреса в журнале безопасности. Кроме того, поскольку у меня не работает обычный FTP, я удалил эту часть, так как она вызывала ошибки, потому что не было папки журнала. Основное изменение заключается в источнике событий RDP.
Приведенный выше сценарий будет работать в Windows 2012. Если вы все еще используете удаленный рабочий стол с проверкой подлинности на уровне доступа к сети в Windows 2008, вам может потребоваться выполнить следующую хитрость. Windows 2008 не имеет IP-адресов в журнале безопасности и, похоже, их также нет в журнале Microsoft-Windows-RemoteDesktopServices-RdpCoreTS. Поэтому мне пришлось использовать 2 журнала - сопоставить события из журнала безопасности с успешными попытками доступа к порту 3389 в журнале брандмауэра. Это предположительная работа, но, похоже, она обнаруживает парольные атаки. Вот часть, которая собирает нарушающие IP-адреса:
ПРИМЕЧАНИЕ. Не забудьте включить журналы брандмауэра. ПРИМЕЧАНИЕ 2: Я не эксперт PowerShell, поэтому было бы неплохо, если бы некоторые гуру могли исправить / улучшить мой код.
источник
Я использую ts_block freeby.
По сути, это «программа VBScript, которая действует как приемник событий WMI для получения событий, регистрируемых Windows в ответ на недопустимые входы в систему служб терминалов».
Кажется, работает отлично, и сценарий прост, если вам нужно изменить его. Вы можете либо разрешить ему регистрировать попытки, а затем запретить в зависимости от количества разрешенных попыток, и / или вы можете жестко закодировать имена входа, к которым вы не хотите предоставлять доступ.
Я был пойман, случайно добавив одно и то же имя дважды, и сервис просто переходит в бесконечный цикл, перезапускающийся каждые 1500 мс, но его очень легко исправить / изменить, если вы согласны с vbs.
Мои текущие настройки - только одна повторная попытка, и вы забанены на 2 дня, а такие логины, как «admin», «Admin», «Administrator», «guest» и т. Д., Автоматически заблокированы. Должно быть легко перейти на IP?
Какая-то захватывающая, чтобы пойти и посмотреть, какие твари были забанены за одну ночь ...
источник
Вы имеете в виду вход на сервер / домен или вход на веб-сайт, работающий на сервере? Если вы имеете в виду вход на сервер / домен, то ответ - нет. В Windows отсутствует концепция блокировки IP-адресов на основании неудачных попыток входа в систему, поскольку IP-адреса не являются объектами безопасности. Могут быть сторонние инструменты, которые могут сделать это, но я не знаю ни одного, так как никогда не обращал на это внимания.
источник
Если существует атакуемый веб-сервер, вы можете установить расширение динамических ограничений IP . Если это для стандартной аутентификации на сервере, то вы должны иметь возможность реализовать изоляцию домена и сервера, которая ограничивала бы объем атак на компьютеры, присоединенные к домену, и могла бы быть настроена таким образом, чтобы разрешать попытки только со стороны систем, к которым вам необходим доступ. сервер. В окнах предотвращение грубых атак состоит в том, чтобы установить политику блокировки учетной записи равной 10 минутам, а политику плохого пароля - 3 попыткам - это означает, что атакующая учетная запись блокируется в течение 10 минут после 3 попыток. IP-соединения не блокируются по умолчанию в Windows. (Кроме того, мне также любопытно, сколько попыток входа в систему требуется в секунду, чтобы повлиять на систему)
источник
http://nerderies.blogspot.co.at/2012/12/automatically-banning-ips-with-windows.html
источник
Используя отличный сценарий remunda в качестве отправной точки, я добавил одну важную вещь, которой не хватало: блокировка IP-адресов от неудачных входов на FTP . Windows Server не регистрирует IP-адрес в журнале безопасности, когда кто-то не может войти в систему через FTP, но вместо этого устанавливает «Исходный сетевой адрес» на тире. FTP является очень распространенным вектором атак для атак методом "грубой силы", поэтому я добавил к его сценарию возможность сканировать журналы FTP текущего дня на наличие множества ошибок входа и блокировать эти IP-адреса.
Обновление 2014/02/07: Когда я сделал несколько настроек для обработки всех моих старых журналов FTP, я понял, что когда у них было огромное количество попыток (более 50 000), создаваемые им массивы были бы огромными и делали обработку невероятно медленной. С тех пор я переписал его, чтобы сделать его намного более эффективным при обработке журналов FTP.
Я также обнаружил, что существует произвольное жесткое ограничение в 1000 для количества IP-адресов в одном правиле брандмауэра Windows. Из-за этого ограничения мне нужно было автоматически создавать новое правило при заполнении последнего. Теперь он делает это, а также создает исходное правило брандмауэра (если вы не создаете свое собственное), так что единственная настройка, которую нужно сделать, - это добавить его в планировщик для запуска при событии 4625.
Вот код, который был протестирован на Windows Server 2008 R2 и Windows 7:
источник
Set-ExecutionPolicy RemoteSigned
чтобы вы могли запускать локальные сценарии. В противном случае вы получите сообщение об ошибке: «blockattackers.ps1 не может быть загружен, потому что выполнение сценариев отключено в этой системе».Скрипт remuda , отредактированный kevinmicke (7 февраля в 21:59), не проверял канал управления FTP, который имеет собственную папку в моей системе (Windows Server 2008 R2). Также
530 11001
не были распознаны события, которые появляются, когда хакер пытается получить доступ только к каналу управления. Поэтому я добавил несколько строк в скрипт, чтобы проверить вторую папку FTP-log:Имя папки журнала FTP
FTPSVC*
на строке 54 должно быть заполнено по причине. В строке 115 и 116 необходимо ввести IP-адрес вашего сервера (IPv4 и IPv6), в противном случае IP-адрес собственных серверов может быть добавлен в правило брандмауэра сто раз. У$int_block_limit
меня на сервере установлена переменная 1, поэтому скрипт блокирует атаку хакеров, вызывая событие 4625 в течение двух секунд. Я все еще думаю о запуске сценария в дополнение к происходящим 4625 событиям за период в несколько минут. Конечно, было бы также возможно разделить сценарии и позволить одному сценарию проверять события 4625, инициированные событием 4625, а другому - журналы папок FTP, периодически проверяющие каждые 5 или 10 минут, даже с отдельным правилом межсетевого экрана. и лог-файл.источник
Я добавил мой для SQL
Тогда вам нужно будет добавить массив в ips_all
источник