Archive for the ‘hack’ Category

С преветом от Linux

Sunday, April 19th, 2009

  Отличнейший экслойт объявился для последнего бага в udev. Кому всю жизнь не хватало прав рута – налетайте !
  Оригинал здесь:
http://seclists.org/fulldisclosure/2009/Apr/att-0198/udev_txt

Как поиметь халявный WiFi на отдыхе

Saturday, January 24th, 2009

  В последнее время доступ в интернет через WiFi предлагают во многих гостиницах. Однако, только в редких случаях (исключая пятизвёздочные) эта услуга предоставляется бесплатно. Имея некоторое желание и навыки, зачастую можно поиметь немного интернета бесплатно :)
  Первый вариант не требует предварительной подготовки, но во многом зависит от удачи. Берём ноут, включаем wifi, получаем адрес по DHCP, пингуем по очереди все адреса в локальной сети и записываем появившиеся маки. Потом меняем мак своего WiFi адаптера на один из собранных (кроме рутера, разумеется) – хватается соответствующий IP и смотрим интернет. Если доступ в сеть не появился – пробуем следующий. Идея основана на том, что если кто-то уже прикупил себе инет по 2 бакса за полчаса, либо в сетке присутствуют компы гостиницы, то доступ для их IP/mac пар будет открыт.
  Второй вариант подразумевает наличие openVPN сервера и основывается на том факте, что UDP трафик обычно не фильтруют вообще. Если openvpn настроен и проверен в домашних условиях, то подключится по UDP к нему можно даже в том случае если TCP закрыт и предлагается только за деньги. Дальше весь трафик, в том числе и TCP, идёт через VPN.
  Чёчё в деле, одним словом.

Новая фича openssh

Saturday, January 10th, 2009

  В новой версии openssh появилась встроенная возможность запирать пользователей в chroot. Вкупе со встроенным sftp сервером эта фича предоставляет простую и безопасную замену устаревшему ftp на хостинговых площадках.
  Подробное описание конфигурации можно посмотреть здесь. Стоит только упомянуть об одной особенности: все директории в пути chroot должны быть под владением пользователя root, иначе не работает – в логах появляется ошибка “fatal: bad ownership or modes for chroot directory”. Нашёл здесь.

nano.lv как хостинг

Friday, January 2nd, 2009

  На днях знакомый прислал мне классную ссылку на интернет сайт, размещённый на хостинговой площадке фирмы nano.lv. Оказывается, за неполных три LVL несложными манипуляциями можно получить удалённый доступ в основную систему сервера со всеми вытекающими – начиная от сбора информации и заканчивая атаками DoS и получением рутовских прав.
  Что бы я хотел сказать treck-у по этому поводу… Внешний клиент для админа это всегда враг, главной целью которого является полный захват сервера либо выведение его из строя. Именно исходя из этого утверждения следует строить хостинговую систему и всегда думать о балансе между предоставляемыми возможностями и общей безопасностью системы.
  С другой стороны, предоставляя пользователям удалённый доступ к системе с возможностью запуска приложений, очень трудно (скорее даже невозможно) обеспечить разделение ресурсов и безопасность основной системы без использования полной виртуализации для каждого клиента. До тех пор, пока пользователь обслуживается системным ядром, любая ошибка в его коде может быть использована для отказа в обслуживании всего сервера. А ошибки и сплойты для linux это естественная и бесконечная история его развития. И grsecurity тут не поможет. Аминь.

CyrUp – Новогодний выпуск

Saturday, December 27th, 2008

  Почти три года назад я опубликовал исходный код проекта cyrup на sourceforge.net. Более тысячи копий было загружено за это время. Не много, но достаточно для узконишевого продукта.
  Сегодняшний выпуск предновогодний и почти юбилейный :)

Миграция FreeBSD с пятёрки на семёрку

Sunday, November 16th, 2008

  FreeBSD говно.
  Таким не хитрым вступлением хотелось бы начать свой короткий, но очень печальный рассказ о причине и попытке миграции FreeBSD версии 5.5 на текущий стабильный выпуск 7.0.
  Причина проста – перестали собираться порты. Конкретнее – autoconf и иже с ним. Погуглив, обнаружил, что свежие порты не собираются на 5.x. Зашибись.
  Не долго думая, решил обновить до семёрки, так как на сайте freebsd есть простая пошаговая инструкция как это делать: http://www.freebsd.org/releases/7.0R/announce.html
  Мощный сценарий freebsd-update.sh что-то делает долгое время, после чего просит РУКАМИ (!) исправить с десяток файлов в которых меняется номер версии выпуска. В любой момент можно отказаться, в результате чего сценарий завершает свою работу. То есть, как бы, пользователю задают вопросы, но правильный ответ всегда “yes”. Или домой.
  Со второго раза, согласившись со всем, что только не предлагал сценарий обновления, я, следуя инструкции, послал сервер в перезагрузку.
  То, что сервер не загрузился, меня совсем не удивило. Ничего иного от разработчиков поделия под названием FreeBSD я и не ожидаю. Какими бы не были красивыми, простыми и понятными инструкции, что бы не кричали фанаты, но FreeBSD это убогая и не удобная в администрировании система.
  Завтра с утра придётся ехать и красноглазить на месте, что там обновил этот дебильный обновлятель…

  НА УТРО….
  Оказалось, что freebsd-update.sh удалил ядро. Благо, kernel.old оказался на месте. Как позже подсказал мне Гугл, этот идиотский сценарий похоже рассчитан исключительно на ядро GENERIC.
  В общем, используя проверенный опытом make buildworld; make installworld, прыгнул сначала на 6.0, потом на stable 6.3. Не без танцев с бубном конечно, но всё же. Сразу на 7.0 с 5.5 не удалось даже пересборкой, ну да и ладно, не очень-то и хотелось. Наверняка, ещё годик проблем там будет не мерено.

Ошибка в модуле ipt_recent для netfilter

Saturday, October 18th, 2008

  Есть у меня один могильничек… Точнее сервер на RedHat 7.2 с ядром серии 2.4.
  Всё бы ничего, да в модуле ipt_recent для netfilter-а оказывается есть крутой баг, делающий этот самый ipt_recent совершенно бесполезным. Нашли его ещё в 2005-ом и благополучно исправили в ветке 2.6, но забыли портировать на 2.4 – в текущем ядре 2.4.36.7 модуль всё ещё кривой.
  Так что пришлось мне править оригинальную заплатку что бы она накладывалась на ядро серии 2.4. Так же отправил письмо в linux-kernel, надеюсь в следующем релизе исправят.
  Patch: http://dg.sad.lv/files/ipt_recent.2.4.patch

tcp window scaling – теория и практика

Sunday, September 14th, 2008

  Опция TCP window scale позволяет динамически согласовывать (увеличивать) количество передаваемых данных в одном пакете. Что, в теории, ведёт к более эффективному использованию интернет соединений и увеличению реальной пропускной способности. Данная фича уже давно присутствует в Linux и даже была включена в новейшем Windows Server 2008 ;)
  Однако, в реальной жизни всё не так уж радостно. В случае, если в результате некорректной реализации масштабирования окна в ОS либо неправильной настройки, не удаётся согласовать размер окна, происходит повторная, порой многократная, передача пакетов. К сожалению, многие из купивших Cisco или установивших *BSD по пошаговой инструкции 3-4 года назад, никогда в дальнейшем не утруждают себя обновлениями.
  В результате, на высоконагруженных серверах, включение TCP window scaling приводит к заметному снижению производительности. 5-10 клиентов с кривой реализацией TCP стэка посылающие 100 сообщений по 5 мегабайт увеличивают нагрузку на канал передачи данных и CPU принимающего сервера в несколько раз !

Баг в Debian ? Попробуй сообщить…

Monday, September 8th, 2008

  Настраивая Lenny, нашёл неприятный баг в дебиановской версии ядра и решил оповестить об этом разработчиков. Не тут-то было….
  Как это ни странно, в старейшем дистрибутиве Debian отсутствует адекватная система отслеживания ошибок ! То, что находится по адресу bugs.debian.org, может использовать только человек, посвятивший Debian всю свою жизнь, не меньше…
  На сколько я понял, система отслеживания ошибок основанна исключительно на электронной почте. По крайней мере, я не нашёл другого способа донести свои проблемы до разработчиков. После работы с bugzilla это реально вымораживает. Ведь надо помнить тэги, адреса рассылок, формат сообщений и долго думать, какой пакет указывать – виртуальный, типа linux-image-2.6 или реальный !
  Ужос.

LiveJournal против Gentoo

Saturday, August 16th, 2008

  Некоторое время назад inbox.lv зачем-то купил Sviesta Ciba – местный вариант LiveJournal. Поставили туда счётчик Gemius и благополучно забыли. А мне, значит, следи за этим сервисом.
  klab.lv работает на движке LiveJournal 2005 года поставленным ещё watt‘ом. Всего сервис обслуживают четыре сервера под Джентой на amd64. Основной задачей является смотреть за тем, чтобы всё это барахло не падало и обновлять системный софт по возможности. Обновление же движка LiveJournal до текущей версии потребовало бы по крайней мере пару недель работы и установки ещё одного сервера.
  Так вот, ближе к теме. Код LiveJournal работает под древним apache-1.3 используя старый mod_perl. Умные ребятки из Gentoo взяли, да и выкинули эти ebuild’ы из портэжа. Так что, после очередного обновления одного из web серверов, на нём радостно установился apache-2.2 и mod_perl2 соответственно. Попытки запустить старый перловый код с помощью Apache2::compat не дали желаемого результата.
  В общем, скрепя сердцем и мозгами, я нашёл старые ибилды, пропатчил их и поставил через оверлей. Выкладываю их здесь для дальнейшего использования в подобных случаях.

Новый pop3 сервер

Wednesday, August 6th, 2008

  Наконец-то это случилось. Новый pop3 сервер (mail.inbox.lv) теперь поддерживает SSL как для POP3 протокола, так и для Mail+ пользователей, использующих данный сервер для отправки почты. Поддержка IMAP технически реализованна, но отключена по маркетинговым соображениям. В наличии также новая железка и новый софт.
(more…)

Как мы чинили Reiserfs

Friday, July 18th, 2008

  Мы используем ReiserFS для хранения данных, так как эта файловая система оптимально подходит для большого количества мелких файлов, которые составляют почтовые ящики пользователей inbox.lv
  В результате идиотизма сотрудников DEAC и неудачных попыток реинкарнации таблицы разделов, у нас оказалось несколько пятисотгигабайтных дисков с убитым reiserFS. Причём данные были в полном порядке – затёрт оказался только суперблок. Да, повторный --rebuild-sb без --rebuild-tree приводит к плачевному результату. (more…)

Старое барахло

Friday, May 16th, 2008

  Для сохранности положил тут старое барахло.
  Досовский iproute. В своё время была супер программка для рутера. Работала с дискетки на i486. Использовалась Latnet и Microlink. Сам поставил на ней штук 8 рутеров. Имеет некоторые недоработки, уже не помню какие.

  NAIS. Какие-то скрипты для NAIS. Помню, в пожарке мы использовали DOS версию с DB файлами и HASP ключом для ограничения количества одновременных подключений. В свободное время, я перегнал данные из Paradox в postgreSQL, соорудил веб-интерфейс, а так же написал сопутствующие скриптЫ.

  Позже я написал веб интерфейс к оригинальной базе NAIS, работающей под Firebird.
  Однажды мне звонил юрист из DATI и стал требовать, чтоб я убрал данный код со своей страницы. Типа я нарушаю их интеллектуальные права и всё такое. Однако, какие именно права, он не смог объяснить :) Позже позвонил какой-то их менеджер и просил убрать пароль к их базе из исходников. Что я и сделал. Найти его не составляет никаких проблем – пароль прописан открытым текстом в исполняемом файле.
  Телефонная книжка на PHP. Оригинальный код и дизайн был произведён на свет Danaki в 2000 году. В 2004 году я переписал код, а вот дизайн оставил прежним. До сих пор используется в пожарке

  Система учёта трафика Когда заграничный трафик оплачивался отдельно за мегабайты, его требовалось считать и учитывать. Я подрабатывал в мелкой провайдерской канторе и допиливал поделие Ramobz’ы. Работало всё это чудо на Net-acct/postgreSQL/PHP/Perl.

  Разные скрипты

  • PHP скрипт для показа сообщений из карантина amavis в браузере. Ссылка на скрипт, с именем файла как параметр, вставляется в уведомительные сообщения администратору
  • Скрипт для закачки обновлений для Касперского
  • Скрипт для закачки обновлений для антивируса AVG
  • CMD скрипт под винду для простого резервного копирования
  • Скрипт для копирования чего-то на виндовую шару
  • Простой CMS на PHP из двух файлов – первый и второй
  • Скрипт для обновления динамического IP адреса на сайтах DDNS типа dyndns.com
  • PHP скрипт для управления DNS зоной для диапазона IP адресов
  • Скрипты для периодической генерации пароля htpasswd и автоматической отсылки на email при запросе

ebuild для Дженту за 15 минут

Friday, March 7th, 2008

  Для нового мега проекта Danaki для inbox.lv (уже в стадии подготовки к запуску) необходимо было установить последний lighttpd версии 1.5 которого ещё нет в официальном Gentoo.
  Ставить из tarball’а не кошерно, решил сделать свой ebuild из существующего для 1.4.18. Делал подобное первый раз без каких-либо познаний в этом деле. За 20 минут я:

  1. исправил URL для 1.5
  2. добавил нашу заплатку для кода
  3. добавил новую зависимость (aio)
  4. добавил новый USE флаг
  5. изменил конфигурационные файлы для lighttpd по умолчанию

  Ничего сложного :)

Восстановление Intel Entry Storage System SS4000-E

Saturday, March 1st, 2008

  Сломался у товарищей значит Intel Entry Storage System SS4000-E. Дёрнулось электричество и аппарат сказал что диски у него теперь девственные и совсем новые. А раз там Linux Inside, притащили мне искать потерянное добро. (more…)

Простой шейпер

Friday, February 1st, 2008

  Иногда возникает необходимость шейпить траффик по определённому порту. В моём случае исходящий SMTP траффик убивал DSL линк когда кто-нибудь посылал видео ролик на 7 мегов 3-10 адресатам. С помощью пакета iproute2 в linux можно творить маленькие чудеса :)

  • Устанавливаем очередь CBQ на интерфейс:

    tc qdisc add dev eth1 root handle 1: cbq avpkt 1000 bandwidth 100mbit
  • Создаём класс на 256kbit:

    tc class add dev eth1 parent 1: classid 1:1 cbq rate 256kbit allot 1500 prio 5 bounded isolated
  • Загняем траффик по шаблону ip dport 25 0xffff через фильтр u32:

    tc filter add dev eth1 parent 1: protocol ip prio 16 u32 match ip dport 25 0xffff flowid 1:1

  В результате исходящий траффик на 25 порт не превышает 260kbit/s в любой ситуации.

  Больше здесь:
Rate limiting a single host or netmask
The u32 classifier

Поиски причин segfault под Gentoo

Saturday, January 26th, 2008

  Пришлось на днях поразвлекаться с gdb и падающим в segmentation failure PHP. Вот несколько советов по получению удовлетворительного результата под hardened Gentoo:

  1. ставим размер coredump’a бесконечным:
    ulimit -c unlimited
  2. прописываем путь для коры:
    echo "/tmp/core.%p-%t" > /proc/sys/kernel/core_pattern
  3. переключить компилятор gcc на vanilla (ВАЖНО!):
    gcc-config i686-pc-linux-gnu-3.4.6-vanilla
  4. запускаем сборку с дополнительными опциями:
    EXTRA_ECONF=" --enable-debug" FEATURES="nostrip" emerge -a php

  После падения по segfault смотрим результат:
gdb /usr/bin/php-cgi /tmp/core.bla-bla-bla

Подводные камни патча Grsecurity

Sunday, January 20th, 2008

  На днях столкнулся с проблемами при использовании ядра, собранного из sys-kernel/hardened-sources в Gentoo с включенными опциями grsecurity. Долго не мог понять в чем дело – gcc постоянно падал в segfault при сборке большинства пакетов, в то время как tar паковал пару гигов через bzip2 на ура. Поменяли проц и мамку – без результата.
  Дело оказалось в опции CONFIG_PAX_NOEXEC из раздела Security options->PaX->Non-executable page. После полного отключения фичи Non-executable pages компилятор всё таки заработал.
  Данная проблема явилась для меня сюрпризом, так как я уже долгое время работаю с ядрами линукс с включенным PAX’ом под amd64 без каких-либо нареканий. В этом же случае, система оказалась i686 на базе процессора Pentium4 без поддержки NX бита.

Windows Vista – есть ли IPX на марсе

Wednesday, December 26th, 2007

  Пришлось мне поковырять Windows Vista с целью пришить ей поддержку Novell Netware через IPX. Понятно, что IPX это пришелец из прошлого и на самом деле он нафиг никому не сдался. Сам Novell уже давно от него отказался и в клиенте под Vista его убрали. А Microsoft туда же, мол поддержки нет и не нужно. Но ведь в XP есть ? ;) Нам нужно, значит и в Vista скорее всего будет работать. Ведь Vista не далеко ушла от своего предшественника в плане движка ядра. (more…)

Sybase и Gentoo

Wednesday, November 21st, 2007

  Некоторые кодеры очень не любят (не умеют?) читать документацию. По этому пишут программы, основываясь на коде из всяких примеров в книжках. Тем самым создавая не только кривой софт, но и проблемы другим людям.
  На этот раз, в результате деятельности подобных товарищей, возник безумный микс из программы на Clipper под DOS, костыля на Java, Sybase базы и PHP кода под Web на Gentoo. Все это гордо назвали интернет магазином и стали продавать. А я, значит, инсталируй все это барахло.
(more…)