понедельник, 6 октября 2008 г.

Как заблокировать через iptables пакеты отправленные из определенной ОС

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

Загружаем исходные тексты модуля или ставим из patch-o-matic:
wget http://tservice.net.ru/~s0mbre/archive/osf/osf-2008_06_14.tar.gz
В 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

Комментариев нет: