Archive

Archive for July, 2009

BCWipe

July 26th, 2009 No comments
BCWipe repeatedly overwrites special patterns to the files to be destroyed.
In normal mode, 34 patterns are used (of which 8 are random).

WWW: http://www.jetico.com/
$ bcwipe
Copyright 2006 Jetico, Inc.
Usage: bcwipe [OPTIONS]... FILE...
Remove with wiping FILE(s).

  -V       output version information and exit
  -md      U.S. DoD seven pass extended character rotation wiping *
  -mg      (default) is 35 pass wiping by Peter Gutmann           **
  -mt      One pass test mode. First 4 bytes of every 512 bytes block
             will contain block number
  -mz      One pass zero wiping
  -m n     U.S. DoD n pass extended character rotation wiping     *
  -n sec   Wait sec seconds between wiping passes. (NAS mode)     ***
  -s       use system random instead of SHA-1
  -p       use random pattern instead of full random
  -v       explain what is being done
  -r       process the contents directories recursively
  -f       force wiping, never prompt        (use with caution)
  -d       do not delete file(s) after wiping
  -b       wipe contents of block devices    (use with caution)
  -S       wipe file slacks
  -F       wipe free space
  -i       prompt before any removal (y/[n]/a)
             y - yes, n - no(default), a - yes for all
  -I       disable interactive prompt
  -h       display this help and exit

*    - U.S. DoD 5200.28 (Department of Defence)
**   - Secure Deletion of Data from Magnetic and Solid-State Memory

http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html

***  - modern enterprise level storage systems (NAS, disk arrays etc.)
       employ powerful caches. To avoid undesirable caching effects
       use this option to insert delay before file deleting.

Report bugs to support@jetico.com
Tags:

Pipe Viewer (pv)

July 26th, 2009 No comments

Pipe Viewer (pv) is a terminal-based tool for monitoring the progress of data through a pipeline. It can be inserted into any normal pipeline between two processes to give a visual indication of how quickly data is passing through, how long it has taken, how near to completion it is, and an estimate of how long it will be until completion.

Author: Andrew Wood
WWW: http://www.ivarch.com/programs/pv.shtml

PV — это сокращенно от pipeviewer, то есть ни много не мало как просмотрщик пайпов. Про эффективность использования пайпов расказывать не буду, ни для кого это не секрет. Единственное, «но» в работе с ними — это то, что набрав команду и нажав Enter часто не хватает самой малости — знать сколько времени займет ее выполнение. Именно cкорость обработки данных и будет нам показывать pv.

Установка:

% cd /usr/ports/sysutils/pv; % make install clean

Дальше вводная, допустим вы такой же как и я счасливый обладатель каких-нибудь полезных логов и в какой-то момент у вас дошли руки их заархивировать, например так

% cat rt94-171-06 | gzip > rt94-171-06.gz

Есть мысли, сколько времени займет эта операция?

Тоже самое при помощи pv

%pv rt94-171-06 | gzip > rt94-171-06.gz 
128MB 0:00:15 [ 9.1MB/s] [=====>.....................] 18% ETA 0:01:07

Наглядно видно, что через пайп за 15 секунд прошло 128Мб — это 18% от всего объема, операция займет еще минуту и 7 секунд.

Может показаться, что pv это такая замена для cat, но на самом деле ее возможности намного шире. Например, упаковываем весь каталог в сжатый архив

%tar -czf - . | pv > out.tgz
21.9MB 0:00:15 [1.47MB/s] [...<=>.....................]

Уже неплохо, но хочеться большего, чтобы показывалось время окончания работы. Для этого всего лишь надо при помощи ключа -s передать pv размер каталога в байтах

%tar -czf - . | pv -s $(du -sb | grep -o '[0-9]*') > out.tgz
44.3MB 0:00:27 [1.73MB/s] [>..........................] 0% ETA 13:36:22

Можно так же составлять команды из несколько копий pv.

%tar -cf - . | pv -cN tar -s $(du -sb | grep -o '[0-9]*') | gzip | pv -cN gzip > out.tgz
tar: 97.1MB 0:00:08 [12.3MB/s] [>......................] 0% ETA 1:50:26
gzip: 13.1MB 0:00:08 [1.6MB/s] [....<=>................]

Ключ -c нужен, чтобы несколько копий pv не выводили информацию друг поверх друга. Ключ -N дает имя шкале.

Ну и под конец забавный пример с одного англоязычного блога о Линуксе

%pv /dev/urandom > /dev/null
18MB 0:00:05 [ 3,6MB/s] [...<=>............................]

Оригинал статьи: pv — маленькая, но очень полезная утилита

Tags:

Настройка DHCP сервера для APC AP9617

July 24th, 2009 No comments

ap9617

Имеется:

  • APC Smart UPS 1000 XL
  • Плата управления APC AP9617

Задача: необходимо присвоить IP-адрес плате управления с помощью DHCP-сервера. Особенность в том что AP9617 принимает DHCP запросы только если в них установлен определенный флаг. Так же необходимо что бы DHCP сервер выдавал IP-адрес только платам управления.

Решение:

option space APC;
option APC.cookie code 1 = string;
class "APC" {
    match if substring (option vendor-class-identifier,0,3) = "APC";
    vendor-option-space APC;
    option APC.cookie "1APC";
}
 
subnet 192.168.0.0 netmask 255.255.255.0 {
    option subnet-mask 255.255.255.0;
    option routers 192.168.0.1;
    default-lease-time 30;
    max-lease-time 30;
 
    pool {
        range 192.168.0.100 192.168.0.110;
        allow members of "APC";
    }
}
Tags:

VPN с на базе MPD для FreeBSD

July 16th, 2009 No comments

Ставим из портов текущую версию mpd к примеру mpd4-4.0.r1
далее приспупим к созданию конфигурационного файла /usr/local/etc/mpd4/mpd.conf

startup:
#если необходим просмотр активности через веб, то добавляем следующее
   set web port port 5006
   set web ip ip-адрес
   set web user user password
   set web open
default:
   load pptp0
   load pptp1
   load pptp2
   load pptp3

…и так далее, количество зависит от количества одновременных подключений

pptp0:
   new pptp0 pptp0
   load default_pptp
pptp1:
   new pptp1 pptp1
   load default_pptp
pptp2:
   new pptp2 pptp2
   load default_pptp
pptp3:
   new pptp3 pptp3
   load default_pptp
...
 
default_pptp:
   set iface disable on-demand
   set iface enable proxy-arp
   set iface idle 1800
   set iface enable tcpmssfix
   set bundle enable multilink
   set link yes acfcomp protocomp
   set link no pap chap
   set link enable chap
   set link keep-alive 10 60
   set link mtu 1460
   set ipcp yes vjcomp
#Выдаваемый шлюз для всеx ip адресов (можно зарать и другую маску)
   set ipcp ranges 192.168.1.1/32 0.0.0.0/0
#Выдаваемый днс сервер
   set ipcp dns 192.168.1.1
#ip адрес сервера
   set pptp self 192.168.2.1
   set pptp enable incoming
   set pptp disable originate
#Если необходимо шифрование данных Microsoft то добавляем следующее
   set bundle enable compression
   set ccp yes mppc
   set ccp yes mpp-e40
   set ccp yes mpp-e128
   set ccp yes mpp-stateless

на этом можно закончить писать в файл и перейти к писанию mpd.links

pptp0:
   set link type pptp
pptp1:
   set link type pptp
pptp2:
   set link type pptp
pptp3:
   set link type pptp
...

на этом можно закончить писать в файл и перейти к писанию mpd.secret где содержатся логины и пароли

joe   "foobar"   192.168.1.1
bob   "foo"   192.168.1.10
sal   "yipee"   192.168.1.254

на этом закончим конфигурить mpd и изменим /etc/rc.conf добавляем в него

mpd_enable="YES"
mpd_flags="-b"

запускаем /usr/local/etc/rc.d/mpd4.sh start

Оригинал статьи: VPN с на базе MPD для FreeBSD

Tags: , ,

Map

July 15th, 2009 No comments

Небольшая иллюстрация для истории: мониторинг домашней сети.

map

Tags:

Настройка Jail в FreeBSD с помощью ezjail

July 14th, 2009 No comments

Перевод: Сгибнев Михаил
Оригинал: Setup FreeBSD Jail With ezjail

Зададимся вопросом – как, используя сервер на базе FreeBSD, получить несколько независимых окружений, в народе называемых jail? Например, как использовать одну из jail для почтового сервера, а вторую для web-сервера, при этом каждая jail должна иметь собственный IP-адрес?

Каждая jail на FreeBSD имеет собственные файлы, процессы и учетные записи. Находясь внутри, практически невозможно отличить jail от реальной системы. Самым простым способом определения, создания и модифицирования jail является использование среды ezjail.

Внимание! Сетевые демоны, перед использованием jail, должны быть сконфигурированы на использование адреса 127.0.0.1 или на работу с адресом интерфейса. По крайней мере, это необходимо сделать со службами sshd и syslogd.

Вводные данные

  • server.nixcraft.net.in : FreeBSD host server running v7.2 with 202.54.1.2
  • smtpd.nixcraft.net.in : Mail server jail with 202.54.1.3
  • httpd.nixcraft.net.in : Web server jail with 202.54.1.4

Шаг 1: Обновляем корневую систему

Убедитесь в том, что ваша система достаточно актуальна. Руководство по обновлению системы вы можете найти здесь.

Шаг 2: Устанавливаем ezjail

Для установки ezjail выполните нижеприведенные команды. Таким образом, мы получим два скрипта, позволяющие нам более просто управлять жизненным циклом jail.

    # cd /usr/ports/sysutils/ezjail
    # make install clean
    

Расположение файлов ezjail по умолчанию:

  1. /usr/jails/ каталог размещения шаблонов jail.
  2. /usr/jails/flavours/ настройка каждой jail может быть выполнена через flavours.
    Служит для того чтобы, например, добавить значение по умолчанию в файл /etc/resolv.conf или обновить существующий файл /etc/make.conf
  3. /usr/jails/basejail/ базовая система jail, которая монтируется в режиме “read only” и
    является одинаковой для всех jail, что позволяет сэкономить место на жестком диске.
  4. /usr/local/etc/rc.d/ezjail.sh скрипты Stop/Start/Restart
  5. /usr/local/etc/ezjail.conf конфигурационный файл ezjail, который содержит настройки для rc скрипта. Таже данный файл может быть просмотрен
    командой ezjail-admin.
  6. /usr/local/etc/ezjail/ все файлы конфигурации ваших jail хранятся здесь

Шаг 3: Создаем базовый шаблон jail

Для создания или обновления окружения ezjail (aka basejail) из исходных текстов, выполните следующую команду:

    # ezjail-admin update -p -i
    

 Где:

  • -p : Provide ports for jail.
  • -i : не запускать “make world”.

Если у вас нет /usr/src и вы никогда не запускали make world, вы можете установить шаблон с ftp сервера, используя утилиту ezjail-admin:

    # ezjail-admin install
    

 Шаг 4: Создаем SMTPD Mail Server Jail

 Для создания jail smtpd.nixcraft.net.in с адресом 202.54.1.3, располагающейся в каталоге /jails/smtpd.nixcraft.net.in, выполните следующую команду:

    # ezjail-admin create -r /jails/smtpd.nixcraft.net.in smtpd.nixcraft.net.in 202.54.1.3
    

 Обновление файла конфигурации SMTPD Jail

 По умолчанию, файл конфигурации расположен в /usr/local/etc/ezjail/smtpd_nixcraft_net_in. Откройте его и добавьте следующие строки:

    export jail_smtpd_nixcraft_net_in_hostname="smtpd.nixcraft.net.in"
    export jail_smtpd_nixcraft_net_in_ip="202.54.1.3,10.21.51.12"
    

 Шаг 5: Запускаем сервис jail

 Добавим строку запуска в файл /etc/rc.conf:

    # echo 'ezjail_enable="YES"' >> /etc/rc.conf
    

 После чего можем запустить службу:

    # /usr/local/etc/rc.d/ezjail.sh start
    

 Для управления конкретным jail можно воспользоваться следующими командами:

    # /usr/local/etc/rc.d/ezjail.sh {start/stop/restart} jail-name
    # /usr/local/etc/rc.d/ezjail.sh start httpd
    # /usr/local/etc/rc.d/ezjail.sh stop smtpd.nixcraft.net.in
    

 Просмотреть список jail можно командой:

    # jls
    

 Или, для получения дополнительной информации, воспользуйтесь синтаксисом:

    # jls -v
    

 Дя того, чтобы подключиться к jail, воспользуйтесь командой:

    # jexec jid csh
    

 При этом jid можно получить из вывода команды jls. В данном примере мы подключаемся к jail
smtpd.nixcraft.net.in с jid # 2:

    # jexec 2 csh
    

 После подключения к jail мы можем устанавливать необходимое нам ПО, например bash:

    # pkg_add -r -v bash
    

 Или сервер Apache 2.2:

    # cd /usr/ports/www/apache22
    # make install clean
    

 Для того, чтобы подключаться к jail удаленно, необходимо внести следующие изменения в ее файл /etc/rc.conf:

    # echo 'sshd_enable="YES"' >> /etc/rc.conf
    

 Затем откроем файл sshd_config и укажем в нем использовать только IP адрес, назначенный данной jail.
После чего запускаем сервер OpenSSH:

    # /etc/rc.d/sshd start
    # sockstat -4
    

 Обновить FreeBSD Jail можно так:

    # /usr/local/etc/rc.d/ezjail.sh stop
    # ezjail-admin update -p -i
    # /usr/local/etc/rc.d/ezjail.sh start
    

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

    # ezjail-admin update -P
    

 Журнальные файлы jail по умолчанию хранятся в каталоге /var/log.
Для того чтобы, к примеру, просмотреть логи jail smtpd.nixcraft.net.in, воспользуйтесь командой:

    # tail -f jail_smtpd_nixcraft_net_in_console.log
    # grep 'error' jail_smtpd_nixcraft_net_in_console.log
    

 Для добавления httpd jail выполните следующие действия:

    # ezjail-admin create -r /jails/httpd.nixcraft.net.in httpd.nixcraft.net.in 202.54.1.4
    # vi /usr/local/etc/ezjail/httpd_nixcraft_net_in
    # /usr/local/etc/rc.d/ezjail.sh start httpd.nixcraft.net.in
    # jls -v
    # jexec id csh
    

 Для резервного копированя jail рекомендую воспользоваться командами
tar,
rsync и
dump.

 Для сохранения данных на ленту, воспользуйтесь командой:

    # tar -zcvf /dev/sa0 /jails/smtpd.nixcraft.net.in
    

 Для сохранения всех jail, расположенных в каталоге /jails используйте:

    # /sbin/dump -0uLf /dev/sa0 /jails/
    

 А для инкрементных обновлений полученного архива:

    # /sbin/dump -1uLf /dev/sa0 /jails/
    

Используемая литература:

Раздел FreeBSD Jail FreeBSD handbook.

Tags: ,

tmux – консольный оконный менеджер

July 10th, 2009 No comments

Tmux is a terminal multiplexer, it enables a number of terminals to be accessed
and controlled from a single terminal. tmux is intended to be a simple, modern,
BSD-licensed alternative to programs such as GNU screen.

WWW: http://www.sourceforge.net/projects/tmux/

Основные достоинства и отличия Tmux от GNU Screen (взять с opennet.ru)

  • Исходные тексты распространяются в рамках лицензии BSD. Более современная и упрощенная кодовая база (коду screen 20 лет). Предусмотрена возможность подключения расширений от сторонних разработчиков. Поддерживается работа на платформах OpenBSD, FreeBSD, NetBSD, Linux, Mac OS X, Solaris и AIX;
  • Четко формализованная клиент-серверная модель, при которой окна выступают в роли независимых объектов, которые могут сопоставляться и перераспределяться между разными сессиями. При этом поддерживается назначение одного окна нескольким разным клиентам и передача окон от одного клиента другому;
  • Наличие механизма автоматизации выполнение типовых действий, через подключение внешних скриптов;
  • Наличие нескольких независимых буферов обмена. Поддержка выбора раскладки клавиатуры в стиле vi или emacs;
  • Поддержка опции для ограничения размера окна. Более гибкие возможности по разбиению окон на части (поддержка вертикального разделения);
  • Более ясный синтаксис для формирования содержимого строки статуса. Возможность отображения в строке статуса первой строки вывода определенной команды;
  • Более экономное расходование оперативной памяти;
  • Улучшенная поддержка UTF-8.

Установка:

$ cd /usr/ports/misc/tmux
$ make install clean

Запуск новой сессии:

$ tmux

Отключение от сессии:

Ctrl-b + d

Востановление отключенной сессии

$tmux a

или

$tmux attach-session

Режим прокрутки:
включение режима – Ctrl-b + =
прокрутка – стрелками вверх вниз
выключение режима – q

Разделить окно: Ctrl-b + ”
Переключение расположения окон: Ctrl+b + Space
Изменить размер: Ctrl-b + Ctrl+(Up|Down)
Часы: Ctrl+b + t
Переименовать окно: Ctrl-b + ,

Tags:

Используем CURL

July 8th, 2009 No comments

Библиотека CURL (Client URLs) была разработана Даниелом Стенбергом (Daniel Stenberg) в 1998 году как утилита, работающая из командной строки.

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

CURL поддерживает протоколы HTTP, HTTPS, FTP, FTPS, DICT, TELNET, LDAP, FILE, и GOPHER, так же как HTTP-post, HTTP-put, cookies, FTP-закачкe, продолжение прерванной передачи файлов, пароли, номера портов, сертификаты SSL, Kerberos и прокси.

Используя CURL, web-сервер может выступать полноценным клиентом любого основанного на HTTP протоколе сервисе, к примеру: XML-RPC, SOAP, или WebDAV.

В общем виде использование библиотеки сводиться к четырем шагам:

  • Создание ресурса CURL c помощью функции curl_init
  • Установка параметров c помощью функции curl_setopt
  • Выполнение запроса c помощью функции curl_exec
  • Освобождение ресурса CURL c помощью функции curl_close

Простой пример использования CURL:

<?php
  //Иницализация библиотеки curl.
  if ($ch = @curl_init()) 
  {
     //Устанавливаем URL запроса
     @curl_setopt($ch, CURLOPT_URL, 'http://blog.yousoft.ru/');
     //При значении true CURL включает в вывод заголовки.
     @curl_setopt($ch, CURLOPT_HEADER, false);
     //Куда помещать результат выполнения запроса: 
     //  false - в стандартный поток вывода, 
     //  true - в виде возвращаемого значения функции curl_exec.
     @curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     //Максимальное время ожидания в секундах
     @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
     //Установим значение поля User-agent
     @curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot (http://blog.yousoft.ru)');
     //Выполнение запроса
     $data = @curl_exec($ch);
     //Вывести полученные данные
     echo $data;
     //Особождение ресурса
     @curl_close($ch);
  }
?>

Пример использования GET запроса:

<?php
  $ch = curl_init();
   //GET запрос указывается в строке URL
  curl_setopt($ch, CURLOPT_URL, 'http://blog.yousoft.ru/?s=CURL');
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
  curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot (http://blog.yousoft.ru)');
  $data = curl_exec($ch);
  curl_close($ch);
?>

Посылка GET запроса ничем не отличается от получения страницы. Важно заметить, что строка запроса формируется следующим образом: http://blog.yousoft.ru/index.php?name1=value1&name2=value2&name3=value3. Где http://blog.yousoft.ru/index.php – адрес страницы, nameX – название переменной, valueX – значение переменной.

Пример использования POST запроса:

<?php
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'http://blog.yousoft.ru/index.php');
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  //Нужно явно указать, что будет POST запрос
  curl_setopt($ch, CURLOPT_POST, true);
  //Здесь передаются значения переменных
  curl_setopt($ch, CURLOPT_POSTFIELDS, 's=CURL');
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
  curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot (http://blog.yousoft.ru)');
  $data = curl_exec($ch);
  curl_close($ch);
?>

Отправка POST запроса не многим отличается от отправки GET запроса. Все основные шаги остаются такие же. Переменные также задаются парами: name1=value1&name2=value2.

Оригинал статьи:

Tags:

Автоматизация работы с помощью Empty

July 6th, 2009 No comments

empty – run applications under pseudo-terminal (PTY) sessions and replace
TCL/Expect with a simple tool.

WWW: http://empty.sourceforge.net/

- Mikhail Zakharov
zmey20000@yahoo.com

Установка:

$ portinstall empty

Пример скрипта:

#!/bin/sh
empty -f -i in -o out telnet foo.bar.com
empty -w -i out -o in "ogin:" "luser\n"
empty -w -i out -o in "assword:" "TopSecret\n"
empty -s -o in "who am i\n"
empty -s -o in "exit\n"

Ссылки:

Tags:

Автоматизация работы с помощью Expect

July 6th, 2009 No comments

Expect is a program that performs programmed dialogue with other
interactive programs. It is briefly described by its man page, expect(1).

It uses pseudo-tty’s to control the child processes, so it is not affected
by programs that refuse to read from stdin or pipes. (eg: passwd(1) etc).

WWW: http://expect.nist.gov/
FAQ: http://expect.nist.gov/FAQ.html

Установка:

$ portinstall expect

Пример скрипта:

#!/usr/local/bin/expect -f
set host case.net.ru
 
spawn telnet "$host" 25
expect "220 case.net.ru ESMTP Postfix"
send "EHLO localhost\r"
expect "250-case.net.ru"
send "AUTH PLAIN AHRUAMTIzNDU2\r"
expect "235 2.7.0 Authentication successful"
send "QUIT\r"
interact

Ссылки:

Tags: