maa
|
|
« : 08-10-2008 10:18 » |
|
Здравствуйте! Хочу предложить на суд общества свою разработку - маршрутизирующий фаервол RusRoute. http://www.rusroute.ruПредназначен для организации выхода в Интернет локальной сети организации, подсчёта и ограничения трафика пользователей, защиты от сетевых атак, с функциями NAT, redirect, shaper, VPN, proxy, мост LAN в VPN, время действия и сплиттер для правил. Поддерживаются multicore CPU. Для домашних русскоязычных пользователей доступна бесптатная регистрация, подробности на форуме сайта http://www.rusroute.ru : http://www.maasoftware.ru/forum/viewtopic.php?f=4&t=3Здесь часто встречались обсуждения программирования Ndis Intermediate драйверов. Могу подеиться опытом. Автор.
|
|
« Последнее редактирование: 08-10-2008 18:48 от maa »
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #1 : 16-10-2008 00:46 » |
|
maa, есть авторизация трафика?
|
|
|
Записан
|
while (8==8)
|
|
|
maa
|
|
« Ответ #2 : 16-10-2008 03:29 » |
|
Авторизация следующая: Логин осуществляется в результате ввода логина и пароля через браузер на адрес http://192.168.1.2:10000/(192.168.1.2 - в данном примере, IP фаервола) Или с помощью утилиты RRClient (с использованием шифрования) Каждый пользователь определяется своим(своими) IP, запомненныи во время логина. По имени пользователя или IP можно настраивать правила. Первоначально правила лучше задать с помощью Wizard'а.
|
|
|
Записан
|
|
|
|
maa
|
|
« Ответ #3 : 16-10-2008 03:44 » |
|
И сразу вопрос: sss, какие ещё схемы авторизации трафика вы бы хотели видеть в фаерволе?
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #4 : 16-10-2008 05:09 » |
|
Доменную
|
|
|
Записан
|
while (8==8)
|
|
|
maa
|
|
« Ответ #5 : 16-10-2008 05:20 » |
|
Так понимаю, для этого нужно работать с Active Directory, чего в настоящий момент делать не умею.
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #6 : 16-10-2008 05:28 » |
|
maa, я не хочу что бы ты обижался, потому что знаю насколько это сложно... У тебя в драйвере есть динамический интерфейс к пользовательскому режиму ? А на клиентской машине есть драйвер ?
|
|
|
Записан
|
while (8==8)
|
|
|
maa
|
|
« Ответ #7 : 16-10-2008 05:53 » |
|
Я не обижаюсь - просто уточнил, может быть ты знаешь больше.
Динамического интерфейса нет, фаервол представляет из себя монолитный exe-модуль (приложение, даже не сервис, для упрощения разработки), взаимодействующий с драйвером.
На клиентские машине драйвер устанавливать не нужно, используется или только браузер (у которого в качестве стартовой обычно прописывается страница с логином фаервола), или приложение RRClient.
Собственно, динамический интерфейс (dll млм COM) можно было бы сделать но пришлось бы производить внутреннюю аутентификацию и шифровать трафик между dll и приложением (rr.exe), так что, при наличии готового модуля работы с AD проще его интегрировать прямо в фаервольное приложение.
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #8 : 16-10-2008 06:11 » |
|
sss, возможно тебе подойдет связка squid (с авторизацией) + samba (для получения информации из домена). Съассоциировать IP и пользователя будет много сложнее, ненадежно и, мне кажется, что это не совместимо со скоростью работы.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
sss
Специалист
Offline
|
|
« Ответ #9 : 16-10-2008 06:12 » |
|
maa, мои сервера аутентифицируют клиентов в Active Directory... Меня интересует именно аутентификация через драйверы. Но для этого надо опускать обработку до user mode и задерживать поток. Вот я и подумал, может быть ты знаешь как построить токен в ядре.
P.S.: Браузеры передают реквизиты пользователя, на основании которых можно построить user token
|
|
|
Записан
|
while (8==8)
|
|
|
maa
|
|
« Ответ #10 : 16-10-2008 06:37 » |
|
Вижу это так: Нужно написать TDI сетевой драйвер, с помощью которого можно определять handle процесса уровня ядра. Также нужно отслеживать на уровне ядра запускаемые процессы, или каким либо другим образом конвертировать полученный handler в нормальный Win32-process HANDLE. Далее по event'у пробуждать сервис, который с администраторскими привилегиями вызывает, что надо, например, GetProcessToken()... результат передаёт в драйвер, разблокирующий и разрешающий/запрещающий соединение...
Следует учитывать, что с одного IP могут работать несколько пользователей домена.
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #11 : 16-10-2008 06:49 » |
|
Равно как и один пользователь домена может выходить с нескольких IP одновлеменно.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
sss
Специалист
Offline
|
|
« Ответ #12 : 16-10-2008 07:17 » |
|
maa, можно проще. В сеансе запускается агент, соединяется с сервером и начинает строить реквизиты на сервере. Клиент вызывает InitializeSecurityContext, возвращенный буфер передает серверу. Сервер приняв данные передает его в функцию AcceptSecurityContext, которая, в свою очередь возвращает буфер, который передается клиенту. Так идет обмен, пока сервер не выстроит CtxtHandle. Да, еще перед вызовом InitializeSecurityContext у клиента должны быть реквизиты. Естественно, все передачи функции InitializeSecurityContext и AcceptSecurityContext зашифровывают сеансовыми ключами, полученными в kdc.
P.S.: Ни фига себе проще 8o)
|
|
|
Записан
|
while (8==8)
|
|
|
sss
Специалист
Offline
|
|
« Ответ #13 : 16-10-2008 07:23 » |
|
Да, и заметьте, никакой привязки к IP. По фигу, хоть два сеанса разных пользователей на одной машине.
|
|
|
Записан
|
while (8==8)
|
|
|
|