войти зарегистрироваться

AssemblerМинималистичная программа в формате ELF из песочницы

Вдохновившись статьёй Привет из свободного от libc мира, я так же решил проделать нечто подобное. Чтобы не заниматься этим бесцельно, я решил поставить перед собой следующую задачу. Сделать программу, выводящую какую-нибудь простую строку, вроде «ELF, hello!». Разобраться с тем, как именно она будет представлена в исполняемом файле. Ну и попутно, постараться уложиться в 100 байт.

Сетевые технологииDNS сервер BIND (теория)

Основная цель DNS — это отображение доменных имен в IP адреса и наоборот — IP в DNS. В статье я рассмотрю работу DNS сервера BIND (Berkeley Internet Name Domain, ранее: Berkeley Internet Name Daemon), как сАмого (не побоюсь этого слова) распространенного. BIND входит в состав любого дистрибутива UNIX. Основу BIND составляет демон named, который для своей работы использует порт UDP/53 и для некоторых запросов TCP/53.

Основные понятия Domain Name System


Исторически, до появления доменной системы имен роль инструмента разрешения символьных имен в IP выполнял файл /etc/hosts, который и в настоящее время играет далеко не последнюю роль в данном деле. Но с ростом количества хостов в глобальной сети, отслеживать и обслуживать базу имен на всех хостах стало нереально затруднительно. В результате придумали DNS, представляющую собой иерархическую, распределенную систему доменных зон. Давайте рассмотрим структуру Системы Доменных Имён на иллюстрации:

ТипографикаШрифты из склепа из песочницы

image Мне от моноширинных шрифтов многого не надо. Адекватная поддержка кириллицы. Для программирования — отсутствие замыливания. Возможность различать 0 (который ноль) и О. Возможность различать I (которое i), l (которое L) и | (которое or). Для работы в консольном двухпанельнике — поддержка псевдографики. Однако в современном мире подобных шрифтов не так, чтобы много. Откуда же их взять?

Осторожно! Под катом — сплошные анахронизмы.

УбунтариумОткрыт репозиторий с играми для Ubuntu 10.04, 10.10, 11.04, 11.10

Вчера на сайте UALinux появилась новость о том, что они подготовили репозиторий с играми для Убунты. Репозиторий содержит 250 игр разного жанра: их можно установить кнопочкой на сайте, или же привычно добавить репозиторий и ставить пакеты.
Сами игры в большинстве своем довольно примитивные: в мире есть уже много чего гораздо круче восстаний антропоморфных кроликов, или шариков в лабиринте, но есть игры из детства, портированные с консоли, аналоги старых добрых Worms, несколько «гоночек» и еще много чего интересного. Ну и, самое главное, что все игры доступны бесплатно: подключай репозиторий, ставь и играй.
Несколько игрушек, кстати, уже есть есть в дистрибутиве самой убунты, но в репозитории версии новее.
В общем, удачного убивания времени.

PS: Судя по комментам к моим предыдущим постам, на Хабре живут люди из UALinux. Поэтому, думаю, можно оставить в комментариях названия игр, которых не хватает в репозитории, но хотелось бы их там видеть.

Информационная безопасностьУязвимость в sudo

Наверное все заинтересованные лица подписаны на соответсвующие рассылки и нет смысла превращать блог в security-notifications, но тем не менее, уязвимость в sudo 1.8.0 — 1.8.3p1 потенциально позволяет выполнить от рута команду любому локальному пользователю, способному запустить sudo. CVE-2012-0809
Во FreeBSD уже пропатчились, линупсы пока спят, а в случае стабильных веток им всё равно — ветка sudo 1.7 уязвимости не подвержена.

Ошибка кроется в передаче vfprintf argv[0] в функции отладочного вывода.
С помощью ключа компиляции FORTIFY_SOURCE можно усложнить эксплуатацию бага, без него эксплоит совсем простой.
Оригинальное описание.

VIMVimCommander: работаем с удалённой системой по ssh

Прелюдия


Пользовался я ViM'ом и был доволен. Как-то раз узнал, что он ко всей его могучести умеет быть небольшим проводником по файловой системе (прим. достаточно выполнить vim .). Позже раскопал, что гораздо удобнее это делать добавив плагин NERD_Tree — он действительно удобен и я был бы рад если бы на его основе был сделан VimCommander, однако Leandro (автор VimCommander) пошёл другим путём и старался подражать MidnightCommander. Ну что ж, надо обучить VC работать с удаленными системами по ssh, решил я, ведь его старший брат (mc) вполне неплохо делает это. Примерно с такими мыслями я открыл shell и набрал vim ~/.vim/plugin/vimcommander.vim.

Linux для всехGrSecurity/PaX: предустановленные security level

(Статья для тех, кто уже в теме. Остальным будет интереснее сначала почитать мои предыдущие статьи про Hardened Gentoo: описание, установка, настройка, впечатления.)

Речь пойдёт про настройку GrSecurity/PaX (я дал русскоязычные ссылки, но англоязычные намного информативнее) в ядре линуха. Всё описанное актуально для Hardened Gentoo (ядро 3.1.5), но применимо в любом дистрибутиве (там не будет предустановленных Gentoo-шных security level workstation/server/virtualization, но по моему описанию в этой статье их легко будет реализовать вручную).

Кроме того я провёл небольшое тестирование производительности с целью определить насколько использование GrSecurity/PaX тормозит работу системы. Тесты проводились на Core2Duo в 32-битной OS в single user mode на компиляции ядра с -j3, бралось среднее значение user+sys по трём прогонам (скорость сборки ядра сравнивалась с эталонной: при отключенных GrSecurity и PaX в ядре и использовании обычного, не hardened, gcc).

Системное администрированиеЕще несколько слов о Path MTU Discovery Black Hole из песочницы

Еще несколько слов о Path MTU Discovery Black Hole



Вместо вступления


Однажды для каждого настоящего системного администратора (или исполняющего обязанности такового) наступает момент истины. Ему выпадает судьба настроить маршрутизатор на компьютере с установленной ОС GNU/Linux. Те, кто это уже прошел, знают, что ничего сложного в этом нет и можно уложиться в пару команд. И вот наш админ находит эти команды, вбивает их в консоль и гордо идет к пользователям сказать, что уже все работает. Но не тут-то было – пользователи говорят что их любимые сайты не открываются. После траты некоторой части своей жизни на выяснение подробностей обнаруживается, что большая часть сайтов ведет себя следующим образом:
1. При открытии страницы загружается заголовок и больше ничего;
2. В таком состоянии страница висит неопределенно долгое время;
3. Строка статуса браузера все это время показывает что загружает страницу;
4. Пинги и трассировка до данного сайта проходят нормально;
5. Соединение по telnet на 80 порт тоже проходит нормально.
Обескураженный админ звонит в техподдержку провайдера, но там от него быстро избавляются, советуя попробовать настроить маршрутизатор на OC Windows, а если уж и там не работает тогда… купить аппаратный маршрутизатор.
Я думаю, эта ситуация знакома многим. Некоторые в нее попадали сами, у кого-то с ней сталкивались знакомые, а кто-то встречал таких админов на форумах и прочих конференциях. Итак: если у Вас Такая Ситуация, то — Поздравляю! Вы столкнулись с Path MTU Discovering Black Hole. Данная статья посвящается тому, отчего это бывает, и как решить эту проблему.

Программинг микроконтроллеровRaspberry Pi, сигнализация и умный дом


Началось все года 4 назад когда во время рабочего дня у меня обчистили квартиру. Попасть домой через дверь после этого уже не удалось из-за поврежденного замка. Неприятное событие заставило задуматься о безопасности жилища. И это лишь одна из причин для мониторинга и автоматизации квартиры. Как часто прийдя на работу (а то и уезжая или улетая куда-либо) вы сомневались выключили ли перед уходом утюг, закрыли ли газ, воду ;-) Подбавим масла в огонь админам — спокойны ли вы что ваш старый БП в работающем системнике дома не чадит и не пылает!?) И что удаленно делать с девайсом, который «наглухо завис».

В этом посте я рассмотрю некоторые существующие на рынке решения, розничную стоимость доступного аппаратного обеспечения и способ как создать сигнализацию квартиры и некоторые из функций «умного дома» используя одноплатный компьютер Raspberry Pi

Linux для всех Автоматический бекап при подключении внешнего HDD в Ubuntu

Последнее время стали популярны посты на тему бекапа. Продолжу и я эстафету под девизом «Много бекапов хороших и разных».

Статья 1 и статья 2, натолкнувшие меня на эту идею.

Сам я давно пользуюсь rsnapshot для бекапа серверов, да и не только. Для тех, кто не в курсе, что оно такое — это базирующаяся на rsync утилита на Perl для создания резервных копий. Особенностью является ориентация на создание полных снапшотов файловой системы через заданный интервал времени, для экономии места на диске, не изменившиеся с момента первого бэкапа файлы линкуются как hard link.

Я работаю на Ubuntu 11.10 на ноутбуке и потому статья будет описывать метод бекапа этого самого ноутбука на внешний USB HDD, который не постоянно подключен, а подключается лишь периодически. В момент подключения и будет запускаться скрипт для бекапирования системы.

Итак, начнем.