собвственно, сабж. пусть у меня есть сервер S, на нем некие расшаренные ресурсы (поднят домен, все как надо). требуется отследить, кто из пользователей открывает файлы на сервере. понятно, что можно включить аудит на доступ к файлам - однако, этот вариант даст нам "c:\users\data" вместо, скажем "\\s\data". поэтому вопрос - можно ли относиетльно просто это сделать? плиз, не надо советовать "написать драйвер" - а просто подскажите, где именно вставлять свой код в ядре заранее спасибо!
Ну вы блин и описываете! Ни указали ни операционку ни чего по существу! По пробую поиграть в оракула: Преплагаю что операционка от MS тогда - досуп к такой информации можно легко получить как из kernel так и из user. Вам что надо ? user - смотрим в MSDN NetSessionEnum kernel - надо будет слать irp к Lanmanserver (srv.sys) Коды различные для разных ос NT,W2k&WXP(одинаковые),W2k3
да, согласен - забыл указать "w2k+" NetSessionEnum не подходит по причине того, что он не позволяет установить момент подключения. вызывать же его в бесконечном цикле - слишком дорогое удовльствие. также данный метод не позволит отследить кратковеременные подключения. что качается IRP к ланмену, то опять таки это стратегия последовательного опроса. возможно, я не совсем корректно сформулировал вопрос, исправляюсь - "как отследить момент открытия файла пользователем с удаленной машины?". может, прстой перехват NtCreateFile с последующей раскруткой стека может помочь?
Это уже по делу. Готового решения не дам но ИМХО надо писать драйвер-фильтр к lanmanserver. Какие конкретно пакеты обрабатывать не подскажу см. winsrc\nt4\private\ntos\srv\*.* поиск по SrvSmbOpen должен помочь
да, интересный вариант, покопаю. есть еще WMI, там существует объект Win32_Shareб b Win32_ServerSession - т.е. я погу узнать, кто подключен, но не могу увидеть, что он юзает. интеерсно, как именно реализована эта функциональность в оснастке "управленеи компьютером"? ясно же, что ребята из M$ дров дял этого не писали...
NetFileEnum The NetFileEnum function returns information about some or all open files on a server, depending on the parameters specified. NET_API_STATUS NetFileEnum( LMSTR servername, LMSTR basepath, LMSTR username, DWORD level, LPBYTE* bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, PDWORD_PTR resume_handle ); Это касательно твоего первого вопроса. А касательно "перехвата" доступа к файлам - а не проще ли настроить security так, как надо ? -)
NetFileEnum опять таки - последовательный опрос важно отловить именно момент открытия, а не каждую секунду опрашивать сервер - это некрасиво, и непроизводительно,в конце концов. плюс, не дает гарантии того, что событие не было пропущено. Жаль, нет времени слазить внутрь Computer Managment - глянуть, идет там опрос по таймеру, или все же ожидание события. что же касается security - то задача как раз в том, что бы отслеживать доступ именно к "разрешенным" ресурсам. по сути, это реализация аудита. в данный момент есть рабочее решение - включение аудита NT на доступ к объектам, и подписка на события в event log'e. но у этого варианта есть недостатки - постоянно идет запись в журнал, отслеживать что-то другое в журнале "security" будет просто невозможно. также, страдает оперативность.
Grenader: касательно аудита - можно удалять сообщения из EventLog программно, по одному. Т.е. получил нужное тебе сообщение - прибил. и т.д. пункт №2 - чтоб не париться - поставь самбу
MoKC0DeR да, действительно... однако, только сейчас заметил. жаль. rst увы - NT, NT и еще раз NT с аудитом же я поступаю проще - автоочистка по достижении нескольких мегабайт.
насчет нт - вай?делаешь линуховый прокси и все. т.е. на серваке под вмварой ставишь самбу, монтируешь туда нтшную шару для которой тебе такие фокусы нужны, и шаришь её через линух
хех, это подходит для домашнего баловства а вот юзать таким образом терабайтные рейды, ДВД библиотеки, учитывая, что у на 3 домена, все построено под АД... не тот уровень, к сожалению. смешанные среды админить на порядок сложнее. в данный момент я занимаюсь изучением того, в какой момент НТ обрабатывает выдает событие аудита - хочу туда хук из драйвера поставить, и все. что бы в журнал не писать лишнего.
еще раз позор мне - во всем продолжаю видеть поделку "для себя" но это уже не в тему... пока новых идей нету.