Comments 22
В интернет выставлять RDP вообще не лучшее решение, лучше организовать инфраструктуру так, чтобы пользователи подключались к внутренней сети через VPN и дальше уже к нужным ресурсам
Это если делать всё красиво. Но, к сожалению, пользователь в основной своей массе туповат и не сможет настроить подключение по VPN. Потому временами приходится выставлять rdp наружу.
Само собой, не голым задом - закрыть все лишние порты, не использовать стандартные имена пользователей, использовать длинные случайные пароли, вовремя ставить обновления, банить ботов...
После этого пользователю остаётся сделать три клика мыши и ввести свои корпоративные логин/пароль.
Для l2tp иногда приходится править реестр.
Куча мест, где я настраивал rdp-сервера, не предполагают дальнейшей поддержки пользователей. То есть поломки чиню, если требуется, но вот каждому помогать настраивать подключение не собираюсь.
Чем больше накрутишь безопасности, тем менее удобно всем этим пользоваться.
И тем больше пользователи будут пытаться её обойти, делая всякие дыры в заборе.
Потому необходимо соблюдать баланс. Одно — когда вы большая контора с соответствующими оборотами, кучей сотрудников и уязвимых мест. Тут на вас будет и промышленный шпионаж наезжать, и власти, и вообще кто попало в надежде поживиться.
И другое — когда вы небольшой магазинчик с сервером на три-пять юзеров. Тут ваши враги — только боты да сами юзеры. От ботов — всё вышеописанное помогает, от юзеров — запреты на запуск программ (а в идеале — вообще удалённо отдавать одну только 1С, без доступа к рабочему столу).
Соглашусь про баланс полностью.
Однако вместе с балансом нужно учитывать и дальнейший возможный рост. Не, ну если контора не имеет планов роста - вопросов нет, но обычно планы есть. И тут проблема, что эти костыли (первоначальные решения) потом тянутся при росте этой конторы с девизом "пока не время переходить", а потом переходит в "уже поздно что-то менять, 100 чел на старой схеме, дорого и долго процессы перестраивать". И начинается вся эта поддержка легаси схем с кровавыми слезами и фразой "лучше бы сразу сделали норм".
Ну перегибать на 1К не стоит, конечно, но 30-100 ориентироваться уже нужно. Как раз примерно такой же аргумент был в конторе бывшей, где и выстрелили себе в ногу таким же образом. Потом тут удаденщик, там удаленщик, и вот нас уже 15 накопилось, не успел и глазом моргнуть, вышел из отпуска, уже и и пол сотни. Хотя в планах тоже было всего лишь 8 на конец года
Или можно вспомнить старый-добрый cmak:) но я бы конечно рекомендовал ssl vpn (вроде sstp, anyconnect, openvpn в конце концов) - минимальны проблемы с прохождением трафика у разных провайдеров и домашних роутеров
Доходит до того, что сидя с ноутом в офисе они по привычке всё равно заходят на сервер терминалов через vpn.
Можете начать с "дефолтного", каждый пользователь устанавливает https://openvpn.net/client-connect-vpn-for-windows/ путём скачать - нажать "далее" - "далее" - "далее" - "готово". Затем открывает свою почту и прямо из письма перетягивает иконку единственного, вложенного .ovpn файла в окошко с программой, где всего одна кнопка Вкл\Выкл, всё, никаких настроек со стороны пользователя, доверие к приложению OpenVPN Inc. значительно больше, чем к .exe с гитхаба, секьюрность по взрослому, порт сервера защищён "tls-auth", каждый пользователь "уникален", при необходимости можно управлять маршрутизацией у самого клиента "push route". "Чего ж тебе еще надо, собака? К\ф Иван Васильевич меняет профессию"
каждый пользователь устанавливает
Самостоятельно пользователь способен установить только вируса. :) Это раз.
Админить этот openvpn кто будет? Это два. Создать пользователя на сервере терминалов обычно может и тот мальчик, который ходит 1С обслуживать. А вот добавить пользователя в openvpn?
Я не говорю, что vpn надо избегать — наоборот, это самое правильное решение. Выдать пользователю служебный ноутбук, отобрать все права, настроить трёхфакторную аутентификацию. Это всё правильно и красиво. И я тоже пытаюсь такой вариант сделать. Но это я могу сделать только у «своих» пользователей, которые у меня на поддержке. А вот одноразовым нужно максимально простое и дубовое решение.
Я использую VeeamPN - там пользователи просто создаются и просто отключаются. Программа бесплатна.
Интересно, но для "просто и дубово" не катит. Это к ней надо виртуалку запускать, дополнительные инструкции писать...
Есть IDDS от Cyberarms. Старенькая, но зато работает под 2008 без лишних танцев с бубнами.
Использую ssh, проброс порта. В частности набор: Bitvise SSH Server + PuTTY
Bitvise SSH Server для некоммерческого использования - бесплатен. Брандмауэр - маршрутизатор.
Украдено подсмотрено здесь (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'}
}
Раньше использовал скрипт с пробросом порта через ssh . В итоге юзер подключался типа на localhost :) . Неудобно админить ключи юзеров оказалось и не могли с андроидов и ай-хрени подключаться.
Позже - просто открытие порта по icmp-кнокинг. Подключайся с чего хочешь. Но индивидуально юзеров админить нереально и проблемы с подключениями из плохого интернета.
В итоге нарисовал сайт на django с авторизацией через домен. Пользователю показаны кнопочки в соответствии с его группами в AD . По нажатию внешний ip временно добавляется в адрес-лист, генерится рдп-ярлык и скачивается пользователем. Если кнопка не рдп-сервера, а компа юзера, предварительно WoL на комп. - По моему мнению, очень неплохой компромисс получился между удобством и защитой.
Эффективная защита RDP «на минималках» ч.2