Как защититься от fingerprinting?::Журнал СА 6.2005
www.samag.ru
Льготная подписка для студентов      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

Jobsora


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 1944
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 1974
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 1530
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 1118
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1693
Комментарии: 1
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

Электронка - 2020!

 Как защититься от fingerprinting?

Архив номеров / 2005 / Выпуск №6 (31) / Как защититься от fingerprinting?

Рубрика: Безопасность /  Механизмы защиты

СЕРГЕЙ БОРИСОВ

Как защититься от fingerprinting?

Чаще всего хакерская атака начинается с fingerprinting – сбора информации о точной версии операционной системы и публичных сервисов. Приняв меры для противодействия удалённому снятию отпечатков системы, вы сможете остановить большинство атак на свою систему на самом ранем этапе.

Чтобы определить версии операционной системы или прикладных сервисов, последователи Кевина Митника предпочли бы позвонить системному администратору и выяснить все подробности по телефону. Остальные же будут проводить исследование особенностей реализации стека TCP/IP и других протоколов в удаленной операционной системе.

Кроме того, fingerprinting используется при сборе какой-  либо статистической информации. В системах обнаружения атак он позволяет определить ОС атакующего или даже однозначно выделить его из общей массы (так же, как отпечатки пальцев позволяют идентифицировать преступника).

От чего защищаться?

Посмотрим, что выдает версию операционной системы и публичных сервисов, и узнаем, от чего нам защищаться. В fingerprinting используются следующие методы:

  • Сбор баннеров и ручной анализ системы.
  • Активное исследование реализации протоколов.
  • Пассивное исследование реализации протоколов.
  • Исследование некоторых технических характеристик системы.

Сбор баннеров

Это один из классических методов fingerprinting. Он заключается в опросе открытых в системе сервисов и анализа возвращаемых ими стандартных приглашений (баннеров). Помимо этого сервисы иногда предоставляют дополнительную возможность для определения версии ОС.

Так, например, ftp-сервис может позволить выполнение команды SYST, которая выдает версию операционной системы. Заголовок веб-сервера можно получить командой:

# echo ‘GET / HTTP/1.0 ’ | nc securitylab.ru 80 | grep ‘^Server:’

Server: Apache/2.0.52 (Unix)

Активное исследование реализаций протоколов

Это контрольный набор тестов, проводимых над удаленной системой. Нас будут интересовать в первую очередь те протоколы, реализация которых имеет свои особенности у каждого производителя. К ним можно отнести протоколы стека TCP/IP, SNMP, HTTP, Telnet, FTP. Таким образом, достаточно подобрать хороший набор тестов, в которых различные системы ведут себя по-разному.

Fingerprinting стека протоколов TCP/IP-серверов

Сетевой стек в разных операционных системах различается по нескольким параметрам, и для каждого из них есть технология получения отличий.

Часть возможных исследований, в результатах которых есть различия, приведена в таблице 1.

Таблица 1. Результаты исследования стека TCP/IP Windows, Linux и FreeBSD

 

FreeBSD

Windows Server 2003

Linux 2.2.X

Начальное значение TCP window

8192 байт

17520 байт

32120 байт

Начальное значение IP TTL

64

128

64

Значение АСК в ответе на FIN, PSH, URG-пакет

Равно значению SEQ в пришедшем пакете

Равно значению SEQ+1 в пришедшем пакете

Равно значению SEQ в пришедшем пакете

Размер ICMP эхо-ответа

56 байт

176 байт

356 байт

Значение ICMP TOC

0

0

1

Порядок TCP Options

«MSS NOP WSCALE NOP NOP TIMESTAMP»

«MSS NOP WSCALE NOP NOP TIMESTAMP NOP NOP SACK»

«MSS SACK TIMESTAMP NOP SCALE»

Количество повторных ответов на SYN-запрос

3

2

2

Базовая модель стека TCP

NewReno

TahoeNoFR плюс SACK

NewReno

Этого вполне достаточно, чтобы легко распознать эти системы. Кроме этого можно проводить исследования:

  • значения поля ACK в TCP-заголовке в ответах на нестандартные запросы;
  • закона изменения ISN сервера;
  • флага DontFragment в IP-заголовке;
  • ICMP-заголовка эхо-ответа;
  • время отсылки повторных пакетов в реализации TCP;
  • модели протокола TCP (TCP-reno, TCP-Vegas, TCP-Tahoe, TCP-newreno, TCP-SACK), которые по-разному реагируют на ухудшение пропускной способности канала, появление частых ошибок и пропадание связи.

Fingerprinting публичных сервисов

Большинство публичных сервисов или служб используют достаточно сложные протоколы, которые подвержены снятию отпечатков (SMTP, IMAP, Telnet, FTP, HTTP, LPD, IKE, SNMP). Отправка большого количества нестандартных или неправильных команд позволяет определить как версию публичного сервиса на сервере, так и операционную систему. Подробности об активном fingerprinting вы можете найти в  [1, 2].

Пассивное исследование реализаций протоколов

Это анализ проходящего через систему сетевого трафика с выделением некоторых ключевых параметров. Этот метод, как и предыдущий, основывается на особенностях реализации протоколов в различных системах. Только вот зачастую приходится довольствоваться меньшей точностью.

Идея пассивного fingerprinting заключается в анализе информации, доступной без непосредственного воздействия на исследуемую систему. Чаще всего он применяется во внутренней сети организации, когда мы имеем непосредственный доступ к нормальному рабочему трафику. Это одно из первых действий при моделировании внутреннего нарушителя для обнаружения слабостей политики безопасности внутренней сети. Примеры пассивного fingerprinting можно посмотреть по ссылкам [3, 4, 5].

Исследование технических характеристик системы

Это анализ таких отличительных характеристик, как время работы сервера с момента последней перезагрузки, отклонение таймера системных часов, серийные номера физических частей сервера (например, MAC-адрес сервера в том же сегменте сети). Подробнее об этом: http://www.caida.org/outreach/papers/2005/fingerprinting.

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

Итак, мы разобрали, почему возможен fingerprinting операционной системы и публичных сервисов, теперь рассмотрим, как с ним бороться.

Способы защиты от fingerprinting

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

Внедрение в концепцию безопасности на верхнем уровне

В политике безопасности необходимо обозначить отношение организации к тайне программного обеспечения. Информацию о версии операционной системы, версии публичного сервиса или другого установленного на сервере программного обеспечения необходимо отнести к категории коммерческой или конфиденциальной. Необходимо изложить требования к организации процесса защиты от сетевой разведки, в каких процедурах описан этот процесс и кто ответственен за реализацию процедур, какая предусмотрена отчетность.

Внедрение в процедуры и инструкции на нижнем уровне

Необходимо ввести специальную процедуру, например, защиты от сетевой разведки. В ней указываются:

  • цели, которые преследует организация, внедряя этот документ, – например, недопущение утечки информации ограниченного распространения;
  • условия, которые необходимы для выполнения целей, – например, наличие демилитаризованной зоны, фильтрация трафика, защита от НСД к архиву эталонного программного обеспечения;
  • различные профили защиты – например, публичный сервис, локальный сервис, критический сервис;
  • разделение обязанностей сотрудников – например, администратор сети отвечает за реализацию процедуры на уровне компьютерной сети, администратор серверов – за реализацию процедуры на уровне системы, администратор информационной безопасности – за контроль и оценку достаточности выполненных мероприятий;
  • порядок проверки эффективности и процедуры – например, тестирование с использованием методов, описанных в статье, как извне, так и внутри организации, и порядок пересмотра процедуры;
  • ответственность сотрудников – например, хранителя архивов эталонного программного обеспечения, за неразглашение информации, администраторов – за своевременность мероприятий.

Помимо этого в инструкции по организации безопасности серверов и компьютерной сети необходимо внести соответствующие пункты о защите от сетевой разведки.

Практическая реализация на уровне сети

Грамотная топология сети – это самая эффективная контрмера удаленному исследованию систем.

Первая возможная мера – фильтрация трафика с использованием межсетевого экрана. Лучше всего оставить открытым доступ только к одному порту публичного сервиса, фильтровать нестандартные сетевые запросы, icmp-трафик. Используя межсетевой экран, можно подменять часть трафика на уровне приложений. Возможна замена приветственных баннеров и ответов при ошибке на универсальные и отражающие корпоративную политику в целом. Это будет альтернативой изменению настроек на каждом сервере.

Выделение демилитаризованной зоны, четкое разделение внутренних и внешних сервисов – эти механизмы помимо своих основных задач увеличивают защищенность от fingerprinting.

Размещение двух публичных сервисов на одном сервере приводит к резкому повышению вероятности определения версии системы. Если по каким-то причинам невозможно от этого отказаться, тогда можно разместить сервисы в различных виртуальных машинах (jail) или с помощью настройки NAT межсетевого экрана связать один внутренний IP-адрес c несколькими внешними IP-адресами, по одному на каждый сервис. Тогда внешнему исследователю будет казаться, что приложения запущены на разных серверах.

Сегментация трафика, активный поиск слушающих устройств, рассылка ложных пакетов (с поддельными заголовками) в локальной сети уменьшают опасность пассивного fingerprinting.

Приведу несколько примеров части конфигурации различных межсетевых экранов, которая поможет реализовать защиту от fingerprinting.

Пример 1. Конфигурация межсетевого экрана IPFW (для ОС семейства *BSD)

# Отбрасываем пакеты с нестандартными IP-опциями

/sbin/ipfw add deny log all from any to 195.195.195.1 in via xl0 ipoptions ssrr

/sbin/ipfw add deny log all from any to 195.195.195.1 in via xl0 ipoptions lsrr

/sbin/ipfw add deny log all from any to 195.195.195.1 in via xl0 ipoptions rr

# Запрещаем пакеты с Timestampf

#/sbin/ipfw add deny log all from any to 195.195.195.1 in via xl0 ipoptions ts

# Запрещаем пакеты с некорректными TCP-флагами.

# NULL-пакеты – второй тест nmap

/sbin/ipfw add deny log tcp from any to 195.195.195.1 in via xl0 tcpflags !syn,!ack,!rst

# XMAS-пакеты – третий тест nmap

/sbin/ipfw add deny log tcp from any to 195.195.195.1 in via xl0 tcpflags syn,fin,urg,psh,!ack

/sbin/ipfw add deny log tcp from any to 195.195.195.1 in via xl0 tcpflags syn,fin,!ack,

# Седьмой тест nmap

/sbin/ipfw add deny log tcp from any to 195.195.195.1 in via xl0 tcpflags fin,urg,psh,!ack

/sbin/ipfw add deny log tcp from any to 195.195.195.1 in via xl0 tcpflags fin,!ack

/sbin/ipfw add deny log tcp from any to 195.195.195.1 in via xl0 tcpflags urg,!ack

/sbin/ipfw add deny log tcp from any to 195.195.195.1 in via xl0 tcpflags psh,!ack

# Разрешаем ICMP-пакеты, только echo и echo_replay

/sbin/ipfw add allow icmp from any to 195.195.195.1 icmptypes 8 via xl0

/sbin/ipfw add allow icmp from any to 195.195.195.1 icmptypes 0 via xl0

/sbin/ipfw add deny log icmp from any to any via xl0

# Можно различным образом блокировать закрытые порты

# При запросе на закрытый порт можно просто отбрасывать пакеты

/sbin/ipfw add deny tcp from any to 195.195.195.195 136-139 in via rl0

# Можно отправлять в ответ tcp rst или icmp host unreachable на запросы к закрытым TCP- и UDP-портам,

# но такие ответы убыстряют сканирование и демаскируют межсетевой экран

/sbin/ipfw add reject udp from any to any in via rl0

/sbin/ipfw add reset tcp from 195.195.195.195 to any 136-139 in via rl0

# Разрешаем только корректные пакеты на порты публичных сервисов

/sbin/ipfw add pass tcp from any to 195.195.195.1 25 in via xl0 tcpflags syn,!ack,!psh,!fin,!urg,!rst

/sbin/ipfw add pass tcp from any to 195.195.195.1 25 in via xl0 tcpflags ack,!syn,!psh,!fin,!urg,!rst

/sbin/ipfw add pass tcp from any to 195.195.195.1 25 in via xl0 tcpflags ack,psh,!syn,!fin,!urg,!rst

/sbin/ipfw add pass tcp from any to 195.195.195.1 25 in via xl0 tcpflags ack,fin,!syn,!psh,!urg,!rst

Пример 2. Конфигурация межсетевого экрана IP-Filter (для ОС семейства *NIX)

Редактируем файл ipf.rules:

# IP options

block in log level local3.info quick on xl0 from any to 195.195.195.1 with opt ssrr

block in log level local3.info quick on xl0 from any to 195.195.195.1 with opt lsrr

block in log level local3.info quick on xl0 from any to 195.195.195.1 with opt rr

# TCP flags

block in log level local3.info quick proto tcp from any to 195.195.195.1 flags SF/SF

block in log level local3.info quick proto tcp from any to 195.195.195.1 flags SFUP/SFUP

block in log level local3.info quick proto tcp from any to 195.195.195.1 flags FPU/FPU

block in log level local3.info quick proto tcp from any to 195.195.195.1 flags F/F

block in log level local3.info quick proto tcp from any to 195.195.195.1 flags U/U

block in log level local3.info quick proto tcp from any to 195.195.195.1 flags P/P

# Разрешенные icmp types

pass in quick on xl0 proto icmp from any to 195.195.195.1 icmp-type echo

pass in quick on xl0 proto icmp from any to 195.195.195.1 icmp-type echorep

pass out quick on xl0 proto icmp from 195.195.195.1 to any icmp-type echorep

pass out quick on xl0 proto icmp from 195.195.195.1 to any icmp-type echo

block in log level local3.info quick on xl0 proto icmp from any to any

block out log level local3.info quick on xl0 proto icmp from any to any

# Реакция на закрытые порты

block in log level local3.info quick on xl0 proto tcp from any to 195.195.195.1 port = 136 >< 140

block in log level local3.info quick on xl0 proto udp from any to 195.195.195.1

# Разрешаем только правильные tcp-запросы к публичному сервису

pass in quick on xl0 proto tcp from any to 195.195.195.1 port = 25 flags S/S

pass in quick on xl0 proto tcp from any to 195.195.195.1 port = 25 flags A/A

pass in quick on xl0 proto tcp from any to 195.195.195.1 port = 25 flags AP/AP

pass in quick on xl0 proto tcp from any to 195.195.195.1 port = 25 flags AF/AF

Пример 3. Конфигурация межсетевого экрана PF-FILTER (для ОС семейства *BSD)

# Нормализация трафика автоматически отфильтрует нестандартные пакеты атакующего, изменит TTL

scrub in on xl0 all fragment reassemble min-ttl 20 max-mss 1440

scrub on xl0 all reassemble tcp

# можно манипулировать IP-опциями, например, сбрасывать флаг DF в 0

scrub out on xl0 all no-df

# Фильтрация TCP-флагов

block in quick proto tcp from any to 195.195.195.1 flags SF/SFRA

block in quick proto tcp from any to 195.195.195.1 flags SFUP/SFRAU

block in quick proto tcp from any to 195.195.195.1 flags FPU/SFRAUP

block in quick proto tcp from any to 195.195.195.1 flags F/SFRA

block in quick proto tcp from any to 195.195.195.1 flags U/SFRAU

block in quick proto tcp from any to 195.195.195.1 flags P/P

# Разрешаем ICMP только echo request и echo reply

pass in quick on xl0 proto icmp from any to 195.195.195.1 icmp-type echoreq

pass in quick on xl0 proto icmp from any to 195.195.195.1 icmp-type echorep

pass out quick on xl0 proto icmp from 195.195.195.1 to any icmp-type echoreq

pass out quick on xl0 proto icmp from 195.195.195.1 to any icmp-type echorep

block in log-all quick on xl0 proto icmp from any to any

block out log-all quick on xl0 proto icmp from any to any

# Блокируем закрытые порты

block in log-all quick on xl0 proto tcp from any to 195.195.195.1 port 136 >< 140

block in log quick on xl0 proto udp from any to 195.195.195.1

# Фильтруем входящие пакеты на публичный сервис

pass in quick on xl0 proto tcp from any to 195.195.195.1 port = 25 flags S/SA synproxy state

Пример 4. Конфигурация межсетевого экрана PIX Firewall

В межсетевом экране PIX Firewall реализован механизм ASA, который отбрасывает не SYN-пакеты, которые не являются частью установленного соединения (2, 4, 6, 7 тесты NMAP), так что большая часть работы по защите от fingerprinting выполняется по умолчанию.

# Разрешаем исходящие ping

access-group 101 in interface outside

access-list 101 permit icmp any host 209.165.200.246 echo-reply

# Разрешаем входящие ping

access-list 101 permit icmp any host 209.165.200.246 echo

# Включаем анализатор протоколов приложений. Какие точно правила фильтрации использует PIX, не ясно. Но тот факт,

# что реально клиент устанавливает соединение не с сервером приложений, а с PIX затрудняет fingerprinting

fuxup protocol ftp 21

fixup protocol smtp 25

# Для фильтрации нестандартных или неправильных TCP/IP-пакетов PIX использует встроенную IDS

# с фиксированным набором сигнатур

ip audit name fingeraudit atack action alarm drop

ip audit name fingeraudit info action alarm drop

# Выберем только те сигнатуры, которые имеют отношение к fingerprinting

# Нужные нам сигнатуры:

#       ID    Название                    Тип

400000  1000  IP options-Bad option list  Informational

400002  1002  IP options-Timestamp        Informational

400007  1100  IP Fragment Attack          Attack

400008  1101  IP Unknown IP Protocol      Attack

        1102  Impossible IP Packet        Attack

400009  1103  IP Fragments Overlap        Attack

400023  2150  Fragmented ICMP Traffic     Attack

400026  3040  TCP NULL flags              Attack

400027  3041  TCP SYN+FIN flags           Attack

400028  3042  TCP FIN only flags          Attack

# Остальные сигнатуры можно исключить из политики

no ip audit name fingeraudit signature sigN

ip audit interface outside fingeraudit

Остальные межсетевые экраны можно сконфигурировать соответствующим образом.

Практическая реализация на уровне системы

В зависимости от выбранной стратегии, возможно скрыть часть параметров системы, усложнив тем самым вероятность обнаружения версии системы, или изменить некоторые параметры системы так, чтобы ввести атакующего в заблуждение. В различных публичных сервисах необходимо изменить их демаскирующие признаки.

Изменение параметров стека TCP/IP операционных систем

Так, в Windows мы можем менять следующие параметры стека TCP/IP в разделах реестра HKEY_LOCAL_MACHINE\SYSTEM\Current ControlSet\Services\Tcpip\Parameters и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi-ces\Tcpip\Parameters\Interfaces\ID of Adapter:

  • KeepAliveInterval – время ожидания перед повторной отправкой пакета, если на предыдущий ответ не получен.
  • MTU – максимальный размер пакета, который передается через сеть.
  • TcpMaxConnectRetransmissions – количество повторных отсылок SYN-пакета, на который не получен ответ при установке соединения.
  • TcpMaxDataRetransmissions – количество повторных отсылок остальных пакетов, на которые не получен ответ.
  • TcpWindowSize – максимальный размер окна TCP-соединения, в байтах.
  • DefaultTTL – определяет значение TTL по умолчанию в заголовках IP-пакета.
  • Tcp1323Opts=1 – изменять значения TCP window и timestamps в соответствии с RFC 1323.

Операционные системы семейства UNIX позволяют изменять стек TCP/IP гораздо более гибко.

В системе FreeBSD добавим следующие опции в конфигурацию ядра:

# Параметр ID в заголовке IP-пакета генерируется случайно

Options random_ip_id

# Отбрасываются пакеты с флагами syn+fin

Options tcp_drop_synfin

Options icmp_bandlim    # Включаем контроль над ICMP

После этого необходимо пересобрать ядро и перезагрузить систему. Теперь можно производить настройки на ходу:

# Определяем реакцию системы при получении пакета на закрытый TCP-порт

sysctl net.inet.tcp.blackhole=2 

# Определяем реакцию системы при получении пакета на закрытый UDP-порт

sysctl net.inet.udp.blackhole=1

# Определяем размер окна TCP-соединения

sysctl net.inet.tcp.sendspace=64395

sysctl net.inet.tcp.recvspace=64395

# Определяем TTL в заголовке IP-пакета

sysctl net.inet.ip.ttl=128

sysctl net.inet.tcp.drop_synfin=1

# Указываем ОС изменять параметры window и timestamps в соответствии с RFC 1323.

sysctl net.inet.tcp.rfc1323=1

Или мы можем закрепить эти параметры в файле /etc/sysctl.conf.

В операционной системе Linux в конфигурацию ядра добавим опции CONFIG_PROC_FS и CONFIG_SYSCTL, которые позволяют менять элементы /proc без перезагрузки системы или перекомпиляции ядра.

# Запрет ICMP echo (ping):

echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Изменяем IP TTL по умолчанию

echo “128” > /proc/sys/net/ipv4/ip_default_ttl

# Скорость генерации ICMP пакетов (по умолчанию 100)

echo “70” > /proc/sys/net/ipv4/icmp_ratelimit

# Количество повторных отсылок пакетов, на которые не получен ответ

echo “5” > /proc/sys/net/ipv4/tcp_synack_retries

echo “5” > /proc/sys/net/ipv4/tcp_syn_retries 5

# Устанавливаем стандартный размер TCP window

echo “64395” > /proc/sys/net/core/rmem_default 

echo “64395” > /proc/sys/net/core/wmem_default  

# Изменять параметры TCP window и timespamp в соответствии с 1323.

echo “1” > /proc/sys/net/ipv4/tcp_window_scaling

echo “1” > /proc/sys/net/ipv4/tcp_timestamps

# Разрешить использование SACK в соответствии с RFC2018 (SACK будет добавляться в tcp options)

Echo “1” > /proc/sys/net/ipv4/tcp_sack

Продукты, которые реализуют защиту системы от fingerprinting на уровне операционной системы:

  • FingerPrintFucker
  • IP Personality
  • Morth

В операционной системе Solaris изменять параметры TCP/IP можно утилитой /usr/sbin/ndd. Изменения вступают в силу только после перезагрузки системы.

# Изменяем стандартное значение maximux segmet size.

ndd -set /dev/tcp tcp_mss_def 546

# Отключим «path MTU discovery» и система перестанет ставить бит «don’t fragment»

ndd -set /dev/ip ip_path_mtu_discovery 0

# Устанавливаем закон генерации ISN действительно случайным образом.

ndd -set /dev/tcp tcp_strong_iss 2

# Изменяем стандартное значение tcp window size

ndd -set /dev/tcp tcp_xmit_hiwat 64395

ndd -set /dev/tcp tcp_recv_hiwat 64395

# Изменяем стандартное время жизни пакета (TTL)

ndd -set /dev/tcp tcp_ip_ttl 128

Защита от fingerprinting публичных сервисов на верхнем уровне

Для маскировки приложений можно произвести изменение конфигурации, изменение исходников или установить специальное ПО, которое будет фильтровать сетевой трафик на уровне приложения.

Защита от HTTP fingerprinting:

  • Замена стандартных баннеров.
  • Фильтрация или преобразование заголовков HTTP.
  • Настройка кодов ошибок, таких как 404 или 500.
  • Использование дополнительного ПО. Для веб-сервера IIS есть продукт ServerMask, который позволяет настроить три вышеописанных способа защиты. Он имеет профили для маскировки под различные сервера.

Для веб-сервера APACHE перед компиляцией в src/include/httpd.h находим строки:

# define SERVER_BASEPRODUCT  “Apache”

# define SERVER_BASEREVISION “X.X.X”

Вместо него напишем (выдаем за ОС Windows + IIS)

# define SERVER_BASEPRODUCT  “Microsoft-IIS”

# define SERVER_BASEREVISION “5.0”

Дополнительно проверим, что в http.conf есть:

# IIS не ставит подпись в рапортах об ошибках

ServerSignature Off

# Для того чтобы выдавать только ту информацию, которую мы изменили

ServerTokens Min

Защита от SMTP fingerprinting:

  • Фильтрация заголовков исходящей почты защитит пользовательские почтовые программы и серверные почтовые приложения, расположенные во внутренней сети организации от ID fingerprinting.

На внешнем почтовом сервере Sendmail, можно использовать опции:

MASQUERADE_AS(mail.somedomain.com)

MASQUERADE_DOMAIN(mailoffice.somedomain.com)

чтобы заголовки почтовых сообщений из вашей локальной сети перезаписывались заново так, как будто они посылаются непосредственно с почтового сервера mail.somedomain.com.

Для почтового сервера QMAIL есть фильтр qmail-masq, который позволяет изменять заголовки исходящих писем, подменяя внутренние адреса внешним.

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

  • Замена стандартных баннеров, кодов и ответов ошибок возможна путем изменения соответствующих конфигурационных файлов. Это позволяет защитить от fingerprinting внешний почтовый сервер.

Например, в Windows 2000 smtp запустить metaedit.exe, выбрать lm\smtpsvc\<номер виртуального сервера>: «Edit  new» в ID ввести 36907, в Data ввести баннер.

В Postfix редактируем /etc/postfix/main.cf:

smtpd_banner = secure SMTP server

В Sendmail редактируем sendmail.cf:

# SMTP initial login message (old $e macro)

O SmtpGreetingMessage=$j secure SMTP server; $b

В EXIM редактируем /etc/exim.conf:

smtpd_banner = secure SMTP server

В QMAIL необходимо отредактировать файл smtpgreeting, в котором хранится приветственное сообщение.

Аналогично настраиваются коды и ответы ошибок в конфигурационных файлах или в исходниках до компиляции.

Защита от исследования таймеров

Возможными контрмерами могут служить, например, методы маскирующего перекоса временной диаграммы с улучшенной генерацией случайных чисел.

Можно отключить timestamps там, где они не нужны (например, на модемном соединении).

# sysctl  net.ipv4.tcp_timestamps=0

net.ipv4.tcp_timestamps = 0   

Заключение

Фильтрация и модификация заголовков и другие методы защиты от fingerprinting, являются элементом «security through obscurity» (безопасности за счет незнания) и не могут использоваться в качестве основного средства защиты.

Литература и ссылки:

  1. http://cherepovets-city.ru/insecure/runmap/runmap-osdetect.htm.
  2. http://cherepovets-city.ru/insecure/runmap/runmap-versionscan.htm.
  3. http://www.securitylab.ru/49847.html.
  4. http://www.honeynet.org/papers/finger.
  5. http://lcamtuf.coredump.cx/p0f.shtml.
  6. Маскировка локальных адресов в QMail – http://www.folug.org/sviluppo/qmail-masq/qmail-masq.html.
  7. Параметры конфигурации TCP/IP и NBT для Windows XP – http://support.microsoft.com/kb/314053/ru.
  8. Сравнение трех пакетных фильтров FreeBSD 5.3 (IPFW, PF, IPFILTER) – http://www.opennet.ru/docs/RUS/ipfw_pf_ipfilter/index.html.
  9. «CP tuning cookbook.
  10. Кейт Е. Страссберг. Полный справочник по брандмауэрам.: Пер. с англ. – М.: Издательский дом «Вильямс», 2004 г.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru