The OpenNET Project / Index page

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

Защита FreeBSD от OS Fingerprinting с использоанием PF firewall (firewall security fingerprint pf nmap)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: firewall, security, fingerprint, pf, nmap,  (найти похожие документы)
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 отсутствует, дополнительные настройки ОС не производились. # nmap -O -vv ip_address ... Running: FreeBSD 5.X OS details: FreeBSD 5.3 OS Fingerprint: TSeq(Class=TR%IPID=I%TS=1000HZ) T1(Resp=Y%DF=Y%W=FFFF%ACK=S++%Flags=AS%Ops=MNWNNT) T2(Resp=N) T3(Resp=Y%DF=Y%W=FFFF%ACK=S++%Flags=AS%Ops=MNWNNT) T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T7(Resp=Y%DF=Y%W=0%ACK=S%Flags=AR%Ops=) PU(Resp=Y%DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=0%ULEN=134%DAT=E) ... IPID Sequence Generation: Incremental Практически все тесты работают. Меняем переменные sysctl. # sysctl net.inet.ip.random_id=1 # sysctl net.inet.tcp.blackhole=2 # sysctl net.inet.udp.blackhole=1 Система не будет отвечать на пакеты пришедшие на закрытый порт. # nmap -O -vv ip_address ... Running: FreeBSD 5.X OS details: FreeBSD 5.2.1 (SPARC) OS Fingerprint: TSeq(Class=TR%IPID=RD%TS=1000HZ) T1(Resp=Y%DF=Y%W=FFFF%ACK=S++%Flags=AS%Ops=MNWNNT) T2(Resp=N) T3(Resp=Y%DF=Y%W=FFFF%ACK=S++%Flags=AS%Ops=MNWNNT) T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T5(Resp=N) T6(Resp=N) T7(Resp=N) PU(Resp=N) ... IPID Sequence Generation: Randomized Таким образом решена половина задачи. Остаются только 1-ый, 3-ий, 4-ый тесты nmap. В конфиг PF добавляем scrub in all fragment reassemble Нормализация трафика отбрасывает пакеты с нестандартными опциями. # nmap -O -vv ip_address ... Running: FreeBSD 5.X OS details: FreeBSD 5.3 OS Fingerprint: TSeq(Class=TR%IPID=RD%TS=1000HZ) T1(Resp=Y%DF=Y%W=FFFF%ACK=S++%Flags=AS%Ops=MNWNNT) T2(Resp=N) T3(Resp=N) T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T5(Resp=N) T6(Resp=N) T7(Resp=N) PU(Resp=N) ... IPID Sequence Generation: Randomized Запретим прохождение 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, поэтому создаем строки типа *:64:0:40:.: NMAP:scan:0:NMAP scan *:1:0:44:M1460: NMAP:scan:0:NMAP scan ................... *:255:0:44:M1460: NMAP:scan:0:NMAP scan Первая строка также позволит блокировать пакеты от программы 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 блокируются, соответственно невозможно определить открытые порты тип ОС.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, meta (??), 13:08, 10/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вопрос: где менять отпечаток на фре, чтобы внешие инициируемые соединения (самой осью) не определялись правильно?
     
  • 1.2, alisherk (?), 14:03, 10/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а как можно защититься от проверки аптайма?
    вот что nmap выдает :
    Uptime 228.023 days (since Mon Mar 27 15:21:20 2006)
     
     
  • 2.4, ast (?), 15:43, 10/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    net.inet.icmp.maskrepl
     

  • 1.3, Brigadir (?), 15:18, 10/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а мож но ли все это реализовать под linux
     
     
  • 2.5, pavlinux (??), 16:51, 10/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    net.ipv4.icmp_ratemask
     

  • 1.6, GoGi (?), 17:33, 10/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Че-то как-тогемморно это. А не проще
    net.inet.tcp.path_mtu_discovery=0
    и
    [/etc/pf.conf]
    set fingerprints "/etc/fingerprints"
    scrub in all

    [/etc/fingerprints]
    S45:128:1:48:M*,N,N,S:

    или другой отпечаток и система будет определяться как:
    Running: IBM AIX 4.X, Microsoft Windows 2003/.NET|NT/2K/XP                                  
    OS details: IBM AIX 4.3.2.0-4.3.3.0 on an IBM RS/*, Microsoft Windows 2003 Server or XP SP2  

     
  • 1.7, Andymion (??), 10:59, 12/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хороший материал.
    Какой во fbsd6 дефолтный пакетный фильтр?
    pf или ipfw2?
     
     
  • 2.8, Аноним (-), 09:31, 13/11/2006 [^] [^^] [^^^] [ответить]  
  • +/
    вообщето по-дефолту фря идет без фильтра. Так что можно собрать ядро с тем брандмауэром, который тебе больше нравится.
     

  • 1.9, lucas12 (ok), 09:13, 14/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Помоему проще так добавить в файервол правила раз ПФ используется....

    block in log quick on $ext_if inet proto tcp from any to any flags FUP/FUP
    block in log quick on $ext_if inet proto tcp from any to any flags SF/SFRA
    block in log quick on $ext_if inet proto tcp from any to any flags /SFRA

     
     
  • 2.10, RooTchO (?), 10:04, 04/12/2006 [^] [^^] [^^^] [ответить]  
  • +/
    Vot druzq:


    ### Block bad tcp flags from malicious people and nmap scans                                                  
                                
    block in log quick on $ext_if proto tcp from any to any flags /S
    block in log quick on $ext_if proto tcp from any to any flags /SFRA
    block in log quick on $ext_if proto tcp from any to any flags /SFRAU
    block in log quick on $ext_if proto tcp from any to any flags A/A
    block in log quick on $ext_if proto tcp from any to any flags F/SFRA
    block in log quick on $ext_if proto tcp from any to any flags U/SFRAU
    block in log quick on $ext_if proto tcp from any to any flags SF/SF
    block in log quick on $ext_if proto tcp from any to any flags SF/SFRA
    block in log quick on $ext_if proto tcp from any to any flags SR/SR
    block in log quick on $ext_if proto tcp from any to any flags FUP/FUP
    block in log quick on $ext_if proto tcp from any to any flags FUP/SFRAUPEW
    block in log quick on $ext_if proto tcp from any to any flags SFRAU/SFRAU
    block in log quick on $ext_if proto tcp from any to any flags SFRAUP/SFRAUP
                                                                                                                  
                                
    ### Drop spoofed packets and block some nasty AD/Spyware programs IP blocks
    block return in log quick on $ext_if from any to <AdWare>
    block in log quick on $ext_if from { <RFC1918>, <AdWare> } to any
    block out log quick on $ext_if from any to { <RFC1918>, <AdWare> }

     

  • 1.11, Ce (??), 01:11, 07/12/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    От nmap защитились, от nessus нет.
    Если есть сигнатуры p0f для других популярных сканеров, киньте, пожалуйста, на мыло: eso3@land.ru.
     
  • 1.12, enceladusspace (ok), 07:57, 20/01/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Доброго времени суток, как можно применить данный способ к Debian 10?
     

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




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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