Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Написание фаервола под Win32

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

Serjik



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EndoR

Цитата:
висит сервис и слушает порт. удаленная программа подключается к этому порту и посылает специальное сообещение. сервис выключается, вернее, фильтрация прекращается. может, еще есть свежие идеи по поводу, как такое реализовать?

Что это в итоге должно из себя представлять? Если ты хочешь создать что-то вроде файрвола, с удаленным управление, то это одно, если управляемый снифер на клиентской машине, это другое, а если что еще, то расскажи, иначе помочь ничем не смогу.

Всего записей: 471 | Зарегистр. 03-08-2002 | Отправлено: 04:00 25-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Serjik

Цитата:
Если ты хочешь создать что-то вроде файрвола

угу. это тема моего диплома. чем раньше начну писать, тем что-то более рабоспособное будет к защите.
этот фаервол должен содержать 2 модуля - собссно, сервис, который слушает подключения удаленного управления и фильтрует трафик, и удаленное управление (запуск/остановка фильтрации, отображение трафика, управление логами и т.д. и т.п.)

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 08:57 25-09-2003
Serjik



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EndoR
какие моменты в написании программы не понятны? на пример - получить список устройств, или перехват пакетов и т.д.

Всего записей: 471 | Зарегистр. 03-08-2002 | Отправлено: 09:26 25-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Serjik

Цитата:
 перехват пакетов

да. именно этот момент. просто сейчас примерно представляю, как все организовать:
удаленный интерфейс, который подключается к сервису.
сервис, в котором два потока - один слушает подключения, а второй фильтрует.
интересно, как бы получше организовать фильтрацию. и можно ли как-нибудь фильтровать ethernet? хотелось бы и это тоже реализовать.

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 10:54 27-09-2003
Serjik



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EndoR

Цитата:
перехват пакетов  

в современных сокетах это делается просто, даже не нужны дополнительные драйвера у меня где-то есть листинг проги, которая перехватывает все пакеты, и пишет служебную инфу в файл, занимает меньше страницы кода на VC++.
вроде это, проверь... щас просто времени нет...

Код:
 
char BBB[0x10000];
CDatabase mDB;
mDB.OpenEx(_T("DSN=sniffer"), CDatabase::noOdbcDialog);
SYSTEMTIME st;
CFile cf;
cf.Open("c:\\sniff.log", CFile::modeWrite | CFile::shareExclusive | CFile::modeCreate, NULL);
  WSADATA     wsadata;   // Инициализация WinSock.
  SOCKET      s;         // Cлущающий сокет.
  char        name[128]; // Имя хоста (компьютера).
  HOSTENT*    phe;       // Информация о хосте.
  SOCKADDR_IN sa;        // Адрес хоста
  unsigned long        flag = 1;  // Флаг PROMISC Вкл/выкл.
char *bbb="\0";
  // инициализация
  WSAStartup(MAKEWORD(2,2), &wsadata);
  s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
  gethostname(name, sizeof(name));
  phe = gethostbyname( name );
  ZeroMemory( &sa, sizeof(sa) );
  sa.sin_family = AF_INET;
  sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
  bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));
   
  // Включение promiscuous mode.
  ioctlsocket(s, SIO_RCVALL, &flag);
 
    int count;
char buff[20];
unsigned long ul=0;
CString ss, sql;
while( ul<10000 )
{
count = recv( s, (char*)BBB, sizeof(BBB), 0 );
GetLocalTime(&st);
if( count >= sizeof(IPHeader) )
{
ul++;
IPHeader* hdr = (IPHeader *)BBB;
ss = long2char(hdr->id)+"\t"+long2IPchar(hdr->src)+"\t"+long2IPchar(hdr->dest)+"\t"+long2char(count)+"\n";
sql = "insert into log(dt, src, dst, protocol, tos, ttl, size) values('"+time2str(st)+"', '"+long2IPchar(hdr->src)+"', '"+long2IPchar(hdr->dest)+"', "+long2char(hdr->protocol)+", "+long2char(hdr->tos)+", "+long2char(hdr->ttl)+", "+long2char(count)+")";
mDB.ExecuteSQL(sql);
cf.Write(ss, ss.GetLength());
m_e.SetWindowText(long2char(ul));
m_e.RedrawWindow();
}
}
closesocket( s );
WSACleanup();
mDB.Close();
cf.Close();
 

Всего записей: 471 | Зарегистр. 03-08-2002 | Отправлено: 12:05 27-09-2003
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EndoR
Тяжелую ты взял тему для диплома.
Заметь как мало хороших решений файрвола под win существует.
И это не просто так...

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 15:11 28-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
UncoNNecteD
сам уже в шоке...  но делать нечего, поздняк метаться...
Serjik
пасиб. ща поковыряю...

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 19:21 29-09-2003
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
gg

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 01:47 30-09-2003
zorrack



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А вот еще вопрос. Прослушивание сети идет великолепно. А как определить транзитные пакеты? Т.е. те пакеты которые попадают из локальной сети на внутренний интерфейс и потом передаются дальше, и наоборот, пакеты которые приходят извне и адресованы через NAT во внутреннюю сеть. Т.е. задача пассивного монитора сети с подсчетом траффика по ИП-адресам

Всего записей: 244 | Зарегистр. 16-05-2003 | Отправлено: 22:15 30-09-2003
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
zorrack
А что, по адресам src-dst никак?

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 22:37 30-09-2003
zorrack



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UncoNNecteD
Гхм... Вот только что проверил.
Получается следующая ситуация:
Фильтр пакетов приблизительно следующий:
(SRC like 192.168.* and DST not like 192.168.*) OR (SRC not like 192.168.* and DST like 192.168.*)
Ловятся только входящие пакеты.
Т.е. получается что все исходящие пакеты адресованы (скорее всего) на локальный адрес. Или не так?
 
 
Добавлено
Ага!!! Усе... сорри.
Чайник я - просто сокет то открыт на внешний адрес а не на внутренний.
Т.е. исходящие пакеты имеют СРЦ исходящего адаптера.
Так что просто надо мониторить оба адаптера.

Всего записей: 244 | Зарегистр. 16-05-2003 | Отправлено: 22:56 30-09-2003
drobitko

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кажется мне, что вы не совсем верное направление выбрали. Приведенный выше исходник позволяет мониторить трафик, а вот фильтровать помоему нет.
 
Поправьте если не прав?
 
 
Добавлено
На приведенной ниже ссылке open source firewall под win.  Посмотри как они это реализовали.
 
_http://sourceforge.net/projects/tdifw/

Всего записей: 83 | Зарегистр. 10-02-2003 | Отправлено: 12:11 01-10-2003
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
zorrack
Обычно по маске подсети мониторят...
drobitko
Ты прав, я вообще не видел исходников файрвола и предполагаю, что без враппинга winsock'a тут не обойтись

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 20:01 02-10-2003
zorrack



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UncoNNecteD
Там драйвер есть в сорсах - т.е. "аналогично", как ВинРаут работает.

Всего записей: 244 | Зарегистр. 16-05-2003 | Отправлено: 14:32 04-10-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Сорри, долго не отвечал. Теперь проблема прижимает Диплом скоро.UncoNNecteD

Цитата:
 без враппинга winsock'a тут не обойтись

что куда дописывать? можешь поконкретней, плиз.
zorrack
ээ....  

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 23:33 13-11-2003
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EndoR

Цитата:
_http://sourceforge.net/projects/tdifw/

Читал?  Внимательно?


----------
-= Я тут чертовски давно =-

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 03:24 14-11-2003
zorrack



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EndoR

Цитата:
ээ....  

Ну, типа, ВинРаут юзает драйвер, который по сути является надстройкой над драйвером сети в Виндах (может бред несу... но так они говорят). Т.е. все пакеты попадают сначала в драйвер ВинРаута, который их проверяет, и только потом, если пропускаются, идут дальше в Винды

Всего записей: 244 | Зарегистр. 16-05-2003 | Отправлено: 05:50 14-11-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
UncoNNecteD

Цитата:
Читал?  Внимательно?  

Да, вполне.
Кстати, тут натолкнулся еще на одну интересную страницу
zorrack
беда в том, что они, вроде как, сначала попадают в винду, а потом на этот драйвер, а потом снова в винду

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 17:30 14-11-2003
odl455



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EndoR
 
У меня тоже диплом поджимает. Защита после нового года. Моя тема диплома звучит следующим образом:  "Модуль анализа и фильтрации пакетов в сетях, работающих по протоколам Ipv4 и Ipv6 для вычислительных систем, работающих под управлением ОС на базе технологии Windows NT"
 
Так вот слушай. Полнофункциональный файрволл - это задача большой команды разработчиков (10-15) и как минимум года на 3. Это при условии что люди профессионалы - сетевые драйвера, протоколы, высокий уровень дебаггинга и т.п.
 
Даже не пытайся - лучше измени тему пока не совсем поздно. Упрости задачу. И вообще на всякий случай напомню что суть диплома не в том чтобы показать свою техническую крутость, а в том, чтобы продемонстрировать грамотный подход к решению задачи с точки зрения современных технологий программирования. Cоветую сконцентрироваться на методологии програмирования (CMM, RUP ...) а также на описании всего дела на UML. Это будет полезнее.

Всего записей: 659 | Зарегистр. 26-08-2002 | Отправлено: 23:08 14-11-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
odl455

Цитата:
это задача большой команды разработчиков

ессно, на это сделана скидка.

Цитата:
лучше измени тему

посмотрим. там будет видно.

Цитата:
Моя тема диплома

вначале хотел что-то подобное посмотрим, может, и изменю.

Цитата:
У меня тоже диплом поджимает

родственная душа

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 11:47 15-11-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Написание фаервола под Win32


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru