none
Запрет доступа на сервер терминалов с определенных ПК RRS feed

  • Вопрос

  • Коллеги, есть задача запретить доступ на сервер терминалов (Win2k3 R2) с определенной группы компьютеров, если ли штатные средства или необходимо использовать скрипты?


    MCP, MCDST
    30 марта 2009 г. 10:46

Ответы

  • Все-таки самое правильное решение одно - скриптом.

    Вот что наваял:

    Скрипт в автозапуске на сервере терминалов проверяет членство клиентского ПК в определенной группе , если условие = true, то
    пользователю сервера терминалов выдаётся на экран сообщение и по нажатию кнопки "ок" происходит завершение сеанса.

    Всем спасибо за обсуждение.

    Option Explicit
    
    
    
    Dim objShell, objNetwork, objSysInfo, arrGroups, strUser, strComputer, objComputer, strComputerGroup, Group, objname , strClientname, res , text , title, objTrans, objDomain, GetDN
    
    
    
    Const TargetGroup = ("cn=pusers1cv8,ou=1с,ou=приложения,ou=предприятие,dc=domain,dc=ru")
    
    
    
    Const ADS_NAME_TYPE_NT4 = 3
    
    
    
    Const ADS_NAME_INITTYPE_GC = 3
    
    
    
    Const ADS_NAME_TYPE_1779 = 1
    
    
    
    Set objShell = CreateObject("WScript.Shell")
    
    
    
    Set objNetwork = CreateObject("WScript.Network")
    
    
    
    Set objSysInfo = CreateObject("ADSystemInfo")
    
    
    
    Set objname = CreateObject ("NameTranslate")
    
    
    
    strComputer = objShell.ExpandEnvironmentStrings("%CLIENTNAME%")
    
    
    
    On Error Resume Next
    
    
    
       Set objTrans = CreateObject("NameTranslate")
    
    
    
       Set objDomain = getObject("LDAP://rootDse")
    
    
    
       objTrans.Init ADS_NAME_INITTYPE_GC, ""
    
    
    
       objTrans.Set ADS_NAME_TYPE_NT4, objNetwork.UserDomain & "\" _
    
    
    
       & strComputer & "$"
    
    
    
       GetDN = objTrans.Get(ADS_NAME_TYPE_1779)
    
    
    
       
    
    
    
       If IsNull(objTrans.Get(ADS_NAME_TYPE_1779)) Then
    
    
    
          Wscript.Echo ("Computer is not found in a OU or you don't have enough rights to view")
    
    
    
          WScript.Quit
    
    
    
       Else
    
    
    
    strClientname = objTrans.Get(ADS_NAME_TYPE_1779)
    
    
    
       
    
    
    
       End If
    
    
    
    Set objComputer = GetObject("LDAP://" & strClientname)
    
    
    
    arrGroups = objComputer.GetEx("memberOf")
    
    
    
     If (IsEmpty(arrGroups) = True) Then
    
    
    
      strComputerGroup = ""
    
    
    
      ElseIf (TypeName(arrGroups) = "String") Then
    
    
    
      strComputerGroup = LCase(arrGroups)
    
    
    
      Else
    
    
    
       strComputerGroup = LCase(Join(arrGroups))
    
    
    
     End If
    
    
    
     If InStr(strComputerGroup, TargetGroup) Then
    
    
    
      text = "Текст сообщения!"
    
    
    
      title = "Внимание!"
    
    
    
      res=MsgBox (text,vbExclamation,Title)
    
    
    
     End If
    
    
    
     If res=vbOK Then 
    
    
    
        objShell.Run "logoff"
    
    
    
        Wscript.Sleep (2000)
    
    
    
     End If
    
    
    
    

    MCP, MCDST , MCTS
    • Помечено в качестве ответа _MaZaY_ 31 марта 2009 г. 13:59
    31 марта 2009 г. 13:56

Все ответы

  • firewall, ipsec, nework equipment
    на сетевом уровне любым из вышеперечисленных средств.

    Если все компьютеры (легальные или нет) в одной сети, то видимо только ipsec.

    30 марта 2009 г. 11:07
  • Можно при помощи IPSec. Вкратце о том, как это сделать, рассказано вот тут https://msdb.ru/Downloads/Events/Materials/TechNetSpring2005/03.ppt


    Все вышесказанное является моим личным мнением, не имеющим отношения к корпорации Майкрософт
    • Предложено в качестве ответа Vinokurov YuriyModerator 30 марта 2009 г. 11:08
    • Отменено предложение в качестве ответа _MaZaY_ 30 марта 2009 г. 11:38
    30 марта 2009 г. 11:07
    Модератор
  • А разве нельзя к этой группе компьютеров применить политику, запрещающую запуск клиента службы терминалов?

    30 марта 2009 г. 11:08
  • Коллеги, есть задача запретить доступ на сервер терминалов (Win2k3 R2) с определенной группы компьютеров , если ли штатные средства или необходимо использовать скрипты?


    MCP, MCDST
    На закладке Permissions в настройках Rdp-Tcp можно добавлять ПК - ставим deny и получаем результат.

    Первое правило Windows - делай резервную копию. Коды ошибок смотрите по адресу http://support.microsoft.com и http://eventid.net/
    • Предложено в качестве ответа cognize_ 30 марта 2009 г. 11:14
    • Отменено предложение в качестве ответа _MaZaY_ 30 марта 2009 г. 11:43
    30 марта 2009 г. 11:14
  • в теории можно, причем согласно той же теории можно просто добавить исключения по учетным записям компьютеров в ACL. На практике это крайне трудно реализуемо - лично мне этот фокус так и не удался. Причина в том, что в среде Windows  при обращении к сетевым ресурсам пользователю достаточно указать корректные параметры пользовательской учетной записи для получения права доступа к любому компьютеру в сети. При этом учетная запись компьютера является не критичной.
    Все вышесказанное является моим личным мнением, не имеющим отношения к корпорации Майкрософт
    30 марта 2009 г. 11:17
    Модератор
  • +

    Так же можно изменить стандартный номер порта для терминального сервера

    В реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

    Изменяем PortNumber, перезагружаемся.
    Первое правило Windows - делай резервную копию. Коды ошибок смотрите по адресу http://support.microsoft.com и http://eventid.net/
    30 марта 2009 г. 11:25
  • В теории нельзя, т.к. ни один SID компьютера не входит в дескриптор безопасности пользователя, залогиненого на этом компьютере.
    Используя в ACL SID компьютеров, можно запретить доступ из под Local System этих компьютеров.
    CCNA, MCSA
    30 марта 2009 г. 11:27
  • Коллеги, есть задача запретить доступ на сервер терминалов (Win2k3 R2) с определенной группы компьютеров , если ли штатные средства или необходимо использовать скрипты?


    MCP, MCDST
    На закладке Permissions в настройках Rdp-Tcp можно добавлять ПК - ставим deny и получаем результат.

    Первое правило Windows - делай резервную копию. Коды ошибок смотрите по адресу http://support.microsoft.com и http://eventid.net/
    Всё это уже пробовал.  Результат нулевой.

    Блокировка на сетевом уровне тоже не подходит, т.к. пользователю желательно сообщить о том, что на его ПК установлено необходимое ПО и работать он теперь должен локально.
    Буду копать в сторону логон скриптов.  

    MCP, MCDST, MCTS
    30 марта 2009 г. 11:37
  • Коллеги, есть задача запретить доступ на сервер терминалов (Win2k3 R2) с определенной группы компьютеров , если ли штатные средства или необходимо использовать скрипты?


    MCP, MCDST
    На закладке Permissions в настройках Rdp-Tcp можно добавлять ПК - ставим deny и получаем результат.

    Первое правило Windows - делай резервную копию. Коды ошибок смотрите по адресу http://support.microsoft.com и http://eventid.net/
    Всё это уже пробовал.  Результат нулевой.

    Блокировка на сетевом уровне тоже не подходит, т.к. пользователю желательно сообщить о том, что на его ПК установлено необходимое ПО и работать он теперь должен локально.
    Буду копать в сторону логон скриптов.  

    MCP, MCDST, MCTS
    Не проще ли генерировать письмо для пользователя после установки ПО ?

    Первое правило Windows - делай резервную копию. Коды ошибок смотрите по адресу http://support.microsoft.com и http://eventid.net/
    30 марта 2009 г. 11:52
  • >>Не проще ли генерировать письмо для пользователя после установки ПО ?

    Это моё новое место работы, а тут к счаcтью , совершенно не спланирована структура AD, а я еще не успел,  т.е. привязки ПК-ПОЛЬЗОВАТЕЛЬ просто нет.
    Новое ПО распространяется политикой , кол-во ПК 300+, за одним пк может работать несколько пользователей,  поэтому  генерировать письмо просто некому, есть только %computername%  ;)
    Да, пользователи могут игнорировать сообщение отдела ИТ, поэтому доступ нужно именно запрещать. 


    MCP, MCDST , MCTS

     

    30 марта 2009 г. 11:59
  • >>Не проще ли генерировать письмо для пользователя после установки ПО ?

    Это моё новое место работы, а тут к счаcтью , совершенно не спланирована струкрура AD, а я еще не успел,  т.е. привязки ПК-ПОЛЬЗОВАТЕЛЬ просто нет.
    Новое ПО распространяется политикой , кол-во ПК 300+, за одним пк может работать несколько пользователей,  поэтому  генерировать письмо просто некому  ;)
    Да, пользователи могут игнорировать сообщение отдела ИТ, поэтому доступ нужно именно запрещать.


    MCP, MCDST , MCTS
    Если в AD выбрать пользователей при помощи shift или ctrl, то можно на закладке Account поставить галочку на опции Log on To, где есть возможность ограничить список ПК

    Первое правило Windows - делай резервную копию. Коды ошибок смотрите по адресу http://support.microsoft.com и http://eventid.net/
    30 марта 2009 г. 12:05
  • Не понял вашу мысль ,  зачем мне это ?
    MCP, MCDST , MCTS
    30 марта 2009 г. 12:09
  • Не понял вашу мысль ,  зачем мне это ?
    MCP, MCDST , MCTS
    Если в данной опции указать Comp1, то пользователь сможет зайти (интерактивно - тоесть log on) только на ПК Comp1, а на другие не сможет.

    Первое правило Windows - делай резервную копию. Коды ошибок смотрите по адресу http://support.microsoft.com и http://eventid.net/
    30 марта 2009 г. 12:15
  • Не понял вашу мысль ,  зачем мне это ?
    MCP, MCDST , MCTS
    Если в данной опции указать Comp1, то пользователь сможет зайти (интерактивно - тоесть log on) только на ПК Comp1, а на другие не сможет.

    Первое правило Windows - делай резервную копию. Коды ошибок смотрите по адресу http://support.microsoft.com и http://eventid.net/

    Это понятно.
    Но я не вижу как можно применить данный функционал к моей задаче.
    MCP, MCDST , MCTS
    30 марта 2009 г. 12:18
  • Тогда давайте ещё раз разберёмся что у Вас есть

    "Это моё новое место работы, а тут к счаcтью , совершенно не спланирована струкрура AD, а я еще не успел,  т.е. привязки ПК-ПОЛЬЗОВАТЕЛЬ просто нет."

    Не понятно есть AD или нет ?

    Что значит "а тут к счаcтью , совершенно не спланирована струкрура AD" ?

    "Новое ПО распространяется политикой" - какой ? групповой политикой AD - так значит AD есть ?

    "кол-во ПК 300+, за одним пк может работать несколько пользователей,  поэтому  генерировать письмо просто некому  ;)" а тут можно bat файл класть в all users - автозагрузка



    Первое правило Windows - делай резервную копию. Коды ошибок смотрите по адресу http://support.microsoft.com и http://eventid.net/
    30 марта 2009 г. 12:25
  • >>Не проще ли генерировать письмо для пользователя после установки ПО ?

    Это моё новое место работы, а тут к счаcтью , совершенно не спланирована структура AD, а я еще не успел,  т.е. привязки ПК-ПОЛЬЗОВАТЕЛЬ просто нет.
    Новое ПО распространяется политикой , кол-во ПК 300+, за одним пк может работать несколько пользователей,  поэтому  генерировать письмо просто некому, есть только %computername%  ;)
    Да, пользователи могут игнорировать сообщение отдела ИТ, поэтому доступ нужно именно запрещать. 


    MCP, MCDST , MCTS

     


    [off]Если ваши пользователи способны игнорировать служебные письма от ИТ-отдела, то нужно воздействовать не через системные ресурсы, а через административные. Помогает гораздо лучше политик безопасности и остальных премудростей...[/off]
    Все вышесказанное является моим личным мнением, не имеющим отношения к корпорации Майкрософт
    30 марта 2009 г. 12:29
    Модератор
  • Все-таки самое правильное решение одно - скриптом.

    Вот что наваял:

    Скрипт в автозапуске на сервере терминалов проверяет членство клиентского ПК в определенной группе , если условие = true, то
    пользователю сервера терминалов выдаётся на экран сообщение и по нажатию кнопки "ок" происходит завершение сеанса.

    Всем спасибо за обсуждение.

    Option Explicit
    
    
    
    Dim objShell, objNetwork, objSysInfo, arrGroups, strUser, strComputer, objComputer, strComputerGroup, Group, objname , strClientname, res , text , title, objTrans, objDomain, GetDN
    
    
    
    Const TargetGroup = ("cn=pusers1cv8,ou=1с,ou=приложения,ou=предприятие,dc=domain,dc=ru")
    
    
    
    Const ADS_NAME_TYPE_NT4 = 3
    
    
    
    Const ADS_NAME_INITTYPE_GC = 3
    
    
    
    Const ADS_NAME_TYPE_1779 = 1
    
    
    
    Set objShell = CreateObject("WScript.Shell")
    
    
    
    Set objNetwork = CreateObject("WScript.Network")
    
    
    
    Set objSysInfo = CreateObject("ADSystemInfo")
    
    
    
    Set objname = CreateObject ("NameTranslate")
    
    
    
    strComputer = objShell.ExpandEnvironmentStrings("%CLIENTNAME%")
    
    
    
    On Error Resume Next
    
    
    
       Set objTrans = CreateObject("NameTranslate")
    
    
    
       Set objDomain = getObject("LDAP://rootDse")
    
    
    
       objTrans.Init ADS_NAME_INITTYPE_GC, ""
    
    
    
       objTrans.Set ADS_NAME_TYPE_NT4, objNetwork.UserDomain & "\" _
    
    
    
       & strComputer & "$"
    
    
    
       GetDN = objTrans.Get(ADS_NAME_TYPE_1779)
    
    
    
       
    
    
    
       If IsNull(objTrans.Get(ADS_NAME_TYPE_1779)) Then
    
    
    
          Wscript.Echo ("Computer is not found in a OU or you don't have enough rights to view")
    
    
    
          WScript.Quit
    
    
    
       Else
    
    
    
    strClientname = objTrans.Get(ADS_NAME_TYPE_1779)
    
    
    
       
    
    
    
       End If
    
    
    
    Set objComputer = GetObject("LDAP://" & strClientname)
    
    
    
    arrGroups = objComputer.GetEx("memberOf")
    
    
    
     If (IsEmpty(arrGroups) = True) Then
    
    
    
      strComputerGroup = ""
    
    
    
      ElseIf (TypeName(arrGroups) = "String") Then
    
    
    
      strComputerGroup = LCase(arrGroups)
    
    
    
      Else
    
    
    
       strComputerGroup = LCase(Join(arrGroups))
    
    
    
     End If
    
    
    
     If InStr(strComputerGroup, TargetGroup) Then
    
    
    
      text = "Текст сообщения!"
    
    
    
      title = "Внимание!"
    
    
    
      res=MsgBox (text,vbExclamation,Title)
    
    
    
     End If
    
    
    
     If res=vbOK Then 
    
    
    
        objShell.Run "logoff"
    
    
    
        Wscript.Sleep (2000)
    
    
    
     End If
    
    
    
    

    MCP, MCDST , MCTS
    • Помечено в качестве ответа _MaZaY_ 31 марта 2009 г. 13:59
    31 марта 2009 г. 13:56