Пример блокирования [[http://www.opennet.me/opennews/art.shtml?num=39518 критической уязвимости]] CVE-2014-0160 в OpenSSL 1.0.1, позволяющей получить содержимое памяти удалённых серверных и клиентских приложений.
Отражаем в логе все heartbeat-запросы при помощи iptables и модуля u32:iptables -t filter -A INPUT -p tcp --dport 443 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j LOG --log-prefix "BLOCKED: HEARTBEAT"
Блокируем heartbeat-запросы:
iptables -t filter -A INPUT -p tcp --dport 443 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j DROP
Отслеживаем возможные атаки при помощи Wireshark:
tshark -i interface port 443 -R 'frame[68:1] == 18'
tshark -i interface port 443 -R 'ssl.record.content_type == 24'URL: http://www.securityfocus.com/archive/1/531779/30/0/threaded
Обсуждается: http://www.opennet.me/tips/info/2830.shtml
А есть способ во FreeBSD реализовать подобную блокировку через ipfw или pf ?
> А есть способ во FreeBSD реализовать подобную блокировку через ipfw или pf ?А в бздях как обычно все для удобства администратора, так что заблокировать пакет по конкретному полю - ракетная наука.
ng_bpf ?
> А есть способ во FreeBSD реализовать подобную блокировку через ipfw или pf ?"Блокируй всё. Разрешай только то, что конкретно нужно."
> "Блокируй всё. Разрешай только то, что конкретно нужно."ты прям кэп :D
изя, а ты жжож напалмом.
вот скажи, к примеру, https конкретно нужно или конкретно не нужно?
А зачем? его же не удобно фильтровать. text/plain наше усе :)
ты совершенен в своём невежестве.
>"Блокируй всё. Разрешай только то, что конкретно нужно."Прально, разрешай выход только на 80-е порты :) А вот с 5222 портом такое не прокактит, там TLS может оказаться.
> А есть способ во FreeBSD реализовать подобную блокировку через ipfw или pf ?А нету способа обновиться?
Типа, ставишь исправленную версию?
Не? Никак?
> Не? Никак?Можно, но тогда будет не прикольно
http://lists.freebsd.org/pipermail/freebsd-net/2008-July/019...
Через PF с помощью классификатора Ethernet-фреймов:
http://www.openbsd.gr/faq/pf/ru/tagging.html#ethernet
Вот там сказано:
The rules have been specifically created for HTTPS traffic and may be
adapted for other protocols; SMTPS/IMAPS/...Это получается, что нужно так:
iptables -t filter -A INPUT -p tcp --dport 465(995) -m u32 --u32 "52=0x18030000:0x1803FFFF" -j DROP
> Это получается, что нужно так:
> iptables -t filter -A INPUT -p tcp --dport 465(995) -m u32 --u32
> "52=0x18030000:0x1803FFFF" -j DROPНу, типа того, в http://seclists.org/fulldisclosure/2014/Apr/143 используют
-m multiport --destination-port 443,993,995
[на самом деле нужно что-то среднее между списком популярных у ботов/киддисов портов и реально запущенных на хосте(-ах) сервиах с TLS], а чуть выше обсуждают, что к --log надо добавлять --limit, чтоб не заDOSили.
Уже боты долбятсяmsg='[16509541.241630] Heartbeat Attack:
IN=br0 OUT= PHYSIN=eth0
MAC=20:73:33:a3:e8:39:01:21:48:05:3e:12:18:38
SRC=68.52.212.176
DST=111.33.55.44
LEN=60 TOS=0x00 PREC=0x00 TTL=43 ID=37614 DF PROTO=TCP
SPT=54188 DPT=443 WINDOW=137 RES=0x00 ACK PSH URGP=0
Что это за сигнатура "0x18030000:0x1803FFFF"? И будет ли работать правило:
iptables -t filter -A INPUT -p tcp --dport 465 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j DROP
Судя по этому, да:options = OptionParser(usage='%prog server [options]', description='Test for SSL heartbeat vulnerability (CVE-2014-0160)')
options.add_option('-p', '--port', type='int', default=443, help='TCP port to test (default: 443)')Попробую на почтовике.
У меня сегодня около 6 утра сработало,на 465 порту, причем адрес источника - наша офисная сеть.
Сижу разбираюсь.
128.140.169.183 - mail.ru банитDKIM: d=mail.ru s=mail2 c=relaxed/relaxed a=rsa-sha256 [verification succeeded]
P=esmtps X=TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32
iptables -t filter -A INPUT -p tcp --dport 465 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j DROPИли я дурак или лыжи не едут. Но в этом правиле гвоздями прибито смещение сигнатуры, в то время как, что IP заголовок, что TCP заголовок имеют переменную длину!!! Выходит, что это правило сглючит, если в IP заголовке будут опции (ну и в TCP тоже).
Проскочить IP заголовок можно так "0>>22&0x3C", а IP TCP заголовки так "0>>22&0x3C@ 12>>26&0x3C@".
Вот хорошая статья http://www.stearns.org/doc/iptables-u32.current.html
Но вот что искать в TCP данных (payload) не ясно. Только если исходить из того, что аффтор правила подразумевал заголовки IP и TCP по 20 байт, то выходит что надо как то так:iptables -t filter -A INPUT -p tcp --dport 465 -m u32 --u32 "0>>22&0x3C@ 12>>26&0x3C@12=0x18030000:0x1803FFFF" -j DROP
> ... аффтор правила подразумевалАффтор подразумевал, что коннект идёт на 443 порт и там кроме HTTPS ничего нет.
Вот тут кусок hex взят непосредственно их кода эксплойта.
iptables -I INPUT -p tcp -m string --algo kmp --hex-string '|18 03 02 00 03 01 40 00|' \
-j LOG --log-level debug --log-prefix "ScriptKiddy detected: "18 - Heartbeat расширение
03 01 - TLS v1.0 (03 02 - TLS v1.1, 03 03 - TLS v1.2)
00 03 - длина заголовка (18,03,01)
01 - Heartbeat request (02 - ответ)
40 00 - размер (по стандарту - может быть не более 2^16 (0x4000))Банить, кроме как Heartbeat request, не вижу смысла.
Лень смотреть, узнать бы в какой мин. версии TLS это поддерживается.Ловить нужно вот такие байты (строки)
от 0x1803010003010000 до 0x1803010003014000 # TLS 1.0
от 0x1803020003010000 до 0x1803010003014000 # TLS 1.1
от 0x1803030003010000 до 0x1803010003014000 # TLS 1.2Как это всунуть в u32 - лень думать :)
Или даже вот такой длины: 0x180301000301, ибо пофиг какой он там размер запросит.
Для UDP портов подобное правило годится?
iptables -t filter -A INPUT -p udp --dport 1194 -m u32 --u32 "52=0x18030000:0x1803FFFF" -j DROP
А как это можно в Mikrotik-ах сделать ?
Читать документацию Mikrotik, в которой сказано, что RouterOS данной проблеме не подвержена, так как использует openssl более старой версии.
> Читать документацию Mikrotik, в которой сказано, что RouterOS данной проблеме не подвержена,
> так как использует openssl более старой версии.Мне это надо что бы мониторить сквозной трафик из вне в dmz на предмет попыток
http://forum.mikrotik.com/viewtopic.php?f=2&t=84005
Уязвимые продукты Киски. Список будет обновляться по мере расследования инцидентов.Cisco Agent for OpenFlow [CSCuo30098]
Cisco AnyConnect Secure Mobility Client for iOS [CSCuo17488]
Cisco ASA CX Context-Aware Security [CSCuo24523]
Cisco Common Services Platform Collector [CSCuo29151]
Cisco Desktop Collaboration Experience DX650 [CSCuo16892]
Cisco Edge 300 Digital Media Player [CSCuo24304]
Cisco Edge 340 Digital Media Player [CSCuo24301]
Cisco Expressway Series [CSCuo16472]
Cisco FireAMP Private Cloud virtual appliance
Cisco IOS XE [CSCuo19730]
Cisco Cisco Internet Streamer CDS [CSCuo31566]
Cisco Jabber Video for TelePresence (Movi) [CSCuo28855]
Cisco MATE Products [CSCuo54599]
Cisco Mobility Service Engine (MSE) [CSCuo20622]
Cisco MS200X Ethernet Access Switch [CSCuo18736]
Cisco OnePK All-in-One VM [CSCuo19843]
Cisco ONS 15454 Series Multiservice Provisioning Platforms [CSCuo22921]
Cisco Prime Collaboration Deployment [CSCuo34385]
Cisco Prime IP Express [ CSCuo35657]
Cisco Prime License Manager [CSCuo32735]
Cisco Prime Network Registrar (CPNR) [CSCun82386]
Cisco Prime Network Services Controller [CSCuo20385]
Cisco Prime Security Manager [CSCuo27123]
Cisco Security Manager [CSCuo19265]
Cisco Small Business ISA500 Series Integrated Security Appliances [CSCuo29778]
Cisco TelePresence 1310 [CSCuo20210]
Cisco TelePresence Conductor [CSCuo20306]
Cisco TelePresence EX Series [CSCuo26378]
Cisco Telepresence Integrator C Series [CSCuo26378]
Cisco TelePresence IP Gateway Series [CSCuo21597]
Cisco TelePresence ISDN GW 3241 [CSCuo21486]
Cisco TelePresence ISDN GW MSE 8321 [CSCuo21486]
Cisco TelePresence ISDN Link [CSCuo26686]
Cisco TelePresence MX Series [CSCuo26378]
Cisco TelePresence Profile Series [CSCuo26378]
Cisco TelePresence Serial Gateway Series [CSCuo21535]
Cisco TelePresence Server 8710, 7010 [CSCuo21468]
Cisco TelePresence Server on Multiparty Media 310, 320 [CSCuo21468]
Cisco TelePresence Server on Virtual Machine [CSCuo21468]
Cisco TelePresence System 1000 [CSCuo20210]
Cisco TelePresence System 1100 [CSCuo20210]
Cisco TelePresence System 1300 [CSCuo20210]
Cisco TelePresence System 3000 Series [CSCuo20210]
Cisco TelePresence System 500-32 [CSCuo20210]
Cisco TelePresence System 500-37 [CSCuo20210]
Cisco TelePresence Supervisor MSE 8050 [CSCuo21584]
Cisco TelePresence SX Series [CSCuo26378]
Cisco TelePresence TX 9000 Series [CSCuo20210] Version 6.1.2.0 and prior
Cisco TelePresence Video Communication Server (VCS) [CSCuo16472]
Cisco Unified 7800 Series IP Phones [CSCuo16987]
Cisco Unified 8961 IP Phone [CSCuo16938]
Cisco Unified 9951 IP Phone [CSCuo16938]
Cisco Unified 9971 IP Phone [CSCuo16938]
Cisco Unified Communications Manager (UCM) 10.0 [CSCuo17440]
Cisco Unified Communications Manager Session Management Edition (SME) [CSCuo17440]
Cisco Unified Presence Server (CUPS)[CSCuo21298], [CSCuo21289]
Cisco Unity Connection (UC)[CSCuo30540]
Cisco Universal Small Cell 5000 Series running V3.4.2.x software [CSCuo22301]
Cisco Universal Small Cell 7000 Series running V3.4.2.x software [CSCuo22301]
Cisco Video Distribution Suite for Internet Streaming VDS-IS [CSCuo43012]
Cisco Video Surveillance 3000 Series IP Cameras [CSCuo37282]
Cisco Video Surveillance 4000 Series IP Cameras [CSCuo37288]
Cisco Video Surveillance 4300E/4500E High-Definition IP Cameras [CSCuo37283]
Cisco Video Surveillance 6000 Series IP Cameras [CSCuo37282]
Cisco Video Surveillance 7000 Series IP Cameras [CSCuo37282]
Cisco Video Surveillance PTZ IP Cameras [CSCuo37282]
Cisco WebEx Meetings for Android [CSCuo20617]
Cisco WebEx Meetings Server (client) [CSCuo29780]
Cisco WebEx Meetings Server versions 2.x [CSCuo17528]
Cisco WebEx Node for ASR 1000 Series [CSCuo33614]
Cisco WebEx Node for MCS [CSCuo33612]
Cisco Wireless Location Appliance [CSCuo20622]
Small Cell factory recovery root filesystem V2.99.4 or later [CSCuo22358]
Tandberg Codian MSE 8320 model [CSCuo21486]
Tandberg Codian ISDN GW 3210/3220/3240 [CSCuo21486]
связалась циска с линуксом и получила себе такой подарок..
> связалась циска с линуксом и получила себе такой подарок..Тебе с РИПом в мозгу даже такой подарок не светит. Передёргивать с openssl на "линукс", как симптоматично... Пациент, таблетки!
Пади ж ты, а сколько в самой Цыцке анального добра помимо этой уязвимости в библиотеке OpenSSL, которая из проекта OpenBSD.
Кто расскажет, зачем эти попытки блокировать, если уязвимость устранена?
> Кто расскажет, зачем эти попытки блокировать, если уязвимость устранена?Для экономии электричества.
На своей стороне, и перевод её, экономии, в расход на стороне ботнета.
тогда почему там DROP, а не TARPIT?
Например, не в любом продакшне вы можете с лёгкостью апдейтить пакеты :).
Некоторым проще временно (с) добавить правило в файрволл, а потом, при возможности - сделать yum update openssl :).