Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

Считываем из модуля данные, в случае ошибки завершаем выполнение:

count=read(fddev,(char *)&data,sizeof(struct data_log));

           if(count<0) stop_daemon();

Если установлен флаг готовности данных для считывания и поступил пакет с запрещенного адреса, фиксируем это событие в log-файле:

if(data.ready==1) {

                 if(data.action==0) {

                        if(fill_log(f,data.action,data.addr) < 0)

                               stop_daemon();

 

                 }

           }

           }

}

Заполнением log-файла ведает функция fill_log, к ней мы еще вернемся.

Теперь подошла очередь функции инициализации. Напомню, что ее задача – передать модулю ядра правила фильтрации (т.е. IP-адрес).

void init_daemon()

{

 

    int err;

    struct iphdr ip_pack;

В структуре ip_pack, в поле saddr (адрес источника), будет находится запрещенный IP-адрес.

Обнулим эту структуру:

memset(&ip_pack,0,sizeof(struct iphdr));

и заполним поле адреса источника:

ip_pack.saddr=inet_addr("192.168.1.10");

Подготовим к работе log-файл. Если log-файл отсутствует, создаем его:

f=open(LOG,O_CREAT|O_APPEND|O_RDWR,0644);

    if(f<0) {

           perror(«open log»);

           exit(0);

    }

Теперь передадим модулю правила фильтрации. Открываем устройство в режиме чтения/записи:

fddev=open("/dev/firewall",O_RDWR);

    if(fddev<0) {

           perror("firewall");

           exit(0);

    }

Записываем в него структуру ip_pack:

err=write(fddev,&ip_pack,sizeof(struct iphdr));

    if(err<0) {

           perror("firewall");

           stop_daemon();

    }

Итак, IP-пакеты, поступившие с хоста с адресом 192.168.1.10, будут заблокированы на входе нашей системы.

Выходим из функции:

    return;

}

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

Теперь рассмотрим функцию, которая осуществляет запуск демона на выполнение.

void start_daemon()

{

Демон должен реагировать только на один сигнал – SIGINT. При получении этого сигнала демон завершает выполнение. Все остальные сигналы необходимо заблокировать.

Определим переменные:


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147] [148] [149] [150] [151] [152] [153] [154] [155] [156]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100