From: Aleksandr S. Goncharov <mraleks@bk.ru.>
Newsgroups: email
Date: Mon, 10 Nov 2006 14:31:37 +0000 (UTC)
Subject: Защита FreeBSD от OS Fingerprinting с использоанием PF firewall
Введение
Статья посвящена защите FreeBSD от удаленного определения типа ОС. Самый
популярный сетевой сканер и средство для активного определения типа ОС
это nmap, поэтому будем использовать его
для проверки нашей защиты.
Используемая ОС: FreeBSD 6.1-RELEASE-p10. Firewall PF. Предполагается
что вы знаете TCP/IP, умеете работать с FreeBSD и знакомы с PF.
Большинство описанных ниже методов можно реализовать не только в PF, но
и в других firewall. PF дан для примера, т.к. я использую его на своей
системе.
При определении ОС nmap посылает различные пакеты и анализирует
приходящие ответы.
Всего 9 тестов:
* Tseq is the TCP sequenceability test
* T1 is a SYN packet with a bunch of TCP options to open port
* T2 is a NULL packet w/options to open port
* T3 is a SYN|FIN|URG|PSH packet w/options to open port
* T4 is an ACK to open port w/options
* T5 is a SYN to closed port w/options
* T6 is an ACK to closed port w/options
* T7 is a FIN|PSH|URG to a closed port w/options
* PU is a UDP packet to a closed port
Запускаем nmap со следующими опциями
# nmap -O -vv ip_address
Настройка FreeBSD.
Начальная ситуация: есть сетевые сервисы и соответственно открытые
порты, firewall отсутствует, дополнительные настройки ОС не
производились.
Запретим прохождение ACK пакета на открытый порт. Для этого добавляем в
PF keep state правило для открытых портов. Теперь ACK пакеты проходят
только для установленных соединений.
pass in quick proto tcp from <other> to $my_ip port $ports flags S/SA synproxy state
block quick all
Получаем
# nmap -O -vv ip_address
...
Running (JUST GUESSING) : Linux 1.X (85%)
Aggressive OS guesses: Linux 1.3.20 (x86) (85%)
No exact OS matches for host (test conditions non-ideal).
TCP/IP fingerprint:
TSeq(Class=TR%IPID=RD%TS=U)
T1(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AS%Ops=ME)
T2(Resp=N)
T3(Resp=N)
T4(Resp=N)
T5(Resp=N)
T6(Resp=N)
T6(Resp=N)
T7(Resp=N)
PU(Resp=N)
На этом этапе уже невозможно достоверно определить ОС и nmap ошибается.
Следующий шаг дан в ознакомительных целях. Его использование не всегда
оправдано и его невозможно реализовать в других firewall кроме PF.
В PF есть уникальная возможность фильтрации по операционным системам.
Механизм определения ОС основан на passive os fingerprinting.
Важно то, что nmap имеет довольно специфические сигнатуры. Итак, в
начало правил PF добавляем
block in quick from any os NMAP
Теперь в pf.os необходимо добавить сигнатуры nmap. Там уже есть, но не
все. По моим наблюдениям nmap имеет сигнатуру *:*:0:44:M1460: в
обозначениях p0f. Но * нельзя указывать во втором поле, которое
обозначает TTL, поэтому создаем строки типа
Первая строка также позволит блокировать пакеты от программы hping.
Минус решения в том, что есть ОС, имеющие подобные сигнатуры, правда они
малораспространены. Соответственно с этих ОС к вам не смогут
подключиться. А именно:
SunOS:4.1::SunOS 4.1.x
Tru64:5.1:noRFC1323:Tru64 6.1 (no RFC1323) (or QNX 6)
TOPS-20:7::TOPS-20 version 7
ExtremeWare:4.x::ExtremeWare 4.x
SymbianOS:6048::SymbianOS 6048 (on Nokia 7650?)
Sega:Dreamcast:3.0:Sega Dreamcast Dreamkey 3.0
Смотрим результат
# nmap -O -vv ip_address
...
Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
All 1680 scanned ports on 10.17.16.11 are filtered
Too many fingerprints match this host to give specific OS details
Все пакеты от nmap блокируются, соответственно невозможно определить
открытые порты тип ОС.
686 Прочтений • [Защита FreeBSD от OS Fingerprinting с использоанием PF firewall (firewall security fingerprint pf nmap)] [08.05.2012] [Комментариев: 0]