The OpenNET Project / Index page

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

Как заблокировать через iptables пакеты отправленные из определенной ОС
Модуль ost был написан для использования в iptables правилах результатов пассивного определения 
типа операционной системы, из которой был отправлен TCP SYN пакет.

Загружаем исходные тексты модуля со страницы
http://www.ioremap.net/archive/osf/ или ставим из patch-o-matic:

В Makefile через переменную IPTABLES указываем путь к заголовочным файлам
iptables (xtables.h и /lib/iptables или /lib/xtables в Debian).

Собираем модуль xt_osf.ko: 
   make 

Собираем библиотеку libipt_osf.so, после чего копируем ее в /lib/iptables или /lib64/iptables:
   make lib

Собираем утилиты  для загрузки сигнатур ОС и ведения лога (load, osfd, ucon_osf):
   make bin

Загружаем список сигнатур:
   wget http://www.openbsd.org/cgi-bin/cvsweb/src/etc/pf.os

Загружаем модуль ядра:
   insmod ./xt_osf.ko

Загружаем сигнатуры:
   ./load ./pf.os /proc/sys/net/ipv4/osf

Пример правила для занесения всех пересылок с участием Linux лог:
   iptables -I INPUT -j ACCEPT -p tcp -m osf --genre Linux --log 0 --ttl 2

Для блокирования внешних пакетов от Windows машин:
   iptables -j DROP -i INPUT -p tcp -m osg --genre Windows --ttl 2

При отправке с Windows в логе появится:
   ipt_osf: Windows [2000:SP3:Windows XP Pro SP1, 2000 SP3]: 11.22.33.55:4024 -> 11.22.33.44:139

Опции:
--log - если в качестве аргумента передан 0, то помещать в лог все совпадения и
неизвестные срабатывания,
если 1, помещать только первое совпадение, 2 - только совпадения;

--ttl - если 0, проверять только для пакетов внутри локальной сети, 1 - для
внешней сети, 2 - не учитывать TTL.
 
16.06.2008 , Автор: Evgeniy Polyakov , Источник: http://www.ioremap.net/projects/osf...
Ключи: fingerprint, iptables, linux
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетные фильтры в Linux: iptables, ipchains

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Аноним (-), 13:38, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это правило будет разрешать windows тоже, это просто для логгирования всего. Чтобы запретить windows, нужно написать что-то вроде:

    iptables -j DROP -i INPUT -p tcp -m osg --genre Windows --ttl 2

     
     
  • 2.9, altavista (?), 16:24, 18/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Это правило будет разрешать windows тоже, это просто для логгирования всего. Чтобы
    >запретить windows, нужно написать что-то вроде:
    >
    >iptables -j DROP -i INPUT -p tcp -m osg --genre Windows --ttl
    >2

    вообще то у всех нормальный людей последнее правило всегда
    iptables -I INPUT -j REJECT
    или не у всех ;)

     
     
  • 3.10, pavel_simple (??), 16:34, 18/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    нет -- у нормальных -P DROP
     
  • 3.11, Аноним (-), 18:43, 18/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >вообще то у всех нормальный людей последнее правило всегда
    >iptables -I INPUT -j REJECT
    >или не у всех ;)

    Зависит от того, чего вы хотите достичь.
    Если дропать только windows машины, то придется записывать все возможные разрешенные комбинации.
    Если разрешать только что-то, тогда общее последнее правило drop all будет работать лучше.

     
     
  • 4.12, altavista (?), 08:59, 19/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>вообще то у всех нормальный людей последнее правило всегда
    >>iptables -I INPUT -j REJECT
    >>или не у всех ;)
    >
    >Зависит от того, чего вы хотите достичь.
    >Если дропать только windows машины, то придется записывать все возможные разрешенные комбинации.
    >
    >Если разрешать только что-то, тогда общее последнее правило drop all будет работать
    >лучше.

    Согласен, ИМХО: разрешать то что нужно, а потом drop all (делал Reject, переделал на Drop) удобнее в моем случае, т.к. очень много хостов в сети, поэтому для меня это более приемлимо

     

  • 1.2, Дохтур (?), 14:09, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Евгений, огромное спасибо вам за этот модуль, как и за carp ;) Жаль, что kevent помер. Надеюсь, что судьба pohmelfs не будет столь печальной.
     
     
  • 2.3, Аноним (-), 14:31, 16/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Евгений, огромное спасибо вам за этот модуль, как и за carp ;)
    >Жаль, что kevent помер. Надеюсь, что судьба pohmelfs не будет столь
    >печальной.

    Вместо kevent теперь есть signalfd, timerfd и что-то еще, доступное через epoll, так что все счастливы :)

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

     

  • 1.4, гость (?), 14:38, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Отличная работа!
     
     
  • 2.5, Аноним (-), 14:58, 16/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Ей лет 5 уж как.
     

  • 1.6, Df_Yz (?), 15:19, 16/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    По-моему, действие куда лучше вынести в конец:

    > iptables -I INPUT -p tcp -m osf --genre Linux --log 0 --ttl 2 -j ACCEPT

    Так, имхо, правила более читабельны.

     
  • 1.7, Аноним (-), 06:40, 17/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А как оно работает?
     
     
  • 2.15, Аноним (-), 21:00, 21/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >А как оно работает?

    Загружается набор сигнатур различных операционных систем, и затем каждый пакет с syn битом проверяется на совпадение. Сейчас набор сигнатур включает даже раздичные наладонники и игровые приставки. Данные параметры не так просто изменить (некоторые легко, но никто не делает, некоторые вообще нельзя), поэтому проверка достаточно точна.

     

  • 1.13, Logo (ok), 17:46, 20/06/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хорошая штука, а по ID процессора или еще какому-то индивидуальному коду машины, можно подобное зделать?
     
     
  • 2.14, chesnok (ok), 01:31, 21/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Хорошая штука, а по ID процессора или еще какому-то индивидуальному коду машины,
    >можно подобное зделать?

    можно еще испрользуя pom  -m string --string 'p(a|0)ntal(o|0)n' -j DROP
    тем самым избавя свою систему от паразитного трафика...

     
  • 2.16, Аноним (-), 21:02, 21/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Хорошая штука, а по ID процессора или еще какому-то индивидуальному коду машины,
    >можно подобное зделать?

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

     
     
  • 3.17, Logo (ok), 17:04, 23/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>Хорошая штука, а по ID процессора или еще какому-то индивидуальному коду машины,
    >>можно подобное зделать?
    >
    >Не понял, о чем идет речь?
    >Если что-то передается по сети, всегда можно найти или написать модуль, который
    >будет по этому параметру фильтровать пакеты.

    Да речь на счет мечты о полном контроле пользователей в сети :) Интересует технология для индивидуального контроля машин. Если пакеты пошли от чужой - блокировать. (В принципе на всякий клин есть другой клин). Например, появилась в сети машина, которая вызвала подозрение. Внешне трафик похож. ОС совпадает, имена, АйПи, мак, все вроде то, что и от родной. Вот и по чем тогда идентефицировать и фильтровать?


     
     
  • 4.18, pavel_simple (??), 17:05, 23/06/2008 [^] [^^] [^^^] [ответить]  
  • +/
    vpn

     

  • 1.19, ruslan (??), 07:49, 26/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    выложите на  альтернативном сервере а то не работает ссылка
    хочу устроить протест против windows в сети
    чтоб мало не показалось
     
     
  • 2.20, ruslan (??), 09:02, 26/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >выложите на  альтернативном сервере а то не работает ссылка
    >хочу устроить протест против windows в сети
    >чтоб мало не показалось

    ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20090

    вот там все POM


     

  • 1.21, pavlinux (ok), 21:37, 27/03/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    # make lib
    make: *** No rule to make target 'ipt_osf.h', needed by 'lib'.  Stop.

    # make bin
    gcc -DIPTABLES_VERSION=\"1.3.8\" -I/lib/modules/2.6.29/build/include -W -Wall -g nfnl_osf.c -o nfnl_osf -lnfnetlink
    nfnl_osf.c:45:39: error: libnfnetlink/libnfnetlink.h: No such file or directory
    nfnl_osf.c: In function 'osf_load_line':
    nfnl_osf.c:276: error: 'NFNL_HEADER_LEN' undeclared (first use in this function)
    nfnl_osf.c:276: error: (Each undeclared identifier is reported only once
    nfnl_osf.c:276: error: for each function it appears in.)
    nfnl_osf.c:379: warning: implicit declaration of function 'nfnl_fill_hdr'
    nfnl_osf.c:380: warning: implicit declaration of function 'nfnl_addattr_l'
    nfnl_osf.c:382: warning: implicit declaration of function 'nfnl_talk'
    nfnl_osf.c:276: warning: unused variable 'buf'
    nfnl_osf.c: In function 'main':
    nfnl_osf.c:447: warning: implicit declaration of function 'nfnl_open'
    nfnl_osf.c:447: warning: assignment makes pointer from integer without a cast
    nfnl_osf.c:458: warning: implicit declaration of function 'nfnl_subsys_open'
    nfnl_osf.c:458: warning: assignment makes pointer from integer without a cast
    nfnl_osf.c:469: warning: implicit declaration of function 'nfnl_subsys_close'
    nfnl_osf.c:470: warning: implicit declaration of function 'nfnl_close'
    make: *** [bin] Error 1

     
     
  • 2.22, аноним (?), 17:47, 28/03/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >nfnl_osf.c:45:39: error: libnfnetlink/libnfnetlink.h: No such file or directory

    чего непонятного?

     

  • 1.23, Farmaleon (?), 10:09, 29/01/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    не работает
    показатели счетчиков пакетов и байт в созданном правиле в цепочке INPUT почему-то на нуле, соответственно и логирование не происходит.
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

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