Дано: есть некая довольно старая железяка, работающая домашним роутером у одного человека. В этой железяке торчат три сетевухи, все они работают через драйвер r8169:
00:0a.0 Ethernet controller: D-Link System Inc DGE-528T Gigabit Ethernet Adapter (rev 10)
00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)
00:0c.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)
Есть дебиан, с ядрами 2.6.26-486, 2.6.26-2-openvz-486 и 2.6.32-5-486 (из unstable). На всех этих ядрах воспроизводится один и тот же баг, проявляющийся в следующем:
RTNETLINK answers: Cannot allocate memorySIOCSIFFLAGS: Cannot allocate memoryПри этом свободной памяти более чем достаточно:
total used free shared buffers cached
Mem: 249 237 12 0 69 136
-/+ buffers/cache: 30 218
Swap: 972 0 972
Особо дотошные люди могут изучить ругательства dmesg по этому поводу.
По результатам гугления сложилось впечатление, что это застарелый и никого не беспокоящий баг ядра. Уж кто-кто, а r8169 всегда изобиловал багами. Впрочем, в RHEL, ради разнообразия, их иногда фиксят, чего не скажешь о мейнстриме. Хотя наиболее эффективным решением в сложившейся ситуации мне представляется закатывание туда опенка, в котором к ядреным багам относятся без особого почтения. Однако меня еще не покинула надежда, что проблему можно решить шаманством с sysctl et cetera. Идеи?
Вышел релиз iptables 1.4.8 — интерфейса к Linux-фаерволу netfilter.
Наиболее интересным новшеством данного релиза является поддержка conntrack zones — механизма, позволяющего корректно отслеживать соединения в случае подключения хоста к двум или более сетям с одинаковыми адресными пространствами через разные сетевые интерфейсы. Такая ситуация является достаточно редкой, но тем не менее довольно неприятной, особенно в том случае, если вы не можете ничего изменить.
Стандартный Linux-фаервол netfilter использует для отслеживания соединений интегрированную в ядро подсистему conntrack. Полученная информация затем может использоваться при фильтрации и преобразовании пакетов. Например, именно на базе этой информации работают критерии conntrack (проверка состояния соединения, его устаревшая версия известна как state), connlimit (ограничение количества одновременных соединений с одного адреса или подсети), connbytes (ограничение соединений по количеству пакетов или байт, переданных в одном или в обоих направлениях), connmark (работает с маркировкой ctmark, общей для всех пакетов в соединении). Также информация conntrack автоматически используется всеми операциями преобразования адресов и портов (SNAT, MASQUERADE, DNAT, REDIRECT, SAME, NETMAP).
Эта информация хранится в специальной таблице (просмотреть ее можно, например, выполнив cat /proc/net/nf_conntrack). Каждое соединение описывается так называемым кортежем (tuple) — набором значений, в который входят адреса и порты (в случае ICMP — типы и коды ICMP) источника и назначения при передаче данных в прямом и обратном направлении. Очевидно, что при наличии нескольких подсетей с одинаковыми адресными пространствами, возможно возникновение путаницы, когда сразу нескольким соединениям ставится в соответствие одна и та же запись в таблице соединений. Чтобы избежать такой ситуации, в кортеж был добавлен идентификатор зоны conntrack — целое число, которое можно устанавливать через специальное правило в таблице raw в зависимости от входящего интерфейса (цепочку PREROUTING таблицы raw пакеты проходят еще до обработки их conntrack'ом). Кроме того, это значение можно задать для каждого интерфейса через sysfs, минуя iptables (псевдофайл /sys/class/net/имя_интерфейса/nf_ct_zone). Таким образом, сетевые администраторы получили эффективный инструмент, позволяющей изящно решить даже такую сложную задачу.
Стоит отметить, что большинство вопросов маршрутизации в описанных условиях уже давно решено средствами iproute2 (используя ip rule, можно направить пакеты с определенного интерфейса в соответствующую таблицу маршрутизации).
Операция установки значения conntrack zone реализуется в netfilter/iptables новым действием CT. Это действие используется в таблице raw и позволяет задать настройки conntrack для новых соединений. В частности, с его помощью можно:
Отслеживание отдельных соединений имеет смысл отключать, например, в том случае, если вы находитесь под (D)DoS-атакой, локализовали ее источники и используете средства активного противодействия, такие, как TARPIT. Если вы не отключите трекинг для таких соединений, это оружие может больно ударить и вас самих.
Надо заметить, что поддержка действия CT и conntrack zones была добавлена в netfilter (т.е. в ядро) еще в начале февраля, поэтому присутствовала уже в релизе 2.6.33. Однако модули netfilter сами по себе не могут быть использованы без соответствующих управляющих команд из userspace, которые обычно отдаются через утилиту iptables.
Помимо добавления поддержки действия CT, в код iptables также было внесено несколько менее значительных изменений:
>>> ChangeLog
Минувшей ночью в списке рассылки CentOS-announce было официально объявлено о выходе нового обновления данного дистрибутива — 5.5.
CentOS является бесплатной версией промышленного дистрибутива Red Hat Enterprise Linux (RHEL) и на 100% бинарно совместим с ним. Но в отличие от RHEL, для которого бинарные обновления предоставляются только на время ознакомительного срока либо при наличии контракта на поддержку, CentOS не ограничивает доступ к бинарным обновлениям.
CentOS 5.5 наследует все улучшения, введенные в RHEL 5.5. С их полным списком можно ознакомиться в новости о выходе RHEL 5.5. Кратко напомню наиболее интересные моменты:
Обновление может быть выполнено следующими командами:
yum clean all
yum update glibc\*
yum update yum\* rpm\* python\*
yum clean all
yum update
shutdown -r now
Несколько технических замечаний по возможным проблемам при установке и обновлении:
Lennart Poettering, сотрудник компании Red Hat, представил концепцию принципиально нового механизма управления инициализацией системы — systemd (system daemon), которая вобрала в себя достоинства классического System V init и более современных launchd (Mac OS X), SMF (Solaris) и Upstart (Ubuntu, Fedora), но при этом лишена многих их недостатков. В разработке этого проекта ему помогали сотрудники Red Hat, Novell, IBM, Intel и Nokia.
systemd опирается на современные linux-технологии: cgroups, AutoFS, D-Bus, и при этом совместим с исторически устоявшимися механизмами: init-скриптами, стандартными командами shutdown, poweroff и т.п. Предоставляемый systemd функционал позволяет заменить не только систему инициализации, но и ряд других подсистем, в частности, cron, (x)inetd, xdm/kdm/gdm/..., частично даже SELinux.
Основные идеи, использованные при создании systemd:
Аналогичный принцип используется systemd и при запуске служб, использующих шину D-Bus.
Кроме того, возможен автоматический запуск служб при обращении к заданным сокетам (см. ниже).
Разумеется, этот подход неприменим к /, /proc, /sys и т.п.
On my system the scripts in /etc/init.d call grep at least 77 times. awk is called 92 times, cut 23 and sed 74,
В качестве альтернативы Леннарт предлагает предлагает переписать критичные участки на C, а также вынести часть функционала в самих демонов и в systemd. Сейчас для systemd уже готовы написанные на C подсистемы монтирования и установки имени хоста. До полной победы, отмечает Леннарт, работа предстоит огромная, но результат того стоит.
Для предотвращения таких ситуаций systemd использует интегрированный в ядро Linux механизм контрольных групп (cgroups). Если приложение не имеет доступа к псевдо-ФС, управляющей работой cgroups, то оно не может самостоятельно покинуть свою группу и «потеряться».
Также к этой группе задач относится и автоматический перезапуск демонов, перенаправление их stdout/stderr на выбранные TTY или в системный журнал, регистрация всех запусков и остановок служб, и многое другое.
Базовым элементом systemd являются модули (units), которые связаны между собой и имеют определенный тип. Каждый модуль может требовать для своей работы другие модули, конфликтовать с модулями, запускаться только после или до определенного модуля (директивы конфигурации Requires, Conflicts, Before, After, Wants). Из типов модулей определены:
Надо заметить, что systemd отличается от SMF, во-первых, тем, что позволяет оперировать не только зависимостями между службами, но и событиями, например, «готовность устройства» или «обращение к сокету». Во-вторых, systemd использует более простой формат файлов конфигурации (.desktop aka .INI против XML в SMF).
От upstart же systemd отличается более высокой степенью параллелизации, и как следствие, более высокой скоростью загрузки. Например, если демон A требует для работы сокет, открытый демоном B, то upstart сначала запустит демона B, а затем демона A, в то время как systemd создаст сокет сам и запустит обоих демонов одновременно, что занимает примерно в два раза меньше времени. Используемый в upstart принцип, когда ключевыми событиями является лишь запуск и остановка демона, Леннарт и его коллеги считают изначально неэффективным.
Well, the point of the part about Upstart above was to show that the core design of Upstart is flawed, in our opinion. Starting completely from scratch suggests itself if the existing solution appears flawed in its core. However, note that we took a lot of inspiration from Upstart's code-base otherwise.
>>> Подробности
Джоанна Рутковска, известный специалист в области безопасности информационных систем, представила новую операционную систему Qubes. Отличительной чертой новой ОС является высокий уровень безопасности, обеспечиваемый за счет предельной взаимной изоляции приложений и компонентов системы посредством технологии виртуализации Xen. Qubes создана на базе Linux-дистрибутива Fedora.
Пользователь может создавать «песочницы» (домены безопасности) для запуска различных приложений. Можно выделить отдельные окружения, например, для работы, веб-серфинга, банковских операций. Каждая такая «песочница» на самом деле является виртуальной машиной, и выполняемые в ней приложения никак не могут влиять на другие «песочницы» и базовую систему. Дисковая и сетевая подсистемы также вынесены в отдельные виртуальные машины, причем благодаря технологиям Intel VT-d и AMD IOMMU потери производительности сводятся к минимуму.
Специально подготовленный графический интерфейс скрывает от пользователя все эти сложности, показывая окна всех приложений на одном рабочем столе (скриншоты). Поддерживается обмен файлами и содержимым буфера обмена между «песочницами». Вопрос обновлений виртуальных окружений также продуман: оно производится автоматически при обновлении базовой системы.
В качестве базовой технологии виртуализации был выбран именно Xen, а не KVM, так как Рутковска считает Xen более безопасным.
В настоящее время система находится в альфа-стадии разработки, однако Рутковска предполагает выпустить первый релиз еще до конца текущего года. Среди планируемых нововведений, в частности, поддержка Intel Trusted Execution Technology.
>>> Подробности
Вышла новая версия системы виртуализации Xen 4.0.0.
Основные новшества:
Копии виртуальных машин, запущенные на slave-нодах, непрерывно синхронизируются с виртуальной машиной на master-ноде, и в случае «выпадения» master-ноды работа сервиса может быть возобновлена практически мгновенно.
Для сравнения, в классической схеме HA-кластера для виртуальных машин, даже при синхронизации образов дисков (например, через DRBD), при «выпадении» master-ноды, резервные ноды вынуждены поднимать инстансы (виртуальные машины) «с нуля», так как не располагают актуальной копией содержимого RAM исходного инстанса. Внешне это выглядит как «холодная перезагрузка» инстанса.
>>> Подробности
В серверной части популярной реализации SMB/CIFS для *nix-систем Samba обнаружена уязвимость, позволяющая удаленному пользователю выйти за пределы каталога ресурса (share) и получить доступ к корневому каталогу системы.
Для успешной эксплуатации данной уязвимости злоумышленнику необходим доступ на запись в какой-либо ресурс на атакуемой системе. Используя специально модифицированный smbclient (см. ниже), он может создать символьную ссылку на каталог, находящийся одним или нескольким уровнями выше (../../.. и т.п.), после чего перейти по этой ссылке. Полученный им доступ будет ограничиваться полномочиями того пользователя, из-под которого осуществляется доступ к ресурсу (например, при анонимном доступе этот пользователь определяется параметром guest account).
Таким образом, на большинстве конфигураций злоумышленник сможет, к примеру, залить свои файлы в /tmp или стянуть /etc/passwd, но у него не получится утащить /etc/shadow.
В качестве workaround рекомендуется запрещать следование по символьным ссылкам (follow symlinks = no), разрешенное по умолчанию.
Ниже представлен патч, превращающий обычный smbclient3 в орудие для атаки:
--- samba-3.4.5/source3/client/client.c 2010-01-18 14:38:09.000000000 +0300
+++ samba-3.4.5/source3/client/client.c 2010-01-18 14:38:09.000000000 +0300
@@ -2754,15 +2754,13 @@
return 1;
}
oldname = talloc_asprintf(ctx,
- "%s%s",
- client_get_cur_dir(),
+ "%s",
buf);
if (!oldname) {
return 1;
}
newname = talloc_asprintf(ctx,
- "%s%s",
- client_get_cur_dir(),
+ "%s",
buf2);
if (!newname) {
return 1;
Также доступно видео с подробной демонстрацией атаки.
>>> Подробности
Сегодня было официально объявлено о выходе четвертого обновления для Debian 5.0 «Lenny».
В числе основных изменений:
>>> Подробности
На днях в рассылке разработчиков netfilter/iptables появилось сообщение, рассказывающее об угрозах, создаваемых корректной обработкой активного режима FTP на примере Linux-фаервола netfilter (nf_conntrack_ftp и nf_nat_ftp).
Активный режим FTP работает следующим образом: сначала FTP-клиент инициирует TCP-соединение на FTP-сервер (обычно на порт 21) и регистрируется на нем (выполняет команды USER и PASS). При возникновении необходимости передать какие-либо данные, не являющиеся командами, клиент открывает один из своих портов на прослушивание и передает номер этого порта серверу в команде PORT, после чего сервер открывает на этот порт второе соединение (соединение данных, в отличие от первого — управляющего) и передает необходимые данные (например, файл или листинг каталога).
Так как номер клиентского порта для прослушивания обычно выбирается случайно, корректная обработка таких сеансов межсетевыми экранами и NAT представляет определенные трудности, которые разработчики фаерволов пытаются решить.
Например, в фаерволе netfilter, встроенном в ядро Linux, данная проблема решается путем использования специальных модулей ядра (так называемых conntrack helpers и NAT helpers), которые сканируют трафик, по специальным шаблонам выделяют передаваемые номера портов и обеспечивают их своевременное открытие, а также корректный проброс соединений через NAT.
В системе OpenBSD эта задача решается во многом аналогичным образом, однако вместо модулей ядра используется userspace-демон ftp-proxy, который добавляет соответствующие правила к нужным якорям (anchors) фаервола pf.
Важно отметить, что в любом случае корректная обработка активного режима FTP-связана с открытием на доступ извне порта на клиентском хосте.
Угроза, создаваемая подобными техническими средствами, обусловлена невозможностью отличить, инициируется ли соединение обычным FTP-клиентом на обычный FTP-сервер, или такое поведение имитируется злонамеренным ПО (malware). Например, используя технологии XMLHTTPRequest, Adobe Flash или Java-апплеты, злоумышленник может подготовить специальную web-страницу, при открытии которой на клиентском хосте может быть использована данная узвимость. Злонамеренный код, исполняемый на клиентском хосте, имитирует работу обычного FTP-клиента в активном режиме, отправляя на сервер злоумышленника команду PORT. В том случае, если межсетевой экран настроен на корректную обработку активного режима FTP, это приведет к открытию заданного клиенского порта для доступа с сервера злоумышленника.
Автор сообщения приводит также ссылку на git-репозитарий с комплектом ПО, разработанного специально для демонстрации этой уязвимости (проще говоря, эксплойтом).
Заметим, что к данной угрозе чувствительны не только персональные (работающие на клиентском хосте) фаерволы, но и традиционные межсетевые экраны, работающие на шлюзах и NAT. В последнем случае фаервол не только разрешит доступ к порту клиента в локальной сети, но и обеспечит проброс на этот порт соединения извне.
Ну и наконец, стоит заметить, что причины возникновения обсуждаемой проблемы лежат не в каких-либо ошибках при разработке фаерволов, а в изначальной некорректности (defective by design) принципов работы некоторых протоколов прикладного уровня, в частности, активного режима FTP.
>>> Подробности
Вышел релиз Untangle 7.1 — специализированного дистрибутива, основанного на Debian GNU/Linux и предназначенного для быстрого развертывания корпоративных шлюзов. Прочитать краткое описание его возможностей можно здесь.
В новой версии отмечены улучшения по следующим направлениям:
>>> Подробности
Вышел официальный релиз OpenVPN 2.1.1 — широко известного решения для организации виртуальных частных сетей (VPN).
Релиз 2.1.1, по сути, является первым официальным релизом в ветке 2.1 (разработка которой ведется с 2005 года), так как вышедшая несколькими часами ранее версия 2.1.0 содержала ошибку в spec-файле, и версия 2.1.1 была срочно выпущена для исправления этой ошибки.
Среди основных новшеств данного релиза:
>>> Подробности
В ядре Linux обнаружена уязвимость, позволяющая удаленному злоумышленнику вызвать отказ в обслуживании (зависание ядра), а локальному — получить root-привилегии. Для получения описанного эффекта достаточно отправить на целевой хост серию специально сформированных IPv4-пакетов.
Данной уязвимости подвержены ядра с 2.6.28.10 по 2.6.32-rc8 включительно. В версии 2.6.32 она уже исправлена.
Уязвимость локализована в коде, отвечающем за дефрагментацию IPv4-пакетов (файл net/ipv4/ip_fragment.c, функция ip_frag_reasm), и имеет тип «NULL pointer dereference» (разрешение нулевого указателя). В связи с этим нужно сделать два замечания:
Несколько дней назад вышли обновления для Fedora 11, Fedora 12, а также для Ubuntu 9.10. Всем, кто использует уязвимые версии ядра, рекомендуется срочно обновиться.
>>> Подробности
Вышел релиз iptables 1.4.6 — интерфейса к Linux-фаерволу netfilter.
Основным новшеством данного релиза является поддержка критерия osf (passive OS fingerprinting), аналогичного критерию os OpenBSD-фаервола pf. Оба этих критерия позволяют по TCP SYN-пакету определить семейство и, в некоторых случаях, даже примерную версию операционной системы, отправившей этот пакет. Детекция производится на основании анализа ряда характеристик пакета, таких как размер TCP-окна, максимальный размер сегмента (MSS), опции TCP, бит DF и т.п. Совокупность значений этих параметров, позволяющая однозначно идентифицировать систему-отправителя, называет сигнатурой. Существующий на настоящий момент список сигнатур, сопровождаемый сообществом OpenBSD, весьма обширен.
Пример использования:
iptables -I INPUT -p tcp -m osf --genre Windows --ttl 2 -j DROP
Критерий osf был реализован Евгением Поляковым (разработчиком POHMELFS и автором порта CARP под Linux) еще в 2003 году. Однако соответствующий модуль netfilter был принят в ядро лишь в июне текущего года, а интерфейс к нему на уровне iptables появился только сейчас.
Заметим, что для использования данного критерия необходима утилита nfnl_osf, обеспечивающая подгрузку базы сигнатур для модуля детекции через интерфейс nfnetlink. Будем надеяться, что мейнтейнеры соответствующих пакетов в наших любимых дистрибутивах вскоре обратят свое внимание на эту проблему. Пока же самые нетерпеливые могут собрать эту утилиту по старинке, через make bin (для сборки нужны заголовки библиотеки nfnetlink).
Среди других изменений в данном релизе iptables можно отметить поддержку ядра 2.6.32, исправление ряда мелких проблем в отдельных модулях (xt_iprange, xt_conntrack), поправки в man-страницах.
>>> ChangeLog
Вышел релиз virt-manager 0.8.1 — графического (GTK) интерфейса к унифицированной системе управления виртуализацией libvirt. В настоящее время virt-manager поддерживает технологии Xen, QEMU и KVM. Скриншоты.
Основные новшества:
Кроме того, вышел релиз virtinst 0.500.1 — консольной программы, упрощающей создание виртуальных машин через libvirt.
Основные улучшения:
И наконец, вышел минорный релиз гипервизора qemu-kvm 0.11.1, объединяющего платформу виртуализации QEMU и технологию KVM. В этом релизе выполнена синхронизация кода с QEMU 0.11.1, а также исправлен ряд ошибок, в частности, проблемы с изменением размера VGA-экрана, переполнение буфера в модуле usb-linux и т.п.
>>> Подробности
Вышел релиз GreenSQL-FW 1.2.0 — SQL-прокси-сервера, обеспечивающего защиту от атак типа «SQL-инъекция» на различные приложения, использующие базы данных MySQL и PostgreSQL, в частности, на системы управления контентом (CMS).
В версии 1.2.0 добавлена штатная поддержка PostgreSQL, а также значительно изменен пользовательский интерфейс.
GreenSQL поддерживает несколько режимов работы:
Для выявления потенциально опасных запросов используются следующие методы:
Управление GreenSQL осуществляется через веб-интерфейс (скриншоты).
Для скачивания доступны не только исходный код, но и готовые пакеты под наиболее популярные серверные дистрибутивы — Debian и CentOS, а также под Ubuntu и Fedora.
>>> Подробности
Производственный директор компании Zend Кент Митчелл (Kent Mitchell) официально заявил, что поддержка платформы FreeBSD в продуктах Zend прекращена в связи с отсутствием спроса.
По словам Митчелла, спрос на коммерческую продукцию компании Zend под платформу FreeBSD ничтожно мал — даже на сборки под Mac спрос на порядки выше. Оставлять поддержку FreeBSD-версий только для бесплатных продуктов (в частности, Zend Optimizer) также нецелесообразно, потому что они развиваются на деньги, вырученные при продаже коммерческой продукции.
Заметим, что последняя доступная под FreeBSD версия Zend Optimizer — 3.3.9 — существует только в 32-битной сборке.
Мейнтейнер PHP во FreeBSD Алекс Дюпре (Alex Dupre) уже сообщил, что новых релизов порта ZendOptimizer больше не будет.
>>> Подробности
В списке рассылки разработчиков gNewSense — полностью свободного дистрибутива, поддерживаемого Фондом свободного ПО (FSF) — появилось сообщение, информирующее о том, что следующий релиз этого дистрибутива (3.0) будет основан на пакетной базе Debian GNU/Linux, а не на Ubuntu, как предыдущие.
Причины перехода:
Соответствующие изменения уже внесены в официальный FAQ проекта.
>>> Подробности
В популярном DNS-сервере ISC BIND версии 9 обнаружена уязвимость, позволяющая поместить в кэш сервера некорректные данные.
Уязвимость проявляется при работе сервера в режиме рекуррентного резольвера с поддержкой DNSSEC, во время обработки клиентского запроса с установленными флагами CD (отключить проверку) и DO (получить записи DNSSEC). Нормальные клиенты, как правило, не отправляют подобные запросы, поэтому риск можно свести к минимуму всего лишь правильной настройкой allow-recursion. Также проблему решает полное отключение DNSSEC-проверок на сервере.
Тем не менее, ISC уже выпустила обновления безопасности для веток 9.6, 9.5 и 9.4. Всем администраторам, использующим уязвимые версии BIND (9 и выше), рекомендуется произвести обновление.
>>> Подробности
Разработчики Debian опубликовали официальное уведомление о поддержке нового формата пакетов с исходным кодом — DebSrc3.0.
Отличительной чертой нового формата является возможность раздельного хранения дистрибутивных патчей к исходному коду (в старом формате src-пакетов все патчи собирались в единый diff.gz). Возможность раздельной поставки патчей упрощает процесс документирования, делает более удобным процесс синхронизации патчей с другими дистрибутивами, а также позволяет авторам изначальных проектов ускорить обнаружение новых патчей и их вливание в базовый проект. Кроме того, основанные на пакетной базе Debian сторонние дистрибутивы могут отдельно выделять собственные патчи, без модификации изначально представленного набора патчей.
Новый формат добавляет и другие возможности, в частности, использование нескольких архивов с исходным кодом, включение в пакет произвольных бинарных файлов (например, PNG-логотип Debian теперь можно добавить в src-пакет без применения uuencode), а также поддержку архивов bzip2 и lzma (помимо используемого сейчас gzip).
Работа по переводу пакетов на новый формат уже начата. Следить за ней можно здесь (цифры и графики) или здесь (только цифры). На момент написания этой новости переведено 127 пакетов.
Этот формат был разработан участниками проекта Debian. Ранее проект Ubuntu уже принял этот формат в качестве основного, не дожидаясь его официального признания Debian'ом.
>>> Подробности
Вышел релиз Metasploit Framework 3.3 — открытой платформы для создания и отладки эксплойтов, содержащей вспомогательные компоненты и сотни готовых эксплойтов.
Вот лишь некоторые новшества этого релиза:
>>> Скачать.
>>> Подробности
| ← предыдущие |