Админская фамилия

Make Sysadmins Great Again

LAPS (Local Administrator Password Solution)

Очень нужный инструмент. Сколько тысяч граблей было сломано в попытках решить то, что уже решено вендором.Материал тупо скопировав с telegra.ph, чтобы не потерять.Как оказалось, многие не знают, что давно есть бесплатное решение от Microsoft по управлению локальными паролями администраторов под названием LAPS (Local Administrator Password Solution). Я решил, что надо собрать подборку материалов, связанных с ЛАПСом, чтобы все было в одном месте. Часть материалов есть на русском, часть на сами знаете каком, но перед этим давайте разберемся для чего нужен LAPS:Безопасно хранить пароль локального администратора в Active Directory для каждой рабочей станции;Устанавливать правила сложности и длины пароля;Менять пароль локального администратора на устройстве через Active Directory;Устанавливать срок истечения времени действия пароля локального администратора и автоматически менять его.Посты на русском: Раз - https://www.atraining.ru/laps-local-administrator-password-solution/Два - http://winitpro.ru/index.php/2015/05/07/ms-local-administrator-password-solution-upravlenie-parolyami-lokalnyx-administratorov-v-domene/Скачать Local Administrator Password Solution (LAPS) версия 6.2 - https://www.microsoft.com/en-us/download/details.aspx?id=46899 Просто классика. Управление локальными паролями администраторов в восьми частях:Overview - https://blogs.technet.microsoft.com/platformspfe/2013/10/22/managing-local-administrator-passwords/Random Password Generation - https://blogs.technet.microsoft.com/b/platformspfe/archive/2014/01/20/part-2-managing-local-administrator-passwords.aspxSecure Active Directory Attribute Update - https://blogs.technet.microsoft.com/b/platformspfe/archive/2014/02/17/part-3-managing-local-administrator-passwords.aspxUpdate Local Account’s Password - https://blogs.technet.microsoft.com/b/platformspfe/archive/2014/02/17/part-4-managing-local-administrator-passwords.aspxLogging Function Output - https://blogs.technet.microsoft.com/b/platformspfe/archive/2014/02/17/part-5-managing-local-administrator-passwords.aspxExtending The Active Directory Schema - https://blogs.technet.microsoft.com/b/platformspfe/archive/2014/04/02/part-6-managing-local-administrator-passwords.aspxCompleted Script - https://blogs.technet.microsoft.com/b/platformspfe/archive/2014/05/13/part-7-managing-local-administrator-passwords.aspxCompleted Secure Password Viewer - https://blogs.technet.microsoft.com/b/platformspfe/archive/2014/08/12/part-8-final-managing-local-administrator-passwords.aspxLAPS Audit Reporting via WEF PoSH and PowerBI - https://blogs.technet.microsoft.com/kfalde/2015/11/18/laps-audit-reporting-via-wef-posh-and-powerbi/ Весь архив лежит на гитхабе, включая отчет для PowerBI - https://github.com/kurtfalde/LAPS-ReportingMicrosoft LAPS и Configuration ManagerРасширение для консоли (работает с SCCM 2012 R2 CU1 и SCCM Current Branch: 1511, 1602, 1606), которое позволяет просматривать пароли для устройств - https://gallery.technet.microsoft.com/LAPS-Extension-for-SCCM-e8bd35b1Описание по созданию Configuration Items для LAPS - https://4sysops.com/archives/monitoring-laps-with-configuration-manager/FAQ в 2-х частях (англ.):https://4sysops.com/archives/faqs-for-microsoft-local-administrator-password-solution-laps/https://4sysops.com/archives/part-2-faqs-for-microsoft-local-administrator-password-solution-laps/Видео:Taste of Premier: How to tackle Local Admin Password Problems in the Enterprise with LAPS - https://channel9.msdn.com/Blogs/Taste-of-Premier/Taste-of-Premier-How-to-tackle-Local-Admin-Password-Problems-in-the-Enterprise-with-LAPSЭтих ребят я обожаю, у них клевые видео по безопасности - Microsoft Local Admin Password Solution (LAPS) – Deployment Steps


Годный пост про семейство ARP

Заслуживающий отдельного внимания пост про семейство протоколов ARP и особенности их работы на Windows от Руслана КармановаОригинал тут. Я просто скопипастил весь текстСемейка протокола ARPПротокол ARP вроде бы простой и тривиальный, но количество его однофамильцев с различным функционалом - достаточно серьёзно. Разбираемся.Привет.Многие думают, что если протокол мелкий и незаметный, то про него не надо ничего знать. Нетрудно догадаться, что это не так, и именно детальное знание подобных низкоуровневых задач является тем, что отличает профессионала от гуглоиксперта или фанатика, верующего, что в его любимой ОС всё работает “само по себе и априори идеально”.ОглавлениеПротокол ARP Вкратце про сам протокол и формат заголовка Базовый тюнинг – тайм-ауты и кэш ARP и QoS ARP и NLB ARP и SNAP ARP и NUD ARP и DAD ARP и WOLARP и РПГ-7Протокол RARPПротокол InARPПротокол UNARPПротокол SLARPПротокол DirectedARPБезопасность ARPМеханизм Proxy ARPЧто такое и как работает Gratuitous ARPCisco ARP Optimization Feature – что это?Как работает протокол ARPПротокол Address Resolution Protocol (ARP) используется для простой задачи – выяснить по известному адресу сетевого уровня (IP) неизвестный адрес канального уровня (например MAC). Данные ARP вкладываются в протокол канального уровня и являются, по уровню вложения, протоколом 3го уровня, а вот по функционалу остаются протоколом 2го уровня. Это я к тому, что модель OSI надо знать не хорошо, а очень хорошо. Для идентификации ARP внутри кадра Ethernet будет использоваться код протокола 0x0806. В состав ARP-пакета будет входить следующие интересные поля:Тип оборудования (длина поля – 2 байта): Код, обозначающий тип среды, в которой идёт работа. Для Ethernet’ов это будет единица, готы могут ставить 5 (для протокола Chaos), эстеты – 149.Тип протокола сетевого уровня, про который идёт речь в ARP-пакете (длина поля – 2 байта): Стандартный код протокола, такой же, как в 802.3, например. То есть для IPv4 – это 0x0800.Длина адреса канального уровня (длина поля – 1 байт): Сколько байт в адресе канального уровня. Например, для 802.3 это будет 6.Длина адреса сетевого уровня (длина поля – 1 байт): Сколько байт в адресе сетевого уровня. Например, для IPv4 это будет 4.Код операции ARP (длина поля – 2 байта): У операции ARP Request это единица, у ARP Response – двойка. Да, такой вот обильный в плане функционала протокол. :)Адрес канального уровня отправителя (SRC MAC, говоря проще) – уникастовый MAC-адрес интерфейса, с которого отправляется запрос.Адрес сетевого уровня отправителя (SRC IP, говоря проще) – уникастовый IP-адрес интерфейса, с которого отправляется запрос. В случае нескольких IP-адресов на интерфейсе – основной адрес интерфейса (primary).Искомый адрес канального уровня – в случае ARP – широковещательный 802.3 адрес вида FF-FF-FF-FF-FF-FF. Ведь очевидно, что раз делается ARP-запрос вида “я знаю только искомый IP-адрес”, то искомый адрес канального уровня неизвестен, поэтому сюда пишется “заглушка” из броадкаста. На фактическое распространение она не влияет, т.к. в самом Ethernet-кадре, в котором вложен ARP-запрос, уже указан броадкаст как DST MAC.Искомый адрес сетевого уровня – в случае ARP – тот самый IP-адрес, для которого надо найти соответствующий MAC.Задачи, стоящие перед протоколом, достаточно прозрачны. Как он будет настраиваться?Базовые операции с ARP для WindowsПочистить локальный кэш ARP или удалить отдельную записьКэш: arp -dЗапись: arp -d ip-адресДобавить статическую ARP-записьarp -s ip-адрес mac-адресДетально посмотреть кэшarp -a -vБудут видны все типы записей – и static, и dynamic, и invalid. Сам вывод будет разбит по критерию привязки записей к интерфейсам – в начале каждого раздела будет выводиться primary IP интерфейса, а потом его внутренний идентификатор (Вы можете посмотреть табличку интерфейсов и их ID командой netsh int ipv4 sh int).Есть и более современный вариант отображения кэша:netsh interface ipv4 show nei. В этой команде вывод также разбит по интерфейсам (правда, пишутся их человеческие названия, а не primary IP), статические и системные записи будут называться Permanent, обычные – Reachable (если доступны), Unreacheable (если нет) и Stale (если запись устарела).Базовые операции с ARP на оборудовании CiscoКак добавить статическую запись(config)#arp ip-адрес или “vrf имя-vrf” mac-адрес тип-вложения тип-интерфейсаИз интересного тут разве что тип вложения – можно указать, какой именно вариант вложения (из реально возможных сейчас – ARPA или SNAP) будет у записи. Параметр “Тип интерфейса” можно не указывать.Настроить включение-выключение ARP и его тип(config-if)#arp arpa или frame-relay или snapКак понятно, обычно тип ARP будет ARPA и в модификации нуждаться тоже особо не будет. Внимание – типы не являются взаимоисключающими – т.е. можно сделать и arp arpa и arp snap, и это лишь покажет, что на данном интерфейсе надо обрабатывать и тот и тот варианты.Настроить время нахождения записи в ARP-кэше(config-if)#arp timeout секундыНастройка идёт на интерфейсе, т.к. данный тайм-аут будет только у записей в ARP-кэше, сделанных через этот интерфейс.Очистить кэш ARPВесь:#clear arp-cacheОтдельную запись:#clear arp-cache ip-адресВсе записи, привязанные к конкретному интерфейсу:#clear arp-cache интерфейсНастроить работу с incomplete ARP recordsДанные настройки будут нужны, чтобы задать поведение системы в случае “Я точно знаю, что есть сосед с таким IP-адресом, но у меня нет его MAC-адреса”.Вы можете задать общее число таких адресов, находящихся “в процессе поиска”, а также количество попытокВключение:(config)#ip arp incomplete enableКоличество адресов:(config)#ip arp incomplete entries числоКоличество попыток:(config)#ip arp incomplete retry числоБазовый тюнинг ARP – тайм-ауты и кэшВ NT 6.0 сетевой стек был ощутимо изменен (приведён в соответствие с RFC 4861), поэтому то, что действовало для XP/2003, работать в большинстве своём не будет. Схема работы ARP-кэша теперь следующая:Есть кэш “соседей” – для IPv4 и IPv6Запись туда идёт после получения ARP-ответа, после чего у строки кэша появляется статус “Reachable”Статус теряется в случае отказа интерфейса или по тайм-ауту – если прошло более “ReachableTime” секунд, то статус меняется на “Stale”Если хочется отправить пакет узлу, строка кэша для которого находится в состоянии “Stale”, то предварительно надо отправить ARP-запросКак точнее считается время? Формула подсчёта такова:ReachableTime = BaseReachableTime * (случайный коэффициент между MIN_RANDOM_FACTOR и MAX_RANDOM_FACTOR)Параметры, от которых идёт вычисление, выглядят так: BaseReachableTime = 30 секунд, MIN_RANDOM_FACTOR = 0.5, а MAX_RANDOM_FACTOR – 1.5. Параметр BaseReachableTime изменяем командой:netsh interface ipv4 set interface имя интерфейса basereachable=количество миллисекундЗаметьте, для каждого интерфейса это устанавливается отдельно. Ранее действовавшее общесистемное значение по умолчанию в 120 секунд, таким образом, теперь не актуально. Я бы рекомендовал увеличить это значение до тех же 2х минут, что были раньше – количество трафика снизится, а минусов практически нет – узлы, которые сменят MAC за время устаревания кэша, сами об этом уведомят.В случае работы с оборудованием Cisco, данный параметр – тайм-аут записи в ARP-кэше – задаётся на интерфейсе командой:arp timeout время в секундахи имеет базовое значение в 14400 (это 4 часа).Суммарный же объём кэша IPv4-соседей можно установить так:netsh interface ipv4 set global neighborcachelimit=количествоПо умолчанию их 256. Как понятно, в случае, если соседей по среде передачи данных мало (например, есть единственный сетевой интерфейс в сеть с маской /28), этот кэш увеличивать не надо, а уменьшить вполне можно. Помните, это именно кэш ARP, т.е. явных адресов соседей по vlan плюс служебных мультикастов. Нет смысла его раздувать до огромных габаритов, если в сети банально мало узлов, нечего кэшировать особо будет.Давайте теперь чуть углубимся.ARP и QoSВ случае, когда сетевой интерфейс загружен трафиком, часть трафика может теряться. Увы, ни один из методов queuing не является от этого панацеей. Начиная с Cisco IOS 15.1 можно указать, что на данном интерфейсе необходимо всегда обрабатывать ARP-пакеты в первую очередь, что может значительно сократить процент потери ARP-данных. На общую загрузку это, как понятно, повлияет мало, а вот пользы может принести много. Ведь ARP-пакеты передаются без механизма подтверждения доставки и терять их не очень хорошо.Данный механизм включается на L3-интерфейсах, командой:arp packet-priority enableВыключается, как понятно, no arp packet-priority enable. В Windows аналогичной процедуры нет.ARP и NLBЧтобы ARP дружил с NLB, он должен обрабатывать ситуацию, когда придёт ARP-запрос с не-юникастового адреса. То есть, смотрите ситуацию. Допустим, есть NLB, который работает в мультикастовом режиме. Два хоста, соответственно, прикидываются одним IP-адресом, отвечая на ARP-запросы про этот адрес общим мультикастовым MAC’ом, и потом договариваясь друг меж другом, что делать с пришедшим трафиком. Вот чтобы эта схема работала, надо, чтобы когда этот “общий виртуальный узел”, который обладает виртуальным IP и мультикастовым MAC, решил узнать через ARP чей-то MAC, ему вообще ответили. Потому что есть тонкость – у мультикастового MAC есть характерный вид, по которому понятно, что он мультикастовый. А не-юникастовые source MAC в общем-то не являются нормальной ситуацией и нуждаются в особой обработке. Соответственно, для этого надо явно включить обработку ситуации “к нам пришёл ARP-запрос от товарища, у которого обратный MAC-адрес не-юникастовый”. Делается это путём установки параметра:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnableBcastArpReplyв единицу. Если она будет в нуле – в ряде ситуаций поимеете проблемы с NLB.ARP и SNAPПо умолчанию, ARP вкладывается в 802.3 кадр простым, Ethernet II способом. Это можно поменять в случае, если необходима поддержка SNAP-механизма, который, как известно, нужен для мультиплексирования потоков данных на канальном уровне. Напомню, что по RFC 1042 данные IP и ARP всегда передаются поверх 802.x сетей используя связку LLC+SNAP, за исключением обычного Ethernet (802.3), где они вкладываются напрямую (см. RFC 894).Примечание: Если не известно, то надо задуматься об изучении курса ICND1, потому что детальное рассмотрение “что такое SNAP, зачем, почему, когда, с кем” не входит в спектр задач по изучению ARP.Для этой задачи есть ключ:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ArpUseEtherSNAPПо умолчанию он в нуле, установив в единицу Вы получите ситуацию, что ARP-запросы будут вкладываться в SNAP (притом в LLC+SNAP, что увеличит суммарный размер кадра на 3+5=8 байт).ARP и NUDNUD – это Neighbor Unreachability Detection. По умолчанию включается на интерфейсах, которые смотрят в broadcast-среды, и выключается на других. Помогает узнать о том, что сосед (что обычный, что шлюз) перешёл в нефункциональное состояние до времени, пока его запись в ARP-кэше стала Stale. Механизм полезный, поэтому его рекомендуется включать в явном виде. Делается это командой:netsh int ipv4 set int имя интерфейса nud=enabledARP и DADDAD – это Duplicate Address Detection. То самое, что не даёт взять себе адрес, который уже есть у кого-то. Проводится путём отправки Gratuious ARP, про который чуть ниже. Тюнингуется достаточно просто, двумя параметрами:netsh int ipv4 set int имя интерфейса retransmittime=миллисекундыnetsh int ipv4 set int имя интерфейса dadtransmits=попыткиПо умолчанию retransmittime – т.е. время между попытками обнаружить соседа, который уже занял адрес – 1 секунда, количество попыток dadtransmits – 3. Можете сократить их, если уверены, что все соседи отвечают достаточно быстро, это уменьшит время инициализации интерфейса – система не будет ждать “вдруг кто проснётся и скажет, что адрес уже занят”.ARP и WOLФункция Wake-On-Lan, думается, хорошо Вам известна. Она нужна, чтобы узел “проснулся” в определённый момент – когда увидит на сетевом интерфейсе соответствующие неким условиям данные. Обычно это данные, напрямую идущие на данный узел, притом содержащие некую последовательность – Magic Pattern. Так вот, можно заранее указать условие – будет ли данный Magic Pattern искаться вообще во всех сетевых данных, которые попадут на нужный узел, либо только не некоторых. В частности, так как статья про ARP, есть настройка, позволяющая установить для интерфейса условие – анализировать ли на предмет наличия Magic Pattern’а пакеты протоколов ARP (для IPv4) и ND (для IPv6). Включается следующим образом:netsh int ipv4 set int имя интерфейса forcearpndwolpattern=enabledКак выключается, надеюсь, понятно. Рекомендуется к выключению на узлах, у которых нет задачи просыпаться по WOL, т.к. ускоряет обработку путём раннего отбрасывания механизмом поиска Magic Pattern указанных пакетов.Теперь про RARP.Протокол RARPRARP – это как ARP, только наоборот. Логично. По сути, RARP – это очень сильно простой сервис по динамическому конфигурированию узлов. Он ведь отрабатывает задачу, обратную ARP.ARP: Я знаю искомый L3-адрес, дайте мне соответствующий ему L2-адрес.RARP: Я знаю искомый L2-адрес, дайте мне соответствующий ему L3-адрес.Примечание: Обратите внимание, для работы ARP выделенный сервер не нужен, а для RARP – нужен.У RARP-сервера есть табличка соответствий MAC и IP-адресов, из которой он берёт указанную информацию и отправляет её. Различия на технологическом уровне будут следующими: RARP-пакеты будут иметь код вложения 0x8035, плюс коды операций у них будут 3 для RARP-запроса и 4 для RARP-ответа.Примечание: Если код вложения будет от RARP, а коды – 1 или 2 (т.е. как у обычного ARP), то RARP-сервер отдаст данный пакет на обработку ARP-стеку.Вообще, RARP сейчас практически не используется, но если хотите почитать – есть RFC 903.Примечание: А если хотите почитать, и чтобы накрыло – почитайте про Dynamic RARP, это RFC 1931.Реализация RARP-сервера в WindowsЕё нет. Если хочется стороннее решение, то можно скачать RARP windows server быстро бесплатно без sms.Реализация RARP-сервера на оборудовании CiscoОна есть. Конфигурируется в несколько этапов. По порядку:Шаг первый: Добавляем запись для потенциального RARP-клиента (т.е. того, кто хочет получить IP-адрес). В глобальной конфигурации:(config)#arp ip-адрес mac-адрес-клиента arpaШаг второй: Разрешаем на интерфейсе, в качестве параметра – тот адрес на интерфейсе, от которого отправляем RARP-ответы.(config-if)#ip rarp-server ip-адресПротокол InARP (Inverse ARP)InARP – специальная модификация ARP для не-broadcast сетей (например, Frame Relay или ATM). Суть проста – в сетях, где нет широковещания, обычный ARP работать не сможет, а задачи, которые им решаются, никуда не пропадают. Соответственно, нужна схема работы. Она будет достаточно интересна и проста. Узел, который поддерживает InARP, будет самостоятельно с указанной периодичностью отправлять в субинтерфейсы, поддерживающие InARP (например, в FR’овские), InARP-сообщения, в которых будет указано что-то вида “привет, я от узла с сетевым адресом таким-то”. Соответственно, принимающая сторона, получая такое сообщение из-под субинтерфейса с DLCI=xxx, будет записывать у себя в таблицу – “За DLCI xxx живёт товарищ с IP yyy”. В общем-то и всё.Другие отличия будут состоять в использовании других кодов операций – 8 для запроса InARP, 9 для ответа. Ну и в механизме вложения – понятное дело, в Q.922 вкладываться – это не в 802.3Протокол UnARPПредлагался в RFC 1868. Суть проста – сам формат пакета ARP не менялся, добавлялся лишь новый тип сообщения – сообщение вида “Я ушёл из сети”. Т.е. задачей дополнения UNARP являлось то, что узлы, которые отключаются, могут послать сообщение “Стирайте меня все из ARP-кэшей”, чтобы остальные не ждали время окончания кэширования записей. К сожалению, не поддерживается (основная причина – небезопасен, т.к. такое сообщение легко подделать).Протокол SLARP (Serial Line ARP)Специальный субпротокол, работающий внутри цисковского варианта HDLC (который обычно cHDLC). Используемый код вложения – 0x8035. Протокол простой, но интересный тем, что может делать две штуки – проверять состояние канала, периодически передавая кадры, и назначать IPv4-адреса в случае, если с одной стороны serial link адрес IPv4 есть, а с другой – нет. Адрес назначается по логике “Если у меня последний бит адреса 1, предложить такой же, но с нулём, и наоборот”. Маска предлагается такая же, как у себя.Формат кадра будет такой:Адрес (один байт) – стандартный адрес вида b1111111 из xHDLC/PPP.Контроль (один байт) – то же самое, опять LLC3, т.е. b00000011.Код протокола вложения (два байта) – личный номер SLARP, 0x8035.Код операции (один байт) – вариант или Address request(0x00), или address reply (0x01), или Keep-alive (0x02).IPv4-адрес и маска (два раза по 4 байта) – предлагаемый партнёру по serial link адрес.Резерв (один байт) – вечно 0xFF.FCS в варианте CRC-16 (два байта)Флаг (один байт) – стандартный флаг xHDLC вида b0111110.Протокол DirectedARPПротокол описан в RFC 1433. Сейчас как отдельный протокол не используется, хотя многие мысли, высказанные в этом RFC, достаточно дельные и повлияли, например, на формирование современного IPv6.Безопасность ARPВ общем-то, в ARP нет никаких встроенных средств безопасности. Это очень простой служебный протокол, поэтому о какой-то отдельной защите его говорить трудно. Можно высказать лишь общие мысли – например, что в случае малого количества хостов проще ввести все их IP-MAC соответствия как статические – в этом случае ARP они передавать перестанут (в кэше-то записи про соседей будут всё время), а если кто-то злонамеренный специально передаст поддельный ARP-ответ, то никакого влияния он не окажет – динамически полученный ARP-ответ не перезапишет собой статическую запись.Есть ряд дополнительных механизмов (которых достаточно много), которые могут помочь в этом вопросе. Например, на оборудовании Cisco есть команда:arp authorizedкоторая, в случае включения на интерфейсе, отключит динамические записи в кэш ARP. Т.е. интерфейс перестанет слушать ARP-ответы от неизвестных клиентов и дополнять ими кэш ARP.Для ряда моделей оборудования (например, на старших линейках маршрутизаторов – это 7600) можно задать в режиме глобальной конфигурации максимальный размер ARP-кэша для устройства (по умолчанию он не ограничен и составляет 256.000 записей):ip arp entry learn количествоЕсть, в общем-то, множество доп.механизмов безопасности ARP – тот же DAI или ARP ACL, про которые, возможно, я тоже допишу сюда.Механизм Proxy ARPСуть механизма Proxy ARP, детально обозначенного в RFC 1027, проста – дать возможность узлу, который в силу каких-то причин (например, у него не указан шлюз по умолчанию) не может понять, куда маршрутизировать трафик для других сетей, всё же сделать это. Притом сделать просто – используя то, что в сегменте с этим узлом присутствует добрый узел, на котором включен Proxy ARP, и который, увидев что узел пытается через ARP-запрос найти получателя трафика, “прикинется” этим получателем и ответит на запрос.Т.е. вот есть маршрутизатор, на котором включен Proxy ARP. Он получает ARP-запрос на разрешение адреса узла, который находится в другом сегменте относительно спрашивающего и помогает – просто отвечает ему от имени этого узла. Соответственно, этот роутер и будет передавать трафик между данными узлами, а отправитель будет думать, что отправляет трафик напрямую.Данный механизм включен “по умолчанию” на большинстве систем и нуждается в отключении – т.е. описанная ситуация, в общем-то, по производственной необходимости возникает довольно-таки редко.Пример: Например, у хоста A адрес 10.1.1.1/24, а у хоста B – 10.1.1.2/16. Технологически они в разных сетях, и между ними даже есть роутер – у него в сторону хоста A смотрит интерфейс 10.1.1.254/24, в сторону хоста B – 10.1.255.254/16. Но вот проблема в том, что хост A не понимает, что хост B – в другой сети, а думает, что B – его сосед. И пытается найти его, отправляя ARP-запрос. Вот в этом случае если роутер будет поддерживать Proxy ARP, то всё будет хорошо – связь между A и B будет.Как включить Proxy ARP на оборудовании CiscoЗайдите на нужный интерфейс и введите там команду:(config-if)#ip proxy-arpВыключить глобально – (config)#ip arp proxy disable.Как включить Proxy ARP в WindowsВ случае, когда у Вас используется RRaS, proxy ARP работает автоматически.Что такое и как работает Gratuitous ARPЭто страшное слово переводится как “самопроизвольный” ARP. Суть события в следующем. Любой узел, который инициирует новый интерфейс, на котором есть поддержка ARP, должен при завершении процесса конфигурирования IP-адреса (статически ли, по DHCP, через APIPA’у – без разницы) уведомить соседей о том, что он появился. Делается это при помощи отправки одиночного ARP Reply, в котором указывается, что логично, связка “мой MAC – мой новый IP”. Т.е. выглядит этот ARP-ответ несколько странно с точки зрения классической схемы работы ARP – узел рассылает на броадкастовый MAC и свой IP информацию о своём настоящем MAC и своём же IP. Т.е. совпадают SRC IP и DST IP.Примечание: По сути, этот механизм – это “форсированное” обновление ARP-кэша соседей новой информацией – “теперь я по этому MAC-адресу”. Заодно, именно благодаря этому механизму, происходит обнаружение дублирующихся IP-адресов – тот, кто пытается присвоить себе IP-адрес, рассылая это уведомление “засветится”.Но, в общем-то, мы и договорились, что это – исключительная и разовая ситуация. Казалось бы, в чём проблема-то?Проблема в том, что когда такое происходит на сервере удалённого доступа, к которому подключено несколько клиентов (более 1, по сути), то этот сервер при подключении каждого своего клиента получает от него данный стартовый запрос ARP и ретранслирует запрос далее, выступая, по сути, прокси. В результате, допустим, порт коммутатора, в который включен этот сервер, впадает в тягостные размышления о здоровье сервера, который постоянно сообщает всей сети о том, что за его MAC-адресом интерфейса (того, который воткнут в коммутатор) очень много IP-адресов, и все они разные. И каждый раз, когда клиент будет подключаться (например, VPN-канал переподключит, или другим способом вызовет переход через NCP-фазу PPP), такой ARP-ответ будет создаваться и отправляться серверу, а тот будет отдавать его дальше – чтобы уведомить сеть, что трафик на такой-то IP-адрес надо отправлять на его, сервера, MAC, а дальше он уж сам разберется.Соответственно, в ряде ситуаций (например, много клиентов, краткие сессии) такой механизм надо отключать. Зачастую проще привязать статически целую пачку ARP-соответствий (например, когда на сервере удалённого доступа выделен пул в 20 адресов, и абоненты подключаются, делают какую-то краткую операцию и отключаются), чем постоянно форвардить в сеть эти ARP Reply.Примечание: На самом деле, делать это надо с умом, как и всё остальное. Есть ситуации, когда gratuitous ARP является штатным и нужным. Например, у Вас сделан HSRP-балансировщик. Активный узел упал – второй становится активным. И в этот момент он тоже “просто так, внезапно” отправит gratuitous ARP – чтобы сразу уведомить всю сеть, что теперь у виртуального IP новый MAC, а не ждать, пока у всех узлов кончится тайм-аут кэша.Как настроить Gratuitous ARP на оборудовании CiscoВключить:router(config)#ip gratuitous-arpsЕсли добавить в конце команды слово non-local, то будет обрабатываться вышеописанная ситуация с PPP.Отключить приём всех gratuitous ARP’ов:router(config)#ip arp gratuitous noneВключить приём только gratuitous ARP’ов, source которых из connected-сетей:router(config)#ip arp gratuitous localКак настроить Gratuitous ARP на Windows ServerДля указанного сценария с RRaS – никак. Ваш RRaS-сервер не будет передавать стартовый ARP-запрос, полученый от PPP-клиента, в другие сети, поэтому ситуация, описанная выше, просто не возникнет.Управлять же Gratuitous ARP со стороны узла вполне можно. Для этого есть ключ реестра:HKLM\System\CurrentControlSet\Services\TcpIp\Parametersа в нём – параметр ArpRetryCount типа DWORD32. Если поставить этот параметр в нуль, то механизм будет выключен. По умолчанию Windows-хосты делают Gratuitous ARP три раза – сразу после инициализации адреса, потом через 1/2 секунды, потом через ещё 1/10 секунды. Можете поставить единицу, если уверены в качестве работы сети и её не-критичной загруженности на момент выхода ARP Reply – “сэкономите трафик”.Примечание: Считаются фактически отправленные ARP, а не попытки. Т.е. если среда была недоступна, то все равно отправят три, просто чуть позже.Примечание: Если поставить нуль, то вдобавок отвалится функция обнаружения конфликтов DHCP, но это будет в другой истории.Cisco ARP Optimization Feature – что это?Это достаточно полезное архитектурное изменение, появившееся в релизах IOS 12.0 – 12.2 и закрепившееся в более поздних. Идея проста. Устройство хранит информацию о связках IP-MAC-интерфейс в отдельной таблице. Эта таблица организована для быстрого поиска информации по известному IP-адресу. Соответственно, этот механизм эффективен, когда надо обработать единичный пакет. В ситуации же, когда интерфейс попеременно переходит из состояния включения в выключенное и наоборот (interface flapping), надо сразу же обработать в этой таблице все ARP-записи, относящиеся ко всем IP и MAC, находящимся за данным интерфейсом. Вот фича Cisco ARP Optimization как раз умеет делать эту операцию – например, очистить все записи за соответствующий интерфейс. Выигрыш – резко сниженная загрузка CPU, которому надо обработать событие “падение интерфейса”.Как настроить Cisco ARP Optimization FeatureНикак – это просто другая структура хранения данных ARP в оперативной памяти, используемая в современных версиях IOS.ЗаключениеЕсли я вспомню ещё что-то, или меня наведут на мысль, то обязательно напишу сюда в качестве дополнения к статье.


Инструкции по созданию лабораторного окружения с Windows Server 2012 Hyper-V

http://social.technet.microsoft.com/wiki/ru-ru/contents/articles/19114.windows-server-2012-hyper-v.aspx


Материалы по Windows Server 2012R2, System Center и гибридному облаку

Просто пара ссылок.Дайджест материалов по System Center и гибридному облакуДайджест материалов по Windows Server 2012/R2 


MiTM атака на RDP с SSL

https://labs.portcullis.co.uk/blog/ssl-man-in-the-middle-attacks-on-rdp/Копипаста:This post seeks to demonstrate why users learning to ignore those certificate warnings for SSL-based RDP connection could leave them open to Man-in-the-middle (MiTM) attacks. The MiTM attack demonstrated displays keystrokes sent during an RDP session. We conclude with some advice on how to avoid being the victim of such an attack. Types of RDP connectionsBefore we start, let’s first clarify which of the various RDP connection types this post is about. There are 3 types of connection: RDP Security LayerSSL (TLS 1.0)CredSSP (SSL with NLA)It’s the middle one we’ll demonstrate an attack on in this post. On the Terminal Server, SSL is configured like this (with any NLA checkboxes unticked): RDP configuration usedSome connections may also be vulnerable if the server is set to “Negotiate” its Security Layer to – as that could result in SSL being used. SSL certificate warningIf users are used to dismissing a warnings like this one each time they connect, then this post is relevant to them: SSL warning that should not be routinely ignoredAttack overviewAt a high level, the attack will proceed in a similar way to any SSL MiTM attack: Have the victim connect to a PoC tool (rdp-ssl-mitm.py) on our system instead of the RDP server they’re trying to reachUsing the RDP protocol, our tool will negotiate the use of SSLAt the point the connection is upgraded to SSL, our tool will negotiate an SSL connection with the RDP client using its own (untrusted) SSL certificate. This will give our tool access to data sent by the RDP client in cleartextOur tool also needs to create an SSL connection with the legitimate RDP server down which it will send data from the RDP clientThe only complication to this attack is that our tool has to talk the RDP protocol briefly before creating the required SSL connections. 1. Having the victim connect to usIn a real attack, we’d need to have the RDP client connect to our system instead of the target server. This could be achieved using ARP spoofing, DNS spoofing or some other method. Rather than cloud the demonstration with such details, we’ll assume this is step is possible and just type the IP address of the attacker system into the victim RDP client. On our attacker system (192.168.190.170), we start our PoC tool. We tell it forward connections to the legitimate RDP server 192.168.2.96: $ ./rdp-ssl-mitm.py -r 192.168.2.96:3389[+] Listening for connections on 0.0.0.0:3389And we simply enter the IP address of the attacker system into the RDP client (the client connects from 192.168.190.1): We enter the attacker IP address to avoid the complexity of ARP spoofing2. Talk RDP to the client to negotiate the use of SSLThe negotiation of SSL is quite short within the RDP protocol: Message #1: Client > MiTM > Server 03 00 00 13 0e e0 00 00 00 00 00 01 00 08 00 0300 00 00This message is fairly static and our tool just passes it through to the server unaltered. The 03 means that the client supports RDP Security Layer, SSL and CredSSP. Message #2: Server > MiTM > Client 03 00 00 13 0e d0 00 00 12 34 00 02 00 08 00 0100 00 00In the next message the server chooses the protocol to use. The 01 in this case means the the server has chosen SSL (not CredSSP which would be 02). Again, we pass this message back to the client unaltered. Note that if the server were to select CredSSP (02), then the demonstration would fail. We’re attacking SSL, not CredSSP. 3. Create SSL connection with RDP clientMessage #3: Client > MiTM The 3rd message is the start of an SSL connection. Here is the SSL Client Hello message beginning 16 03 01… (03 01 being the version of SSL used: SSL 3.1 AKA TLS 1.0). 16 03 01 00 5a 01 00 00 56 03 01 52 21 ac be 6320 ce de 4b a5 90 18 f0 66 97 ee 9d 54 14 e3 1c… snip …Our tool does not forward this data directly to the server. Instead it responds with and SS Server Hello message and proceeds to complete the SSL connection with the client. The SSL certificate we present to the RDP client is issued to fred and this is displayed in the mstsc SSL warning shown to the user: The certificate presented by our PoC tool causes this security warningThe details of the SSL certificate differ to those the user would normally see – if the user were to check. To refine the attack we could make the certificate details match more closely, but we’d never get the signature to be the same as the normal certificate, so there’d always be a difference. 4. Create SSL connection with RDP serverSimultaneously, our tool also sends and SSL Client Hello to the RDP server and creates a second SSL connection. Displaying key strokesOur tool is now in a position to display the cleartext messages about keystrokes (for example) sent by the RDP client. It is relatively easy to determine what sort of message is sent when a key is pressed. The following two 4-byte messages are sent when the ‘p’ key is pressed: 44 04 00 1944 04 01 19The 3rd byte is the direction of key (00 means key-down, 01 means key-up).  The 4th byte is the key scan code.  If we look up 0×19 we find it corresponds to the p key. In the general case, the scan-code to character mapping depends which keyboard you’re using. In the PoC tool I implemented the mapping for for QWERTY keyboards, so if you have a UK/US keyboard, it should translate the majority of scan-codes to the correct characters. Note that we don’t get know whether characters are uppercase or lowercase. We’d have to manually track the status of CAPS Lock and SHIFT keys. Without getting too bogged down in the details, here’s some sample output from the PoC tool that shows keystrokes being logged – in particular an administrator logging in with username Administrator, password Password: $ ./rdp-ssl-mitm.py -r 192.168.2.96:3389 [+] Listening for connections on 0.0.0.0:3389[+] Incoming connection from 192.168.190.1:60370[+] New outgoing request to 192.168.2.96:3389 (SSL: 0)[+] Connected[+] Detected incoming SSL connection. Turning self into SSL socket[+] Incoming connection from 192.168.190.1:60374[+] New outgoing request to 192.168.2.96:3389 (SSL: 0)[+] Connected[+] Detected incoming SSL connection. Turning self into SSL socket<LShift-down>A<LShift-up>DMINISTRATOR<Tab><LShift-down>P<LShift-up>ASSWORD<Enter>ConclusionsLearning to ignore SSL certificate warnings is as bad for RDP connection as it is for HTTPS websites. The results are similar: users quickly become vulnerable to Man-in-the-middle attacks. Such attacks can harvest usernames, passwords, keystrokes and other sensitive data. Using SSL certificates that are signed by a Certificate Authority the RDP client trusts will result in no warning under normal operation, so is highly recommended. This attack doesn’t work if the server mandates NLA, so using NLA is also highly recommended. It’s important to note that this isn’t a vulnerability in the RDP Client or Server software.  Nor is this a  new discovery.  It’s a weakness in way RDP is sometimes used which stems from users ignoring security warnings.  At a technical level, this is a fairly vanilla SSL MiTM attack. It might be interesting to extend this work by recording screen captures; or by injecting images of login boxes to encourage users to part of with other credentials. There would also be an opportunity to attack any drives that the RDP client has mapped for drive redirection – see Attacking the RDP Clients for inspiration. These would be pretty demanding coding challenges, though!


Сила командной строки. Вводная.

Тру-админы знают, что все операции с компьютером можно произвести так, чтобы пользователь даже не знал о том, что с его компьютером что-то происходило. И даже иметь домен не обязательно. Для самых маленьких в этой статье я опишу наиболее часто используемые мной утилиты командной строки, а в будущем, возможно, буду обновлять этот пост.Для юных админов сразу хочется сделать мотивационный пинок: не бойтесь cmd! Это ваш лучший друг и соратник. Понимаю, что при первом запуске cmd вам очень страшно и бегут какие-то непонятные буквоцифры и Морфеуса нет рядом. К этому быстро привыкаешь, и потом уже паникуешь, когда cmd не свернут в панель задач. А чтобы прокачать скилы и убить страх - ставьте Linux без графической оболочки! А ещё можно запустить tracert ya.ru и с умным видом говорить начальнику, что тестируешь производительность сетевой подсистемы южного моста виртуального сервера баз данных, запущенного в облаке.Интерпретатор командной строки cmd запускается из меню Стандартные или набором волшебных трёх букв (угадайте каких!) в строке Выполнить. Откроется черное окошко с белым приглашением. Вся это красотень настраивается как душе угодно, но сейчас не об этом.Перейдем к командам. Про ping писать не буду - и так все знают. Скажу лишь, что при добавлении к команде символов /? можно узнать много нового.Команды для работы с сетьюipconfig /all - позволяет узнать сетевые настройки: MAC сетевушки, IP-адрес, адреса шлюза и DNS серверов.ipconfig /flushdns - очищает кэш DNS. При подозрениях на проблемы в работе DNS, первым делом запускайте эту команду.ipconfig /renew - обновляет настройки сетевого адаптера с DHCP-сервера.netstat - отображение статистики TCP/IP и текущих сетевых подключений. Имеет множество параметров.netstat -a - отображает все подключения и ожидающие порты.netstat -b - отображает процесс, ответственный за открытый портnetstat -p TCP - выводит данные только по TCP. То же самое есть по UDP и TCPv6, UDPv6.netstat -r - выводит таблицу маршрутизации.Я чаще всего пишу так netstat -an | findstr :80. Тут мы получаем список всех соединений с/на порт 80. И если они есть, следующим запросом можно уже поискать какая программа пытается соединиться netstat -anb.arp -a - отображение таблицы преобразования IP-адреса в MAC. Полезно, когда нужно узнать MAC удаленного компьютера по его IP или наоборот.nslookup - проверяет соответствие IP-адреса DNS-имени. Используется при определении неисправностей системы DNS.Ещё существует целый отдельный шелл для работы с сетью. Он так и зовется netsh (net shell). Его возможности огромны. Приведу лишь наиболее используемое.netsh winsock reset - сброс сокета. Т.е. мягкий сброс всех сетевых настроек. О более жестком сбросе здесь.netsh позволяет детально настроить сетевую конфигурацию или посмотреть определенные значения, даже недоступные в графическом интерфейсе. За более подробной информацией предлагаю обратиться к встроенной справке (netsh /?).Семейство утилит net позволяет подключать/отключать сетевые диски (net use), расшаривать ресурсы (net share), просматривать расшаренные ресурсы в сети (net view). Последняя команда помогает при непонятных проблемах с подключением к общим папкам - можно увидеть конкретную ошибку, которую не показывает GUI. Утилиты net позволяют работать не только с сетью, несмотря на название. Можно создать локального пользователя (net user username /add), добавить его в группу (net localgroup groupname username /add), запустить (net start servicename) или остановить (net stop servicename) службу. Предлагаю поближе познакомиться с этими утилитами и они окажут вам хорошую помощь. Ну а если будет время и желание, то я сам постараюсь подробнее расписать о них в следующих постах.Управление удаленным компьютеромМногие начинающие админы считают, что терминал это прошлый век и недооценивают его возможности, так как все нужные операции можно произвести из графического интерфейса. А знаете ли вы, что все эти операции можно произвести и на удаленном компьютере, причем абсолютно незаметно для пользователя и без применения средств удаленного администрирования вроде RAdmin и TeamViewer? Ведь зачем отрывать дорогого бухгалтера от расчета вашей зарплаты только для того, чтобы посмотреть запущена ли на его машина служба общего реестра? Можно ведь просто набрать в командной строке sc \buhpc query remoteregistry.Вообще утилита sc довольно мощная - с её помощью можно детально настраивать управление службами. И не только на удаленном компьютере.Для управления удаленной машиной я использую утилиты Sysinternals великого Марка Руссиновича. Чаще всего это PsExec. Она позволяет запустить командную строку или любой другой процесс на удаленной машине (psexec \remotepc cmd). А дальше делать с ней всё, что захочется. Для этого нам и нужна сила cmd.Управление принтерами - prnjobs. Сам ещё не юзал, но обязательно разберусь и отпишусь.Ну вот и назрела тема для нескольких следующих постов. Это sc, prn*, net, netsh, wmic и Sysinternals. Ждём продолжения!1, 2


Нет доступа к папке для группы

Столкнулся с такой проблемой. Есть папка \server\docs\marketing. Нужно “правильно” дать доступ к этой общей папке.По уму создал группу ACL_Marketing_Share_RW, член этой группы - группа Marketing, член этой группы в свою очередь - user. Группе ACL_Marketing_share_RW дал доступ на запись к указанной папке. Пользователя user по сети не пускает в эту папку с разными ошибками - то “Расположение недоступно”, то “Нет доступа” - в общем сдохни МС, никсы рулят =). Если давать доступ к папке конкретно юзеру - всё работает. Где проблема?Гугление привело к этому: 1, 2, 3, 4.Короче нужно перелогиниться - так обновляется access token пользователя. Сделал, как советуют - помогло. Курите текнет коллеги!


PowerShell. Заметки.

Начал использовать PowerShell. Инструмент очень мощный. По мощности сравним с шеллом никсов. Не буду утверждать что круче - не разбираюсь ни в том, ни в другом. Решил сделать в качестве памятки несколько заметок по использованию этого инструмента.1. Заметка номер раз. Простейшие регулярные выражения в PS.^ - начало строки$ - конец строки. - один любой символУдалить подстроку или заменить её - -replace . Простейший способ редактирования строк без вникания в код и написания “нормальных” регэкспов - тупо удалить нужное кол-во символов. (Get-Content .\list.txt)  -replace “^………………………………” | Set-Content list1.txtПолучили содержание файла, прошли по строкам, в каждой строке удалили какое-то количество первых символов, записали в файл.2. Получить список файлов, открывавшихся определенным пользователем в определенную дату.Get-EventLog security -after (Get-Date -hour 0 -minute 0 -second 0) | ?{$.eventid -eq 560} | ?{$.username -eq “username”}Здесь мы получаем события журнала безопасности за текущую дату с 0 часов, 0 минут, 0 секунд с eventid равным 560 (аудит успеха. открытие объекта. Эта информация здесь: Описание событий системы безопасности) и именем пользователя username.Но для того, чтобы эта команда сработала, необходимо чтобы велся аудит доступа к файловой системе. Об этом можно почитать тут. Позже сам напишу подобный мануал.Дальше больше3. Теперь скрипт по мотивам предыдущей заметки. Назначение: получить список пользователей, пытавшихся открыть файлы на ФС. Получаем время доступа, имя файла и имя пользователя.$Events = Get-EventLog security | ?{$.eventid -eq 560}$Data = New-Object System.Management.Automation.PSObject$Data | Add-Member NoteProperty Time ($null)$Data | Add-Member NoteProperty UserName ($null)$Data | Add-Member NoteProperty File ($null)$Events | %{$Data.time = $.TimeGenerated$message = $.message.split("n") | %{$_.trimstart()} | %{$_.trimend()}</span></i><br /><i><span style="color: #990000;"><br /></span></i><i><span style="color: #990000;">$Data.UserName = ($message | ?{$_ -like "Пользователь-клиент:*"} | %{$_ -replace "^.+:."} )&nbsp;</span></i><br /><i><span style="color: #990000;">$Data.File = ($message | ?{$_ -like "Имя объекта:*"} | %{$_ -replace "^.+:."})&nbsp;</span></i><br /><i><span style="color: #990000;"><br /></span></i><i><span style="color: #990000;"><br /></span></i><i><span style="color: #990000;">$data | Out-File F:\Docs\fs1.txt -Append</span></i><br /><i><span style="color: #990000;">}&nbsp;</span></i><br /><br />Разберем по строкам.<br /><br />Первая строка получает события типа "безопасность" с кодом 560 (Get-Eventlog - получить данные журнала событий, security - данные журнала "безопасность", где свойство eventid каждого (|) события ($_) эквивалентно (-eq) 560).<br /><br />Вторая строка создает объект PSObject. 3-5 строки добавляют в объект поля Time, UserName и File.<br /><br />Затем пробегаемся по событиям следующим способом.<br />В поле time объекта Data записываем время создания строки с сообщением (время доступа к файлу).<br /><br />&nbsp;Строкой&nbsp;<i><span style="color: #990000;">$message = $_.message.split("n") | %{$.trimstart()} | %{$_.trimend()} — в переменную message заносим массив строк, которые разделяются символом переноса строки (’n), функции trimstart(), trimend() убирают все лишние символы в конце и в начале строки, функция split разделяет строку.Далее во вновь образовавшемся массиве мы ищем совпадения по строке «Пользователь-клиент:» и «Имя объекта:», а -replace в дальнейшем удаляет эти регулярные выражения, оставляя саму информацию. И последней строкой записываем то, что получилось в итоге в файл. Получается что-то типа этого:Time                                    UserName                                File                                   —-                                    ——–                                —-                                   13.06.2013 16:52:22                     Seti                                    Docs\Сети\Общая папка\Реестры счетTime                                    UserName                                File                                   —-                                    ——–                                —-                                   13.06.2013 16:52:22                     Seti                                    Docs\Сети\Общая папка\Реестры счетСкрипт создан при помощи этих постов: хабр, Поданс.


Настройка FTP-сервера в IIS7

FTP довольно старый протокол (ему уже больше 40 лет), но довольно удобный и до сих пор используется очень многими администраторами для обмена файлами. Есть целая куча разнообразных FTP-серверов под винду - от простейшего Quick’n Easy FTP Server до таких громил как Titan FTP Server и Serv-U. В серверных дистрибутивах Windows тоже есть возможность поднять FTP-сервер. Хоть многие и ругают MS за хромую безопасность и ошибки в коде, использование встроенных ролей сервера вместо решений стороннего производителя имеет свои плюсы. Главный из них - это полная совместимость со всеми службами MS (в частности AD) и тонкая настройка интеграции этих служб.Рассмотрим установку и настройку FTP-сервера на примере Windows 2008R2 и IIS7.Добавляем роль FTP в Диспетчер сервера - Добавление ролей. Следует выбрать Веб-сервер(IIS), в следующем окне диалога выбираем FTP-сервер.Настройка FTP-сервера.Открываем диспетчер сервера - Веб сервер - Диспетчер служб IIS - наш сервер. ПКМ по разделу сайты - добавить FTP-сайт.Пишем название нашего сайта и путь к физическому расположению каталоговЗадаем IP-адрес и порт, на которых будет висеть наш сервер. Здесь же можно установить защиту соединения и выбрать сертификат. Этим мы займемся позже.Сейчас наша цель - сделать простейший доступ, поэтому в следующем диалоговом окне выбираем Анонимный доступ.На этом начальная настройка FTP-сервера закончена. Но при попытке войти в него у нас ничего не получится. На этапе настройки сервера рекомендую включить подробное логирование событий, чтобы при выявлении ошибок можно было легко их опознать. Выбираем начальную страницу нашего сервера - Ведение журнала FTP - нажимаем Выберите поля W3C и ставим галочку Дополнительные сведения Теперь в папке C:\inetpub\logs\LogFiles\FTPSVC мы можем увидеть подробный лог нашего сервера.Для доступа к серверу анонимных пользователей необходимо в правилах авторизации FTP добавить правило для анонимных пользователей и установить флажок типа доступа (чтение, запись).Всё! Простейший FTP-сервер готов к работе. Чтобы раздать более тонкие права, следует выставить их  в разделах Правила авторизации и Проверка подлинности FTP. Для настройки прав на вложенные папки требуется выполнить такую же настройку для папок (в диспетчере выбрать не сервер целиком, а нужную папку). Вот так настраивается FTP-сервер, входящий в состав веб-сервера IIS7 в Windows 2008R2. Отличительной его особенностью является тесная интеграция с серверными службами Microsoft, такими как веб-сервер и контроллер домена.Теперь рассмотрим работу FTP-сервера с сертификатами.Протокол FTP довольно слабо защищен в плане безопасности. При авторизации пользователя, его учетные данные передаются по сети в незашифрованном виде и могут быть перехвачены злоумышленником. Чтобы этого не случилось, требуется ввести шифрование соединения.Если у вас уже есть сертификат, то первую часть можете не читать.Создание самоподписанного сертификата.На начальной странице веб-сервера выбираем пункт Сертификаты сервера. В появившемся окне щелкаем ПКМ и выбираем Создать самоподписанный сертификат. Даём ему осмысленное имя. Сертификат создается автоматически.Настройка SSL на FTP.На начальной странице FTP сервера выбираем Параметры SSL FTP. Ставим галочку Требовать SSL-соединения и выбираем наш сертификат.Теперь подключиться к серверу можно только с клиента, поддерживающего шифрованные FTP-соединения, например Filezilla. При настройке соединения в Filezilla необходимо выбрать Require explicit FTP over TLS. При подключении к FTP-серверу клиент выдаст предупреждение о сертификате. Необходимо принять его.Теперь у нас есть безопасный FTP-сервер с возможностью тонкой настройки и интеграцией со службами Microsoft. Конечно, можно было настроить продукт стороннего производителя, но с родным не будет ничего лишнего в системе.Не нашел, где можно детально настроить скорость и права для каждого пользователя, как в том же Titan’е например. Но это уже задача не столько FTP-сервера, сколько шейпера. MS предлагает такие решения, но уже за отдельные деньги.Видео по настройке FTP 


Перенос учетных записей в домен

Надоело переносить учетки пользователей из локальных в доменные при внедрении Active Directory. Решил найти автоматизированное решение. Оказывается не я первый озадачился этой проблемой =) Есть как минимум 5 вариантов автоматизации. Рассмотрим их по порядку.User State Migration Tool. Бесплатная утилита от Microsoft. Поставляется в комплекте Windows Automated Installation Kit. Используется из консоли. Мануал. У меня не получилось выполнить сохранение профиля - scanstate встал на последнем этапе на 1% и никак не реагировал.Active Directory Migration Tool. Продукт от той же всем известной компании. Предназначен для миграции из домена в домен. Сейчас нас не интересует. Мануал.В Windows 7 можно воспользоваться стандартным средством переноса данных.Moveuser - тоже от MS. Работает на XP. Версия для 7.User Profile Wizard. Бесплатная утилита от ForensIT. Смогла перенести все данные и настройки. Проблем пока не замечено. Ещё можно написать скрипт на WMI/batch/PowerShell/brainfuck/что-то_ещё - но это уже другая история.После переноса профиля обязательно проверяйте всё - скорее всего что-то обработалось неправильно и придется доделывать руками.Тема на форуме, где я поднимал этот вопрос.