The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Сетевой фильтр пакетов, !*! asik, 12-Апр-07, 15:34  [смотреть все]
Доброе время суток Господа!
Возник вопрос: Нужно написать сетевой фильтр пакетов сети Интернет.
Фильтрация производится по правилам... Типа если адрес отправителя пакета - доверительный, то пакет пропустить. Иначе запретить.
Я склонен на написания модуля для ядра. Подскажите куда двигаться, и правильно ли моё направление?
П.С. привожу кусок уже работающего кода на с++, для блокировки ВСЕХ пакетов.
Единственное затруднение - это интерфейс с пользователем... Как реализовать?

#define __KERNEL__
#define MODULE
#define LINUX
#define __NO_VERSION__.

#include </usr/include/linux/module.h>
#include </usr/include/linux/version.h>
#include </usr/src/linux-2.4.20-8/include/linux/netfilter.h>
#include </usr/src/linux-2.4.20-8/include/linux/netfilter_ipv4.h>

  MODULE_LICENSE("GPL");
  MODULE_AUTHOR("asik");

  struct nf_hook_ops nf_incoming;
  struct nf_hook_ops nf_outgoing;

  unsigned int main_hook (unsigned int hooknum,struct sk_buff **skb,const struct net_device *in,const struct net_device *out,int (*okfn)(struct sk_buff*))
{
  /* Drop all */
  return NF_DROP;
}

int init_module ()
{
  //Incoming
  nf_incoming.hook = main_hook; /* @ */
  nf_incoming.pf = PF_INET;
  nf_incoming.hooknum = NF_IP_PRE_ROUTING;
  nf_incoming.priority = NF_IP_PRI_FIRST;

  //outgoing
  nf_outgoing.hook = main_hook;
  nf_outgoing.pf = PF_INET;
  nf_outgoing.hooknum = NF_IP_PRE_ROUTING;
  nf_outgoing.priority = NF_IP_PRI_FIRST;

  nf_register_hook(&nf_incoming);
  nf_register_hook(&nf_outgoing);

  printk ("FireWall loaded \n");

  return 0;
}

void cleanup_module ()
{

  nf_unregister_hook(&nf_incoming);
  nf_unregister_hook(&nf_outgoing);

  printk ("FireWall unload \n");
}

  • Сетевой фильтр пакетов, !*! NuINu, 15:48 , 12-Апр-07 (1)
    >Доброе время суток Господа!
    >Возник вопрос: Нужно написать сетевой фильтр пакетов сети Интернет.
    >Фильтрация производится по правилам... Типа если адрес отправителя пакета - доверительный, то
    >пакет пропустить. Иначе запретить.
    >Я склонен на написания модуля для ядра. Подскажите куда двигаться, и правильно
    >ли моё направление?
    >П.С. привожу кусок уже работающего кода на с++, для блокировки ВСЕХ пакетов.
    >
    >Единственное затруднение - это интерфейс с пользователем... Как реализовать?

    через файловую систему proc. А чем тебя стандартный файрвол не устраивает? заново будешь писать весь iptables?

    • Сетевой фильтр пакетов, !*! pavel_simple, 15:54 , 12-Апр-07 (2)
      так может libconntrack_ipqueue всётаки http://netfilter.org/
    • Сетевой фильтр пакетов, !*! asik, 16:15 , 12-Апр-07 (3)
      >>Доброе время суток Господа!
      >>Возник вопрос: Нужно написать сетевой фильтр пакетов сети Интернет.
      >>Фильтрация производится по правилам... Типа если адрес отправителя пакета - доверительный, то
      >>пакет пропустить. Иначе запретить.
      >>Я склонен на написания модуля для ядра. Подскажите куда двигаться, и правильно
      >>ли моё направление?
      >>П.С. привожу кусок уже работающего кода на с++, для блокировки ВСЕХ пакетов.
      >>
      >>Единственное затруднение - это интерфейс с пользователем... Как реализовать?
      >
      >через файловую систему proc. А чем тебя стандартный файрвол не устраивает? заново
      >будешь писать весь iptables?

      Есть задание такое.... дипломное... А что конкретнее в proc?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру