Страницы

Поиск по вопросам

Показаны сообщения с ярлыком active-directory. Показать все сообщения
Показаны сообщения с ярлыком active-directory. Показать все сообщения

пятница, 21 февраля 2020 г.

Переход на OpenSource

#linux #active_directory #opensource #samba


Доброго дня. Работаю системным администратором в гос. структуре. Нам поставили задачу
"перенести" инфраструктуру на опенсорсные решения, а именно AD и Exchange. Более 1500
пользователей. С линухами работаю относительно недавно, и соответственно, малоопытный. 
Для решения задачи пытался поставить Samba4 в роли контроллера домена и привязать
всех пользователей к OpenLDAP на Debian 8. Ничего не вышло. Эти двое видимо не дружат,
так по крайней мере написано на Samba Wiki.
А вообще, что нам требуется от контроллера домена:


Пользователи (Win 7 и XP, планируется в будущем постепенный перевод пользователей
на линукс машины) распределены по поддоменам (region.asdf.com,
city.asdf.com, office.asdf.com и т.д.)
Доступ к сетевым принтерам в домене.
Общие папки и расшаренные папки на компах пользователей (доступ через "Сетевое окружение"
на винде)
Групповые политики.


Samba вроде как всё это умеет, по описанию.. но без LDAP он не нужен..

А вместо Exchange хотим поставить почтовик с веб клиентом и отучить пользователей
от Outlook. 

Так вот, в связи с этим вопрос... Это осущесвимо на линуксе или всё это волшебный
мир с единорогами? Начальство ясно дало понять, что денег на лицензию майкрософту не
дадут, из-за этого и переход на опенсорс... -_-
    


Ответы

Ответ 1



Я не сисадмин, но на люнихе живу уже почти 20 лет и моё мнение таково: Когда кто-то пытается перейти на "опенсорсные решения", то самое первое и (казалось бы) самое естественное - попытаться перенести всё, как есть, используя аналоги из люниха. В первую очередь - самбу. Т.е. смоделировать винду на люнихе. Я убеждён, что это - самый тяжёлый и неэффективный путь. Рабочие группы, AD и прочие "гениальные" изобретения Билла Гейтса никак не вписываются в идеологию *NIX систем. Достаточно вспомнить такие проблемы, как : Разный подход к использованию имён файлов и каталогов Разных подход к понятию "пользователь" и его права Разный подход к понятию "свойства (режим)" файла / каталога. Ну и так далее... Выполнить адекватный перенос очень сложно! Гораздо проще забить на все эти рабочие группы и AD и использовать нативные возможности люниха - файловую систему NFS (которая позволит создавать сетевые структуры гораздо более простыми методами) и права пользователей, предоставляемые самим люнихом. Если у Вас какая-то супер-безопасная контора, можно использовать Linux SE (Например: https://xakep.ru/2015/09/15/astra-linux-se/). Это даст Вам уровень безопасности намного превышающий виндовозный. Если Вам нужен стандартный набор сетевых сервисов, сделайте один сервер под nas4free (https://www.gotoadm.ru/network-storage-using-nas4free-part-1-installation/) - там одним щелчком запускаются все типовые сервисы: Файловая помойка с любым уровнем RAID FTP сервер WEB сервер Самба контроллер Почтовый сервер ... Я не помню, что там ещё. Короче : продумайте структуру системы и сделайте всё с нуля!

Ответ 2



Добрый день! То что пишу - сугубо мое мнение. На вашем месте я бы использовал Samba(https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller) в качестве контроллера домена управлять можно из mmc консоли установив RSAT для windows. Если на сервере то для создания\удаления и редактирования пользователей phpldapadmin можно использовать. С exchange посложнее но есть вариант развернуть на схему SAMBA AD DC - openchange (правда проект вроде как закрылся) или как вариант посмотреть в сторону SOGo (https://sogo.nu/) в качестве фронтенда для postfix(или exim кому как удобнее)\dovecot. Есть еще kolab (https://kolab.org/) он в себе содержит DirSrv(это реализация LDAP) почтовик(postfix\dovecot\spamassasin\postgrey) и в качестве фронтенда - roundcube Но самый простой вариант для вас взять Zentyal он на убунте с самбой все в нем и почтовик и прокси и сого и файерволл. А вообще начинание крутое! успехов! (подумайте сразу чем можно MS Office заменить)

воскресенье, 16 февраля 2020 г.

Переход на OpenSource

#linux #active_directory #opensource #samba


Доброго дня. Работаю системным администратором в гос. структуре. Нам поставили задачу
"перенести" инфраструктуру на опенсорсные решения, а именно AD и Exchange. Более 1500
пользователей. С линухами работаю относительно недавно, и соответственно, малоопытный. 
Для решения задачи пытался поставить Samba4 в роли контроллера домена и привязать
всех пользователей к OpenLDAP на Debian 8. Ничего не вышло. Эти двое видимо не дружат,
так по крайней мере написано на Samba Wiki.
А вообще, что нам требуется от контроллера домена:


Пользователи (Win 7 и XP, планируется в будущем постепенный перевод пользователей
на линукс машины) распределены по поддоменам (region.asdf.com,
city.asdf.com, office.asdf.com и т.д.)
Доступ к сетевым принтерам в домене.
Общие папки и расшаренные папки на компах пользователей (доступ через "Сетевое окружение"
на винде)
Групповые политики.


Samba вроде как всё это умеет, по описанию.. но без LDAP он не нужен..

А вместо Exchange хотим поставить почтовик с веб клиентом и отучить пользователей
от Outlook. 

Так вот, в связи с этим вопрос... Это осущесвимо на линуксе или всё это волшебный
мир с единорогами? Начальство ясно дало понять, что денег на лицензию майкрософту не
дадут, из-за этого и переход на опенсорс... -_-
    


Ответы

Ответ 1



Я не сисадмин, но на люнихе живу уже почти 20 лет и моё мнение таково: Когда кто-то пытается перейти на "опенсорсные решения", то самое первое и (казалось бы) самое естественное - попытаться перенести всё, как есть, используя аналоги из люниха. В первую очередь - самбу. Т.е. смоделировать винду на люнихе. Я убеждён, что это - самый тяжёлый и неэффективный путь. Рабочие группы, AD и прочие "гениальные" изобретения Билла Гейтса никак не вписываются в идеологию *NIX систем. Достаточно вспомнить такие проблемы, как : Разный подход к использованию имён файлов и каталогов Разных подход к понятию "пользователь" и его права Разный подход к понятию "свойства (режим)" файла / каталога. Ну и так далее... Выполнить адекватный перенос очень сложно! Гораздо проще забить на все эти рабочие группы и AD и использовать нативные возможности люниха - файловую систему NFS (которая позволит создавать сетевые структуры гораздо более простыми методами) и права пользователей, предоставляемые самим люнихом. Если у Вас какая-то супер-безопасная контора, можно использовать Linux SE (Например: https://xakep.ru/2015/09/15/astra-linux-se/). Это даст Вам уровень безопасности намного превышающий виндовозный. Если Вам нужен стандартный набор сетевых сервисов, сделайте один сервер под nas4free (https://www.gotoadm.ru/network-storage-using-nas4free-part-1-installation/) - там одним щелчком запускаются все типовые сервисы: Файловая помойка с любым уровнем RAID FTP сервер WEB сервер Самба контроллер Почтовый сервер ... Я не помню, что там ещё. Короче : продумайте структуру системы и сделайте всё с нуля!

Ответ 2



Добрый день! То что пишу - сугубо мое мнение. На вашем месте я бы использовал Samba(https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller) в качестве контроллера домена управлять можно из mmc консоли установив RSAT для windows. Если на сервере то для создания\удаления и редактирования пользователей phpldapadmin можно использовать. С exchange посложнее но есть вариант развернуть на схему SAMBA AD DC - openchange (правда проект вроде как закрылся) или как вариант посмотреть в сторону SOGo (https://sogo.nu/) в качестве фронтенда для postfix(или exim кому как удобнее)\dovecot. Есть еще kolab (https://kolab.org/) он в себе содержит DirSrv(это реализация LDAP) почтовик(postfix\dovecot\spamassasin\postgrey) и в качестве фронтенда - roundcube Но самый простой вариант для вас взять Zentyal он на убунте с самбой все в нем и почтовик и прокси и сого и файерволл. А вообще начинание крутое! успехов! (подумайте сразу чем можно MS Office заменить)

понедельник, 3 февраля 2020 г.

Как удалить данные до конца строки после запятой?

#linux #windows #powershell #active_directory


Есть текстовый файл:


  "CN=Username Alibabaev,OU=?????? ????????????,OU=???ep. ????????,OU=??? \"????????
??????\",DC=domain,DC=ru"
  
  "CN=SUsername DAlibabaev,OU=?????? ????????????,OU=???ep.
  ????????,OU=??? \"???????? ??????\",DC=domain,DC=ru"
  
  "CN=Supeman Batman,OU=??,OU=22 ????????,DC=domain,DC=ru"
  
  "CN=Sergio Amanol,OU=??,OU=22 ????????,DC=domain,DC=ru"
  
  "CN=username,CN=Users,DC=domain,DC=ru"


Нужно удалить то что идёт после "CN=User Suser,  на всех строках. Как можно это сделать?
    


Ответы

Ответ 1



На PowerShell тоже элементарно: cat filename.txt | %{$_.split(',')[0]} Если нужно получить только имена пользователей без CN=, то так: cat filename.txt | %{$_.split('=,')[1]} cat - это алиас для Get-Content, % - алиас для Foreach-Object (для обработки каждой строки).

Ответ 2



В linux задача решается с помощью awk элеметарно (при условии, что в CN нет символа запятой) cat filename.txt | awk -F, '{ print $1; }' -F, - опция awk задающая разделитель (в данном случае ,, по умолчанию - пробел или группа пробельных символов), потом выводим первое поле. Проблемы возникнут при создании пользователя с именем Василий, Алибабаевич Поскольку powershell совсем не знаю, на виндах бы решил средствами python или perl, благо устанавливаются совсем просто. В целом, проблема запятой в имени тоже решается несложно, если нужно напишу скрипт на perl, там буквально пара-тройка строк будет.

пятница, 24 января 2020 г.

Проверка принадлежности группе безопасности Azure AD

#aspnet #active_directory #azure


Имеется Локальная Active Directory и её реплика в Azure Active Directory. Пишу Asp.net
приложение с аутентификацией через рабочие аккаунты в облаке, аутентификация работает
нормально. Хочу проверить, принадлежит ли пользователь определенной группе с помощью
такого кода:

User.Identity.IsInRole("имя_группы");


или

[Authorize(Role = "имя_группы")]


Проблема в том, что если в приложении windows-аутентификация, то в локальной AD группы
указываются как ДОМЕН\имя_группы (например Contoso\administrators), но в Azure AD же
нет доменов? Как правильно указать группу в условии?

Авторизация проходит через ADFS, который в том же Azure.
    


Ответы

Ответ 1



Так сделайте тестовую страничку, на которой без авторизации выведите список ролей пользователя. Например, так: public ActionResult Roles() => Content(string.Join(",", from claim in ((ClaimsIdentity)User.Identity).Claims.FindAll(ClaimTypes.Role) select claim.Value)); Сразу станет видно в каком формате там роли передаются.

вторник, 16 июля 2019 г.

Нужен ли новый сайт в лесу AD?

у меня сейчас сеть с 2мя ДК территориально разнесёнными в офисе сеть 204.85.134.0/24 в филиале 10.10.4.0/24
Контора переезжает, и отказывается от временного филиала (где сейчас располагается второй ДК) Во время переезда у нас будет 2 ДК но второй уже не с филиала - а новый. В новом офис сеть: 10.0.0.0/23
После переезда старый контроллер будет убран. Но добавится новый "железный" ДК.
и меня интересует необходимо ли создавать новый сайт для нового офиса?
Дело в том что я решил предварительно почитать статьи по моей теме, и нашёл вот такую фразу:
Прежде чем добавлять новый сервер в домен и устанавливать на нём роль AD DS необходимо создать новый сайт (только для филиалов, в пределах одной локальной сети сайт создавать не нужно!) и определить сеть для него. Сайт (site) - одна или несколько сетей TCP\IP имеющих высокоскоростное соединение. Как правило, сайты являются географически распределёнными. При наличии современных подключений к интернету, например FTTX, и небольших объёмах репликации необходимость нескольких сайтов может не понадобиться.


Ответ

Получил ответ на тостере:
у вас все в одном месте и сайт вам не нужен , втрой КД можно и нужно иметь , все будет ок @oia
Воспользовался им - и действительно никакой проблемы для работы AD отсутствие разделения на сайты не создаёт. А учитывая что разделение временное, два раза вмешиваться в структуру леса не стоит.

среда, 10 июля 2019 г.

Как получить имя и домен пользователя через Active Directory?

Подскажите пожалуйста каким образом можно получить данные о пользователи через Active Directory?
Если есть какие-то статьи по данному вопросу, можно получить их в комментариях?
А если вообще не сложно, можно пример кода?


Ответ

С помощью следующего кода удалось решить эту задачу.
public static void main(String[] args) throws LdapException, NamingException{ Hashtable ldapEnv = new Hashtable(11); ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); ldapEnv.put(Context.PROVIDER_URL, "ldap://ad.domain.com:389"); ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); ldapEnv.put(Context.SECURITY_PRINCIPAL, "login@domain.com"); ldapEnv.put(Context.SECURITY_CREDENTIALS, "password"); InitialDirContext ldapContext = new InitialDirContext(ldapEnv); // Create the search controls SearchControls searchCtls = new SearchControls(); // Specify the attributes to return String returnedAtts[]={"sn","givenName", "samAccountName","mail"}; searchCtls.setReturningAttributes(returnedAtts); // Specify the search scope searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); // specify the LDAP search filter String searchFilter = "(&(objectCategory=user)(objectClass=person)(samAccountName=userName))"; // Specify the Base for the search String searchBase = "cn=users,dc=domain,dc=com"; // initialize counter to total the results int totalResults = 0; // Search for objects using the filter NamingEnumeration answer = ldapContext.search(searchBase, searchFilter, searchCtls); // Loop through the search results while (answer.hasMoreElements()) { javax.naming.directory.SearchResult sr = answer.next(); totalResults++; System.out.println(">>>" + sr.getName()); Attributes attrs = sr.getAttributes(); System.out.println(">>>>>>" + attrs.get("samAccountName")); System.out.println(">>>>>>" + attrs.get("mail")); //System.out.println(">>>>>>" + attrs.get("url"));
} }

суббота, 6 июля 2019 г.

Ограничение действия привилегии

Есть ли какой-то стандартный способ выдать пользователю или группе пользователей домена некоторую привилегию, например "Вход в качестве службы". И ограничить ее действие одним или несколькими компьютерами?
Вариант выдавать привилегию в локальных политиках конкретного компьютера доменным пользователям не рассматривается.
Интересует любое решение: MMC консоль, PowerShell, API.
Если это принципиально невозможно для произвольной привилегии, то, может, есть какие-то специальные привилегии, которое это позволяют делать?


Ответ

Итак. Алгоритм следующий
В оснастке Active Directory - пользователи и компьютеры где-то в дереве создаем новое подразделение (Depatment)
Далее кликаем по нужному компьютеру и перемещаем его в созданное подразделение
Заходим в свойства созданного подразделения, выбираем вкладку групповые политики и жмем Открыть
В появившемся окне создаем новую групповую политику и открываем ее на редактирование
Далее мы переопределяем те политики которые нас интересуют.
После этого все компьютеры в этом подразделении и под-подразделениях получают нашу политику

воскресенье, 7 апреля 2019 г.

Как удалить данные до конца строки после запятой?

Есть текстовый файл:
"CN=Username Alibabaev,OU=?????? ????????????,OU=???ep. ????????,OU=??? \"???????? ??????\",DC=domain,DC=ru" "CN=SUsername DAlibabaev,OU=?????? ????????????,OU=???ep. ????????,OU=??? \"???????? ??????\",DC=domain,DC=ru" "CN=Supeman Batman,OU=??,OU=22 ????????,DC=domain,DC=ru" "CN=Sergio Amanol,OU=??,OU=22 ????????,DC=domain,DC=ru" "CN=username,CN=Users,DC=domain,DC=ru"
Нужно удалить то что идёт после "CN=User Suser, на всех строках. Как можно это сделать?


Ответ

На PowerShell тоже элементарно:
cat filename.txt | %{$_.split(',')[0]}
Если нужно получить только имена пользователей без CN=, то так:
cat filename.txt | %{$_.split('=,')[1]}
cat - это алиас для Get-Content, % - алиас для Foreach-Object (для обработки каждой строки).