Раз мы более - менее разобрались с тем, как важны пароли и логины (ссылка на первую часть ЗДЕСЬ), предлагаю ещё больше обезопасить наш открыто висящий RDP в сети Интернет буквально за полчаса максимум.
В поисках самого простого и бесплатного (или максимально дешевого) способа защиты RDP предлагаю добавить известный многим IPBAN от Jeff Johnson: https://github.com/jjxtra. Единственный замеченный минус - у меня, почему-то, не зависимо от того указываю я 3 попытки для блокировки или 5 - всё равно начинает блокировать где-то с пятой попытки (а может это проблема используемой мной версии - 1.8.0), хотя потом я решил, может это и к лучшему - если предположить что у нас до блокировки учетной записи даётся 3 попытки, то оставшиеся две вполне сгодятся для звонка системному администратору с просьбой сбросить пароль. В общем, для начала нужно скачать саму программу в соответствии с используемой у вас ОС:
https://github.com/DigitalRuby/IPBan/releases
Пока скачивается архив надо настроить локальную политику безопасности: щелкаем на значок поиска в панели задач так и вводим "локаль..." или "secpol.msc" (если нет значка поиска жмем WIN+R,вводим secpol.msc и жмем Enter), затем переходим во вкладку Локальная политика и Политика аудита. В локальных политиках включаем аудит входа в систему и аудит СОБЫТИЙ входа в систему, ставим галки как на скрине - Успех и Отказ для обеих политик и нажимаем ОК:
Архив уже должен скачаться, разахивируем его на любой диск, лучше в корень диска чтобы был проще путь к установке, я извлек в папку ipb на диск C:
Теперь запускаем командную строку от имени администратора вставляем команду:
sc.exe create IPBAN type=own start=delayed-auto binPath=c:\ipb\DigitalRuby.IPBan.exe DisplayName=IPBAN
! Я настраивал на Windows Server 2019, IPBAN корректно работает на Server 2012 и новее, если у вас 2008/2008R2, то всё сложнее, да и вообще на 2008 оно работает не всегда адекватно, но если сильно хочется... (и ещё кое-что: я проверить это не могу, так как самый старый сервер у меня на 2012, так что на свой страх и риск. Ах, да, на старых клиентах с XP и не обновлённой семеркой пропадёт путь к сетевым папкам после запрета NTLM, так что ещё раз: IPBAN ставим на 2008 если только очень хочется)
! ещё раз, текст ниже курсивом - ЭТО ТОЛЬКО ДЛЯ 2008/2008R2, не вздумайте запрещать NTLM на новых версиях ОС Windows Server !
! перед тем как начать вносить изменения настоятельно рекомендую или иметь физический доступ к серверу или проверить работоспособность сторонних программ для удаленного подключения - Anydesk, Rudesktop и т.д.
В командной строке от администратора вводим команду:
sc create IPBAN binPath= c:\ipb\DigitalRuby.IPBan.exe DisplayName= "IPBAN"
Дальше нужно запретить всё NTLM (а заодно и доступ к общим папкам на сервере для WinXp и Win7):
Открываем редактор групповых политик (gpedit.msc) и идём по пути:
Конфигурация компьютера > Конфигурация Windows > Политики безопасности > Локальные политики > Параметры безопасности > Сетевая безопасность: ограничения NTLM: входящий трафик
Выбираем Запретить все учетные записи и надеемся что ничего не отвалится.
Всё, возвращаемся к более "свежим ОС" или продолжаем настройку "старого" сервера:
и жмем Enter, должно выйти так (не забываем путь указать свой, у меня C:\ipb):
Теперь надо сконфигурировать настройки IPBAN под наши нужды, открываем в текстовом редакторе файл ipban.config (C:\ipb\ipban.config), нажимаем CTRL+F5 и по порядку:
1) добавим в исключения нашу локальную сеть (например, у нас сеть 192.168.1.*), ищем <add key="Whitelist" value= и пишем:
<add key="Whitelist" value="192.168.1.0/24"/>
2) указываем количество попыток залогиниться - я указал 3 попытки (почему-то у меня по факту 6, но кто любит четкость работы - всегда есть идеально работающие платные программы с хорошей тех. поддержкой), ищем FailedLoginAttemptsBeforeBan и пишем число попыток 3 до блокировки:
<add key="FailedLoginAttemptsBeforeBanUserNameWhitelist" value="3"/>
3) По умолчанию продолжительность бана сутки, но если хочется изменить эту настройку ищем ExpireTime и пишем нужный период времени на блокировку, я указал ради примера 10 часов:
<add key="ExpireTime" value="00:10:00:00"/>
Сохраняем наш файл, осталось запустить нашу службу и при необходимости добавить её в автозапуск. Перед запуском убедитесь что у вас работает именно брандмауэр Windows, если используется сторонний, например от антивируса, то работать IPBAN не будет.
Открываем службы, находим службу IPBan и для первого раза я рекомендую её просто запустить, и проверить всё ли работает как надо, если за несколько дней проблем не будет можно выбрать автозапуск:
После успешного запуска автоматически создадутся правила в брандмауэре Windows. Там можно просмотреть заблокированные IP адреса и удалить ненужный на случай "особого работника", чтобы не ждать пока снимется блокировка:
Надеюсь, эта статья поможет Вам избавиться от многих проблем с не очень хорошими людьми, которые любят жить за ваш счёт.
Комментарии (18)
alex-open-plc
08.11.2022 12:12Использую ssh, проброс порта. В частности набор: Bitvise SSH Server + PuTTY
Bitvise SSH Server для некоммерческого использования - бесплатен. Брандмауэр - маршрутизатор.
savostin
08.11.2022 22:11+1Украденоподсмотрено здесь (10-летней давности, но у меня работает):#Checks for IP addresses that used incorrect password more than 10 times #within 24 hours and blocks them using a firewall rule 'fail2ban' #Check only last 24 hours $DT = [DateTime]::Now.AddHours(-24) #Select Ip addresses that has audit failure $l = Get-EventLog -LogName 'Security' -InstanceId 4625 -After $DT | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} } #Get ip adresses, that have more than 10 wrong logins $g = $l | group-object -property IpAddress | where {$_.Count -gt 10} | Select -property Name #Get firewall object $fw = New-Object -ComObject hnetcfg.fwpolicy2 #Get firewall rule named 'BlockAttackers' (must be created manually) $ar = $fw.rules | where {$_.name -eq 'fail2ban'} #Split the existing IPs into an array so we can search it for existing IPs $arRemote = $ar.RemoteAddresses -split(',') #Only collect IPs that aren't already in the firewall rule $w = $g | where {$_.Name.Length -gt 1 -and !($arRemote -contains $_.Name + '/255.255.255.255') } #Add the new IPs to firewall rule $w| %{ if ($ar.RemoteAddresses -eq '*') { $ar.remoteaddresses = $_.Name }else{ $ar.remoteaddresses += ',' + $_.Name } } #Write to logfile if ($w.length -gt 1) { $w| %{(Get-Date).ToString() + ' ' + $_.Name >> '.\blocked.txt'} }
litos
В интернет выставлять RDP вообще не лучшее решение, лучше организовать инфраструктуру так, чтобы пользователи подключались к внутренней сети через VPN и дальше уже к нужным ресурсам
aik
Это если делать всё красиво. Но, к сожалению, пользователь в основной своей массе туповат и не сможет настроить подключение по VPN. Потому временами приходится выставлять rdp наружу.
Само собой, не голым задом - закрыть все лишние порты, не использовать стандартные имена пользователей, использовать длинные случайные пароли, вовремя ставить обновления, банить ботов...
Rsa97
Минимальная настройка VPN для L2TP или IKEv2 в Windows 8 и выше — одна строчка PowerShell, которую можно выложить на корпоративной wiki, отправить пользователю в мессенджере или по почте, ввести самому в сеансе удалённой поддержки…
После этого пользователю остаётся сделать три клика мыши и ввести свои корпоративные логин/пароль.
aik
Не все такие уж «корпоративные».
Для l2tp иногда приходится править реестр.
Куча мест, где я настраивал rdp-сервера, не предполагают дальнейшей поддержки пользователей. То есть поломки чиню, если требуется, но вот каждому помогать настраивать подключение не собираюсь.
Чем больше накрутишь безопасности, тем менее удобно всем этим пользоваться.
И тем больше пользователи будут пытаться её обойти, делая всякие дыры в заборе.
Потому необходимо соблюдать баланс. Одно — когда вы большая контора с соответствующими оборотами, кучей сотрудников и уязвимых мест. Тут на вас будет и промышленный шпионаж наезжать, и власти, и вообще кто попало в надежде поживиться.
И другое — когда вы небольшой магазинчик с сервером на три-пять юзеров. Тут ваши враги — только боты да сами юзеры. От ботов — всё вышеописанное помогает, от юзеров — запреты на запуск программ (а в идеале — вообще удалённо отдавать одну только 1С, без доступа к рабочему столу).
avelor
Или можно вспомнить старый-добрый cmak:) но я бы конечно рекомендовал ssl vpn (вроде sstp, anyconnect, openvpn в конце концов) - минимальны проблемы с прохождением трафика у разных провайдеров и домашних роутеров
aik
sstp я чаще всего зухелевский использую, когда пров даёт приватный IP, а на реальный заказчик раскошеливаться не хочет. Проще его тогда убедить купить какой-нибудь недорогой кинетик и через тамошнее облако настроить sstp vpn.
Доходит до того, что сидя с ноутом в офисе они по привычке всё равно заходят на сервер терминалов через vpn.
NikaLapka
Можете начать с "дефолтного", каждый пользователь устанавливает https://openvpn.net/client-connect-vpn-for-windows/ путём скачать - нажать "далее" - "далее" - "далее" - "готово". Затем открывает свою почту и прямо из письма перетягивает иконку единственного, вложенного .ovpn файла в окошко с программой, где всего одна кнопка Вкл\Выкл, всё, никаких настроек со стороны пользователя, доверие к приложению OpenVPN Inc. значительно больше, чем к .exe с гитхаба, секьюрность по взрослому, порт сервера защищён "tls-auth", каждый пользователь "уникален", при необходимости можно управлять маршрутизацией у самого клиента "push route". "Чего ж тебе еще надо, собака? К\ф Иван Васильевич меняет профессию"
aik
Самостоятельно пользователь способен установить только вируса. :) Это раз.
Админить этот openvpn кто будет? Это два. Создать пользователя на сервере терминалов обычно может и тот мальчик, который ходит 1С обслуживать. А вот добавить пользователя в openvpn?
Я не говорю, что vpn надо избегать — наоборот, это самое правильное решение. Выдать пользователю служебный ноутбук, отобрать все права, настроить трёхфакторную аутентификацию. Это всё правильно и красиво. И я тоже пытаюсь такой вариант сделать. Но это я могу сделать только у «своих» пользователей, которые у меня на поддержке. А вот одноразовым нужно максимально простое и дубовое решение.
Fitrager
Я использую VeeamPN - там пользователи просто создаются и просто отключаются. Программа бесплатна.
aik
Интересно, но для "просто и дубово" не катит. Это к ней надо виртуалку запускать, дополнительные инструкции писать...
Fitrager
Я разворачиваю из .ova шаблона и прописываю в настройках маршруты и DNS сервера. Все. За 20 минут можно настроить.
aik
Разворачиваете где? На сервере виртуальных машин наверняка.
Для этого его надо иметь. Уметь настраивать. И т.п.
Fitrager
На гипервизоре esxi. Да там все довольно просто по сравнению с Kubernetes, который я сейчас изучаю.
aik
Далеко не каждая мелкая контора держит у себя гипервизоры. Их сервер-то обычно из себя представляет десктопный комп, в который побольше памяти напихали.