Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #71, НОЯБРЬ 2004 г.

Консольные этюды

Andrey Matveev

Хакер, номер #071, стр. 071-102-3


[snip]

/usr/src/lib/libc/hash/md5.c:MD5Final(unsigned char digest[MD5_DIGEST_LENGTH], MD5_CTX *ctx)

Фильтруй базар

Если ты часто экспериментируешь с настройками, то наверняка сопровождаешь все свои действия комментариями, чтобы не упустить из виду какую-нибудь важную деталь или просто не забыть, какими были дефолтные значения переменных. Когда из конфига необходимо быстро выцепить нужную информацию, например, чтобы сделать copy'n'paste в окно irc-клиента, обилие ремарок может не только затруднить чтение, но и стать причиной кика или даже бана. Используя регулярные выражения, можно профильтровать потоки по заданным шаблонам и добиться приемлемого результата:

% grep -v '^#' /etc/sysctl.conf

net.inet.ip.forwarding=1

net.inet.esp.enable=0

net.inet.ah.enable=0

net.inet.gre.allow=0

Также можно быстро наказать недоброжелателя, подключившегося к твоему Web-серверу (замечу, что используемая ниже модная утилита tcpdrop впервые появилась в OpenBSD 3.6):

openbsd% netstat -na -f inet | egrep '80|443'

tcp 0 0 *.80 *.* LISTEN

tcp 0 0 *.443 *.* LISTEN

tcp 0 0 192.168.1.1.80 192.168.1.2.1091 ESTABLISHED

openbsd% fstat | egrep 'httpd.*internet.*<--'

www httpd 21421 5* internet stream tcp 0xd600f9e0 192.168.1.1:80 <-- 192.168.1.2:1091

openbsd# tcpdrop 192.168.1.1 80 192.168.1.2 1091

192.168.1.1 80 192.168.1.2 1091: dropped

Это что касается просмотра. А теперь допустим, что тебе нужно изменить одно значение в конфиге прокси-сервера Squid. Конечно, ты можешь открыть в своем любимом редакторе файл squid.conf и до умопомрачения скролить 100 (сто!) килобайт чистого текста в поисках заветной переменной либо произвести серчинг, что называется, на месте, а можешь выполнить одну-единственную команду:

# vi +/httpd_accel_host /etc/squid/squid.conf

Умный vi откроет конфиг и установит курсор на первой строке, которая удовлетворяет заданному условию.

А какая разница?

С какой периодичностью ты обновляешь программное обеспечение? Как только выйдет новая версия? Ok, а ты не задумывался, какие именно изменения были произведены? Тэкс, посмотрим... Исправили ошибку линковки в AIX, научили скрипт configure распознавать IRIX, пофиксили 1,5 варнинга при компиляции на 64-битных архитектурах, исправили для дистрибутива NotUsed GNU/Linux абсолютный путь до директории с заголовочными файлами пятого Кербероса, обновили справочное руководство на вьетнамском языке... А оно нам надо? Вот такие изменения? С другой стороны, в Changelog'е тебе никогда не напишут о добавленной утечке памяти или интеграции бэкдора... Поэтому на ум приходит только один верный способ: вручную отслеживать все изменения, по крайней мере, критически важных программ.

Для начала последовательно распакуем обе версии - используемую и свежескачанную:

% tar zxf stunnel-4.04.tar.gz

% tar zxf stunnel-4.05.tar.gz

Определим, какие файлы были добавлены в новую версию. Терпеть не могу контекстное сравнение, но без него здесь никак.

% diff -r stunnel-4.04 stunnel-4.05 | grep ^Only

Only in stunnel-4.05/doc: stunnel.fr.8

Назад на стр. 071-102-2  Содержание  Вперед на стр. 071-102-4