Модуль ost был написан для использования в iptables правилах результатов пассивного определения
типа операционной системы, из которой был отправлен TCP SYN пакет.Загружаем исходные тексты модуля или ставим из patch-o-matic:
wget http://tservice.net.ru/~s0mbre/archive/osf/osf-2008_06_14.ta...В Makefile через переменную IPTABLES указываем путь к заголовочным файлам iptables (iptables.h и libiptc/).
Собираем модуль ipt_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 ./ipt_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 в логе появится:
ipt_osf: Windows [2000:SP3:Windows XP Pro SP1, 2000 SP3]: 11.22.33.55:4024 -> 11.22.33.44:139Описание опций можно найти здесь:
http://tservice.net.ru/~s0mbre/old/?section=projects&item=osf
URL: http://tservice.net.ru/~s0mbre/blog/devel/networking/2008_06...
Обсуждается: http://www.opennet.me/tips/info/1694.shtml
Это правило будет разрешать windows тоже, это просто для логгирования всего. Чтобы запретить windows, нужно написать что-то вроде:iptables -j DROP -i INPUT -p tcp -m osg --genre Windows --ttl 2
>Это правило будет разрешать windows тоже, это просто для логгирования всего. Чтобы
>запретить windows, нужно написать что-то вроде:
>
>iptables -j DROP -i INPUT -p tcp -m osg --genre Windows --ttl
>2вообще то у всех нормальный людей последнее правило всегда
iptables -I INPUT -j REJECT
или не у всех ;)
нет -- у нормальных -P DROP
>вообще то у всех нормальный людей последнее правило всегда
>iptables -I INPUT -j REJECT
>или не у всех ;)Зависит от того, чего вы хотите достичь.
Если дропать только windows машины, то придется записывать все возможные разрешенные комбинации.
Если разрешать только что-то, тогда общее последнее правило drop all будет работать лучше.
>>вообще то у всех нормальный людей последнее правило всегда
>>iptables -I INPUT -j REJECT
>>или не у всех ;)
>
>Зависит от того, чего вы хотите достичь.
>Если дропать только windows машины, то придется записывать все возможные разрешенные комбинации.
>
>Если разрешать только что-то, тогда общее последнее правило drop all будет работать
>лучше.Согласен, ИМХО: разрешать то что нужно, а потом drop all (делал Reject, переделал на Drop) удобнее в моем случае, т.к. очень много хостов в сети, поэтому для меня это более приемлимо
Евгений, огромное спасибо вам за этот модуль, как и за carp ;) Жаль, что kevent помер. Надеюсь, что судьба pohmelfs не будет столь печальной.
>Евгений, огромное спасибо вам за этот модуль, как и за carp ;)
>Жаль, что kevent помер. Надеюсь, что судьба pohmelfs не будет столь
>печальной.Вместо kevent теперь есть signalfd, timerfd и что-то еще, доступное через epoll, так что все счастливы :)
А вообще разработка это в первую очередь интерес к самому процессу, а уже потом к приятным моментам кроме результата, как например включение в ядро.
Отличная работа!
Ей лет 5 уж как.
По-моему, действие куда лучше вынести в конец:> iptables -I INPUT -p tcp -m osf --genre Linux --log 0 --ttl 2 -j ACCEPT
Так, имхо, правила более читабельны.
А как оно работает?
>А как оно работает?Загружается набор сигнатур различных операционных систем, и затем каждый пакет с syn битом проверяется на совпадение. Сейчас набор сигнатур включает даже раздичные наладонники и игровые приставки. Данные параметры не так просто изменить (некоторые легко, но никто не делает, некоторые вообще нельзя), поэтому проверка достаточно точна.
Хорошая штука, а по ID процессора или еще какому-то индивидуальному коду машины, можно подобное зделать?
>Хорошая штука, а по ID процессора или еще какому-то индивидуальному коду машины,
>можно подобное зделать?можно еще испрользуя pom -m string --string 'p(a|0)ntal(o|0)n' -j DROP
тем самым избавя свою систему от паразитного трафика...
>Хорошая штука, а по ID процессора или еще какому-то индивидуальному коду машины,
>можно подобное зделать?Не понял, о чем идет речь?
Если что-то передается по сети, всегда можно найти или написать модуль, который будет по этому параметру фильтровать пакеты.
>>Хорошая штука, а по ID процессора или еще какому-то индивидуальному коду машины,
>>можно подобное зделать?
>
>Не понял, о чем идет речь?
>Если что-то передается по сети, всегда можно найти или написать модуль, который
>будет по этому параметру фильтровать пакеты.Да речь на счет мечты о полном контроле пользователей в сети :) Интересует технология для индивидуального контроля машин. Если пакеты пошли от чужой - блокировать. (В принципе на всякий клин есть другой клин). Например, появилась в сети машина, которая вызвала подозрение. Внешне трафик похож. ОС совпадает, имена, АйПи, мак, все вроде то, что и от родной. Вот и по чем тогда идентефицировать и фильтровать?
vpn
выложите на альтернативном сервере а то не работает ссылка
хочу устроить протест против windows в сети
чтоб мало не показалось
>выложите на альтернативном сервере а то не работает ссылка
>хочу устроить протест против windows в сети
>чтоб мало не показалосьftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-...
вот там все POM
# 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
>nfnl_osf.c:45:39: error: libnfnetlink/libnfnetlink.h: No such file or directoryчего непонятного?
не работает
показатели счетчиков пакетов и байт в созданном правиле в цепочке INPUT почему-то на нуле, соответственно и логирование не происходит.