Обновить
286
0
Георгий Шуклин@amarao

Забанен за упоминание войны. Больше не на хабре.

Отправить сообщение

Пример Makefile

Время на прочтение7 мин
Охват и читатели77K
Написание makefile иногда становится головной болью. Однако, если разобраться, все становится на свои места, и написать мощнейший makefile длиной в 40 строк для сколь угодно большого проекта получается быстро и элегантно.

Внимание! Предполагаются базовые знания утилиты GNU make.
Читать дальше →

Перехват системных вызовов с помощью ptrace

Время на прочтение4 мин
Охват и читатели40K
ptrace (от process trace) — системный вызов в некоторых unix-подобных системах (в том числе в Linux, FreeBSD, Max OS X), который позволяет трассировать или отлаживать выбранный процесс. Можно сказать, что ptrace дает полный контроль над процессом: можно изменять ход выполнения программы, смотреть и изменять значения в памяти или состояния регистров. Стоит оговориться, что никаких дополнительных прав при этом мы не получаем — возможные действия ограничены правами запущенного процесса. К тому же, при трассировке программы с setuid битом, этот самый бит не работает — привилегии не повышаются.

В статье будет показано, как перехватывать системные вызовы на примере ОС Linux.
Читать дальше →

Виртуализация Juniper JunOS в среде GNS3

Время на прочтение4 мин
Охват и читатели36K
image

Вступление


В телекоммуникации можно наблюдать одно неоспоримое явление, связанное с техническим персоналом – его становится все меньше, при этом требования к конкретным специалистам возрастают. В те периоды, когда цифровые системы коммутации на телефонных станция оставались фантастикой, штат сотрудников станции включал значительное число электромехаников. Многие операции по переключению абонентов, изменению нумерации, созданию новых направлений выполнились «руками», в последствии при переходе на цифровые системы большинство действий стали решаться программно, с привлечение меньшего числа персонала. Аппаратно-программные комплексы развивались и совершенствовались и становились сложнее и требования с инженеру возрастали.
Под катом много снимков экрана.
Читать дальше →

Linux: Ускоряем софтрейд и RAID6 в домашнем сервере

Время на прочтение4 мин
Охват и читатели33K
Чем можно заниматься в 0 часов 0 минут в Москве? Сидеть за праздничным столом и праздновать? Как бы не так. В этот праздничный миг я хочу поделиться с вами моими сегодняшними изысканиями по тюнингу производительности софтрейда в домашнем сервере. Можно пропустить теорию и сразу читать последний абзац где основная соль.

Почему RAID-6?


Как известно, RAID-5 выдерживает смерть одного веника, и после этой самой смерти – до момента когда закончится восстановление рейда с новым винчестером ваши данные под угрозой – восстановление обычно занимало до 70 часов для больших массивов и еще один веник может легко умереть в это время.
RAID-6 выдерживает смерть 2-х любых веников. Из минусов – общепризнанное мнение что тормозит, особенно запись, даже по сравнению с RAID-5. Что-ж, проверим.
Читать дальше →

Настройка Active/Passive PostgreSQL Cluster с использованием Pacemaker, Corosync, и DRBD (CentOS 5,5)

Время на прочтение16 мин
Охват и читатели30K
В этой статье объясняется, как настроить Active/Passive кластера PostgreSQL, с использованием Pacemaker, Corosync и DRBD.
Подготовлено Рафаэль Марангони, из команды BRLink Servidor Linux
Читать дальше →

Мониторинг состояния канала по jitter / packet loss

Время на прочтение4 мин
Охват и читатели45K
Добрый день, коллеги.

Собравшись с мыслями, решил нормально оформить родившееся у меня решение.

Итак, постановка задачи:

Есть два канала между точками А и Б, чаще всего от разных провайдеров. Необходимо обеспечить учет качества обслуживания на данных каналах, а именно:
1. При потерях >0.5% на канале, канал не должен использоваться.
2. При jitter > 10мс, канал не должен использоваться.

Такая задача возникла у меня на работе, поскольку два города соединены двумя каналами, по которым бегает в большом количестве голос, который, как известно, весьма капризен в отношении вышеописанных показателей. Кому интересно — милости прошу под кат.
Читать дальше →

Еще раз об архитектуре сетевых демонов

Время на прочтение13 мин
Охват и читатели20K
Во многих статьях, в том числе на хабре, упоминаются и даже описываются разные способы построения архитектуры сетевых сервисов (демонов). При этом мало у кого из авторов есть реальный опыт создания и оптимизации демонов, работающих с десятками тысяч одновременных соединений и/или гигабитным трафиком.

Так как большинство авторов не удосуживается хотя бы залезть в документацию, то обычно в таких статьях вся информация базируется на неких слухах и пересказах слухов. Эти слухи бродят по сети и поражают википедию, хабрахабр и другие уважаемые ресурсы. В результате получаются опусы вроде "Вы наверное шутите, мистер Дал, или почему Node.js" (пунктуация автора сохранена): она, в основном, верная по сути, но изобилует неточностями, содержит ряд фактических ошибок и изображает предмет с какого-то непонятного ракурса.

Мне было сложно пройти мимо статьи, изобилующей фразами вроде «эффективные реализации polling'а на сегодняшний день имеются лишь в *nix-системах» (как будто poll() есть где-то, кроме некоторых *nix). Этот пост начинался как комментарий, разъясняющий уважаемому inikulin ошибки в его статье. В процессе написания оказалось, что проще изложить предмет с самого начала, что я собственно и делаю отдельным постом.
В моем очерке нет срыва покровов или каких-то неизвестных трюков, здесь просто описываются преимущества и недостатки разных подходов человеком, который проверял, как всё это работает на практике в разных операционных системах.
Для желающих просветиться — добро пожаловать под кат.
Читать дальше →

Linux HA на основе Pacemaker

Время на прочтение5 мин
Охват и читатели131K
В своей предыдущей статье я вкратце коснулся темы создания High Availability решения на основе демона heartbeat. Однако, как выяснилось, что-то сложнее чем 2-х узловой кластер на нем делать не так уж удобно. Изучение проблемы вывело меня на след проекта Pacemaker. Его-то мы сейчас в кратце и рассмотрим.
Читать дальше →

Установка Asterisk в контейнере OpenVZ Ubuntu 10.04.1 LTS на хосте Debian GNU/Linux 5.0

Время на прочтение10 мин
Охват и читатели8.6K
image

Исходные данные:


  • Asterisk 1.6.2 — из родного репозитория Ubuntu
  • Ubuntu 10.04.1 LTS — контейнер в минимальной установке (x64bit)
  • Хостовая система для OpenVZ — Debian GNU/Linux 5.0 (Lenny) 2.6.26-2-openvz-amd64 — ядро из родного репозитория.

Устанавливаем и настраиваем OpenVZ хост. Особенности настройки OpenVZ-хоста тут рассматриваться не будут.
Считаем, что у нас он корректно настроен, включая NAT для гостевых машин и проброс необходимых для сервера портов.
Читать дальше

Подбор 14 символьного сложного пароля за 5 секунд

Время на прочтение2 мин
Охват и читатели234K
image

Достаточно давно и долго говорят о том что с использованием высоких скоростей GPU подбор паролей существенно ускорится. Но есть технологии которые позволяют перебор сделать еще
быстрее. Швейцарская компания, специализирующаяся в области безопасности Objectif Sécurité воспользовалась для своей технологии SSD дисками с радужными таблицами.
Читать дальше →

Репликация в Postgresql 9.0

Время на прочтение3 мин
Охват и читатели87K
Доброго времени суток. Учитывая, что с момента релиза PostgreSQL 9 прошло уже некоторое количество времени — я решил пощупать одну из его новых функций — нативную репликацию. Как известно, новый механизм основан на пересылке XLOG`a от мастера к слейву. Одним из жирных плюсов можно назвать нормальную обработку ALTER`ов. Иными словами — администратор 9й версии может обойтись без Slony.
Читать дальше →

Полнофункциональный RDP клиент — FreeRDP

Время на прочтение3 мин
Охват и читатели432K
Не секрет, что в современном мире без продуктов Microsoft практически не обойтись. Однако во многих случаях получается так, что гораздо эффективней использовать на рабочих компьютерах системы на базе GNU/Linux, а не Windows. Это значительно упрощает администрирование и сокращает расходы, предоставляя при этом пользователям гораздо больше легкодоступного функционала. Но что делать с теми приложениями, которые работают только под Windows и которым нет подходящего аналога в мире Linux? Поскольку обычно таких приложений единицы (иначе просто нету смысла ставить Linux на рабочий компьютер), то разумным выбором может стать использование терминальных серверов, работающих под серверными ОС от Microsoft. Кроме того, Linux лучше всего подходит для любых тонких клиентов, поскольку адекватных версий Windows для них просто не существует.

В любом случае необходимо уметь подключаться к терминальным серверам Windows. Для этого в MS был разработан свой протокол удалённого рабочего стола — RDP. Однако до недавнего времени для Linux существовал единственный открытый клиент для работы с этим протоколом — rdesktop. К сожалению, его развитие давно остановилось, и он испытывает огромные трудности при взаимодействии с современными версиями Windows.

Но недавно тихо и незаметно проект rdesktop был форкнут, в результате чего на свет появился новый открытый RDP клиент — FreeRDP. Первый же релиз этой программы разом исправил большинство известных проблем rdesktop, и проект продолжает активно развиваться. Почему-то появление столь полезного приложение обошли вниманием, поэтому я и решил опубликовать этот пост, чтобы хоть как-то исправить эту ситуацию и рассказать всем о существовании нормального RDP клиента для Linux. Под катом — описание возможностей FreeRDP и немного про отличную графическую оболочку Remmina для него.

Читать дальше →

Пишем свой драйвер под Linux

Время на прочтение8 мин
Охват и читатели69K
image

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

То, что мы сегодня создадим, корректнее будет назвать LKM (Linux Kernel Module или загрузочный модуль ядра). Стоит сказать, что драйвер – это одна из разновидностей LKM.

Писать модуль мы будем под ядра линейки 2.6. LKM для 2.6 отличается от 2.4. Я не буду останавливаться на различиях, ибо это не входит в рамки поста.

Мы создадим символьное устройство /dev/test, которое будет обрабатываться нашим модулем. Хочу сразу оговориться, что размещать символьное устройство не обязательно в каталоге /dev, просто это является частью «древнего магического ритуала».

Читать дальше →

DKIM — это просто

Время на прочтение3 мин
Охват и читатели397K
Здравствуйте.

Хочу поделиться своим небольшим опытом прикручивания DKIM (DomainKeys Identified Mail) к своему домену и почтовому серверу.

Мы имеем:
Задача:
  • Разобраться в системе подписи сообщений DKIM, что бы gmail признал её валидной и выдал заветные: dkim=pass.

Читать дальше →

Грабли при верстке HTML писем

Время на прочтение3 мин
Охват и читатели105K
Довольно часто наши клиенты устраивают регулярные рассылки с новостями. Почти всегда их не устраивают текстовые рассылки или простое оформление HTML рассылок. Наши дизайнеры вовсю креативят, а мы потом набиваем шишки при верстке их макетов с корректным отображением во множестве почтовых клиентов.

Ниже список встретившихся нам особенностей и способы их разрешения (как то упорядочить их мне не удалось, поэтому всё идет единым списком)
Читать дальше →

Уязвимость в стандартной функции glob() как угроза для FTP-серверов

Время на прочтение2 мин
Охват и читатели3.2K
Сайт SecurityReason сообщает об обнаружении опасной ошибки в реализации библиотечной функции glob() из стандартной библиотеки языка C (libc) на множестве платформ.

Эта функция предназначена для получения списка файлов, чьи имена удовлетворяют заданному шаблону. Ошибка заключается в том, что ограничение на выдачу функции, задаваемое переменной GLOB_LIMIT, не действует в случае задания некорректных путей в шаблоне. Такими некорректными значениями могут быть, например, «*/../*/../*foo» или «{..,..,..}/*/{..,..,..}/*bar». При этом вызов функции glob() может исчерпать всю доступную память процесса.

Особенную опасность данная ошибка представляет для (S)FTP-серверов, особенно с разрешенным анонимным доступом. Очевидно, запрос на листинг файлов с вышеприведенной маской приводит к скорому отказу в обслуживании FTP-сервера.

Уязвимости подвержены, по последним данным, как минимум следующие ОС: OpenBSD 4.7, NetBSD 5.0.2, FreeBSD 7.3/8.1, Oracle/Sun Solaris 10, а также все версии Linux с GLIBC. Уязвимость пока что устранена только в NetBSD; компании и сообщества, занимающиеся разработкой вышеперечисленных (за исключением NetBSD) операционных систем, пока не дают никакой информации; именно поэтому уязвимость классифицируется как «0-day». Сообщается также, что vsftpd не подвержен уязвимости.

Желающим попробовать уязвимость в действии могу предложить набрать в bash консоли команду наподобие
ls ../../*/../*/*/../../*/*/*/*

Можно эксплуатировать, например, из PHP:
php -r 'print glob("../../*/../*/*/../../*/*/*/*");'

или Python
python -c 'import glob; glob.glob("../../*/../*/*/../../*/*/*/*")'
и из любого другого языка, обращающегося к этой функции.

Оригинальный отчет об уязвимости тут: securityreason.com/securityalert/7822

Ставим вторую видеокарту в разъём PCI-Express x1

Время на прочтение8 мин
Охват и читатели449K
Если в компьютере имеются 2 видеовыхода и захотелось подключить 3 монитора, то с некоторой вероятностью сделать это просто добавлением второй видеокарты не удастся — не все материнские платы имеют 2 разъёма PCI Express X16, а в многочисленные разъёмы PCI Express X1 видеокарты обычного размера не встанут из-за несовместимости по разъёму. Не все знают, что на самом деле установка длинного разъёма X16 в короткий слот возможна, поэтому не обязательно для 3-го монитора покупать другую и более дорогую материнскую плату. Способам расширения потенциальных возможностей компьютера посвящена эта статья, а также она развеивает сомнения и опасения о том, что что-то при доработке платы напильником не получится. Час работы — и 3-й монитор к Вашей системе будет подключен.
Читать дольше

Балансировка нагрузки с LVS

Время на прочтение6 мин
Охват и читатели108K
Итак, у вас есть нагруженный сервер и вам вдруг захотелось его разгрузить. Вы поставили и залили такой же (такие же), но пользователи упорно ходят на первый. В этом случае конечно же нужно задуматься о балансировке нагрузки.

Читать дальше →

Установка Debian удалённо: PXE + SSH

Время на прочтение2 мин
Охват и читатели20K

Задача


Установить Debian Lenny на сервер, который находится на удалённой площадке.
На площадке уже есть один Linux-based сервер, и есть инженер, который может подключить новый сервер к сети и включить.

Решение


Загрузить образ netinstall по PXE и воспользоваться пакетом network-console для установки, используя ssh.
Кому интересно, смотрим подробности

Браузерный интерпретатор Python

Время на прочтение1 мин
Охват и читатели34K
image

На сайте people.csail.mit.edu появился интерпретатор языка Python. Также там есть несколько примеров. Отладку программы можно производить пошагово.
Правда, существуют некоторые ограничения: там нет модуля импорта или ввода/вывода файлов. Поэтому понадобится это, в основном, для показательных и учебных целей.
Всё это базируется на версии языка Python 2.5

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность