Запрет RDP для определённых пользователей с определённых IP?
Есть сервер с Win2003 Server, Kerio Winroute Firewall, Terminal Server. Есть виндовая группа пользователей Remote Desktop Users. Необходимо, чтобы определённые пользователи из этой группы могли подключаться(RDP) как с локальных IP адресов (внутренней подсети), так и из интернета, а остальные пользователи могли подключиться(RDP) только(!!) с локальных IP адресов.
Т.е., чтобы директор, к примеру, мог подключиться к серверу и из дома и с работы непосредственно, а Вася Иванов только с работы.
Каким образом такое можно реализовать? Может правилами Kerio или какими-нибудь виндовыми механизмани?
Очень плохо расшаривать прямой RDP коннект наружу, поэтому рекомендую наружу повесить VPN а вот через него коннект, будет уже аналогичен локалке. Таким образом наличие разрешения на VPN подключение будет естественным ограничением на подключение к удаленке не из локальной сети.
Думаю настройка VPN у директора не должна вызвать очень больших сложностей. Особенно если объяснить ему что это более безопасный вариант.
как говорил шеф "При бесконечном времени и бесконечной оплате возможно всё."
Итак:
Наружу глядит RDP и это менять никто пока не хочет. (если будет VPN проблема отпадает).
Т.е. наружу RDP отвечает всегда, но если будет введен верный пароль, верный пользователь, но клиент будет извне, необходимо отказать в соединении.
Сделайте Logon скрипт. Сверяйте адрес RDP клиента. И не пускайте лишних)))
Для того, чтобы запретить Васе Иванову подключаться из дома, а директору разрешить, будет достаточно приказа директора.
Не стоит плодить сущее без необходимости.
Сделайте проброс 63000 порта на rdp порт 3389 в керио и дайте шефу адрес для подключения типа myip:63000 вместо того что он сейчас использует myip(он же myip:3389).
Сделал на Powrshell разрешение на вход через rdp только определенным пользователям с правильным IP.
Ситуация похожая, только делал для 1с7 rdp.
Так же для надежности сделал отключение учетной записи если был вход пользователя с неправильного IP, с последующим ручным включением по запросу.
Скрипт выполняется при событии входа rdp, проверяет пользователя, IP, если все совпадает, ничего не делает, если не совпадает - событие заносится в журнал(имя пользователя, IP), учетка пользователя отключается.
Логон скрипт не стал делать потому что он будет выполняться для всех пользователей, а мне надо было только для определенных.
Write-EventLog -logname rdpuserfail -source powershell.exe -message "Сессия RDP завершена`nUSER: $usera `nIP: $ipa пользователь отключен." -eventid 1 #Заносим попытку входа не с разрешенного IP в журнал
$ObjUser = [ADSI]"WinNT://servername/$usera" #Кладем пользователя в ObjUser
$objUser.userflags = $objUser.userflags[0] -bor 2 #ставим галочку что пользователь отключен
$objUser.setinfo() #Записываем инфо в учетную запись
}
$eventuser = Get-EventLog -Logname security -message "*Тип входа:???10*" -Newest 1 #| ?{$_.eventid -eq 4624 } #получаем из журнала secyrity последнюю запись об успешном входе последнего пользователя rdp(тип входа 10)
if ($eventuser -ne $null) {
$message = $eventuser.message.substring($eventuser.message.indexof("Новый вход:"),($eventuser.message.indexof("Сведения о проверке подлинности:")-$eventuser.message.indexof("Новый вход:"))) #вырезаем из сообщения журнала только нужное от нового входа до сведений о проверке подлинности(в начале журнала дублируется имя пользователя неверное)
#IP
$StartstringIP = ($message.indexof("Сетевой адрес источника:"))+25 #находим позицию вхождения строки, добавляем длинну вхождения чтоб начать вырезать IP адрес а не начало строки
$endstringIP = ($message.indexof("Порт источника:"))-3 #в журнале следующая строка отделяется 3 переводами строки
$Ipstring = $message.substring($StartstringIP,$endstringIP-$StartstringIP) # режем только необходимое
#USER
$Startstringuser = ($message.indexof("Имя учетной записи:"))+21
$endstringuser = ($message.indexof("Домен учетной записи:"))-3
$userstring = $message.substring($Startstringuser,$endstringuser-$Startstringuser)
Спасибо всем. Идея с vpn крутилась в голове, но хотел сделать уже имеющимися средствами. Есть одна мысль, но необходим совет людей, работавших с Kerio:
Kerio поддерживает создание «своих» кериововских пользователей. В свойствах этих пользователей есть тип их идентификации. Я обычно использую идентификацию по IP, к примеру, если IP 192.168.1.6, то это Kerio пользователь директор и т.д… Но там есть также и другой вариант. Как я предполагаю, это тип идентификации средставми Windows.
Т.е. если директор зашёл по RDP под windows-учёткой Director и своим паролем и в Kerio есть учётка с именем таким же именем Director, то текущая сессия будет считаться от имени Kerio-учётки Director.
Если предыдущий пункт действительно работает так, как я догадываюсь, то останется только сделать Kerio пользователей с такими же именами, как Windows пользователи и создать в Kerio правило:
Name: Deny rdp users
Source: Internet //интерфейс с интернетом
Destination: Prohibited //эта группа Kerio пользователей, которым должен быть запрещён доступ по RDP из интернета. (Да, Kerio позволяет указывать в этом поле группы пользователей)
Service: RDP //определяем, к какому сервису закрыть доступ (определение идёт по порту)
Action: Deny //собственно, правило — отказать.
Таким образом, правило будет НЕ пускать по RDP из интернета пользователей, которые прошли виндовую авторизацию на сервере под своей учёткой, были автоматически сопоставлены с Kerio учёткой на основании имени пользователя и отнесены к группе Prohibited.
Осталось дождаться мнения человека, работавшего с Kerio по первому пункту: действительно ли оно таким образом работает? Надеюсь, такой человек найдётся :)
И все таки при этом вы оставляете наружу прямой RDP безопасность которого по моим сведениям на порядок ниже VPN.
Это означает что при очень большом желании «доброжелатели» смогут посетить вашу сеть от имени директора.
Хотя конечно можно списать все на то что у меня параноя, мне все же кажется что админ от рождения должен быть параноиком :-)
Админ параноик может для прогулок по интернету выделить отдельный сервер в локальной сети, доступ к которому открыть по rdp (гигабитной сети более чем достаточно для того чтобы не сильно тормозил флеш и анимация, но 'при злоупотреблении ими' количество пользователей, при котором еще комфортно, может стремиться к единицам)
Еще админ параноик может на все машины установить виртуальную машину, внутри которой доступ в интернет есть… — решение гораздо комфортнее для пользователей но более требовательно к ресурсам рабочих станций.
Стоит ли говорить что эти выделенные машины для интернета могут автоматически принудительно очищаться при старте или периодически?
А настройки браузера можно синхронизировать (например firefox sync, возможен свой сервер)
и еще много много других решений, которые позволят решать различные security проблемы
Сделайте юзеров в Керио и отметьте только галку в свойствах юзера, что он может подключать впн.
А на интерфейсе который в инет смотрит RDP на 3389 закройте.
Ну и правило для «ВПН клиентов» там простое — разрешить туда-сюда