Показаны сообщения с ярлыком FreeBSD. Показать все сообщения
Показаны сообщения с ярлыком FreeBSD. Показать все сообщения

30 сент. 2009 г.

FreeBSD. Блокировка пользователя

Заблокировать пользователя во FreeBSD можно следующим способом:
vipw
Поставить любой символ, например звездочку, во втором поле - перед хешем пароля.

8 сент. 2009 г.

Linux, FreeBSD. Установка MRTG

На нескольких машинах уже поставил MRG - удобный набор Perl-скриптов для построения графиков по некоторым данным. Данные могут быть любыми: входящий/исходящий траффик сетевого интерфейса, процент загрузки процессора, количество пользователей в системе, объемы данных на дисках и все, что только придет в голову. Главное, чтобы эти данные выводились четырьмя числами - значения входящего и исходящего траффика (не сетевого, а траффика данных в данном потоке) и uptime контролируемой системы. Данные преобразуются в настраиваемые графики из двух потоков (входящий и исходящий). Данные отображаются в разрезе суток, недели, месяца и года.
В общем, про MRTG написано много. Но я при его установке столкнулся с тремя сложностями.

1. Установка в Slackware Linux. Сборка пакета на всех машинах оканчивалась сообщением об отсутствии JPG-библиотек. Бился, пока не нашел описание проблемы... в документации :). Не, мануал по инсталляции я читал перед установкой. Но этот момент пропустил. Этой ошибки не возникает, если собирать пакет и необходимые библиотеки именно так, как указано в документации. То есть библиотеки собираются, но не инсталлируются. Конечное дефолтное конфигурирование происходит командой

./configure --prefix=/usr/local/mrtg-2 \
--with-gd=/usr/local/src/gd \
--with-z=/usr/local/src/zlib \
--with-png=/usr/local/src/libpng

, если, конечно, не нужны другие опции...

2. Установка во FreeBSD. Там всё решилось установкой из портов.

3. Ну, и регулярно возникала ошибка при запуске indexmaker (построитель index.html для начальной страницы просмотра графиков), говорящая о невозможности найти модуль Pod, которая разрешилась удалением соответствующей директории из etc/mrtg-2/ и доустановкой оного пакета по примеру этой заметки.

Здесь лежит набор скриптов, используемых в используемой мною конфигурации, которая лежит в том же архиве.

4 сент. 2009 г.

FreeBSD. MRTG. Загрузка сетевого интерфейса

После долгих мучений настроил таки (вроде) отображение загрузки сетевых интерфейсов. Прописал следующий скрипт для съема статистики:

#!/bin/sh
/usr/bin/netstat -inb -I $1 > /tmp/nettraff.tmp
sleep 1
/usr/bin/netstat -inb -I $1 >> /tmp/nettraff.tmp
cat /tmp/nettraff.tmp | /usr/bin/awk '\
function abs(x){return x<0 ? -x : x}
NR==3 {in_beg = $7}\
NR==3 {out_beg = $10}\
NR==6 {in_end = $7}\
NR==6 {out_end = $10}\
END { print abs(in_beg-in_end) "\n" abs(out_beg-out_end) "\n0\n0" }'


Здесь 2 раза с перерывом в 1 секунду снимаются показания входящего и исходящего трафика на указанном интерфейсе и выводятся модули их разницы.

3 сент. 2009 г.

FreeBSD. MRTG. Загрузка процессора

Обнаружил, что на одном из серверов под FreeBSD MRTG некорректно показывает информацию о загрузке процессора. Выяснил, что виной тому неправильный скрипт снятия данных. Вместо него поставил строку:
/usr/sbin/iostat -w 1 -c 2 -t proc | tail +4 | awk '{print $3"\n"$5""\n0\n0}'

Должно теперь показывать корректно - первый выводимый параметр загрузка процессами пользователя (us), второй - системы (sys).

upd: 2009-09-04
P.S. Путь к утилите iostat указывать обязательно, иначе при запуске из крона она не будет найдена и, соответственно, данные не выведутся.

26 авг. 2009 г.

Простейший POP3/POP3S-сервер на базе popa3d и stunnel

Взято из блога SergeySL
Описание пошаговой настройки POP3-сервера. Статья ориентирована на FreeBSD, но с некоторыми изменениями может быть использована и для Linux.


Постановка задачи

Необходимо быстро и без лишних заморочек настроить не требовательный к ресурсам и простой в администрировании POP3-сервер для обслуживания среднего офиса (до 50-100 клиентов) с возможностью безопасного использования из-за пределов корпоративной сети (другими словами, с поддержкой протокола POP3S). Описанный в данной статье POP3/POP3S-сервер более двух лет работал совместно с почтовой системой среднего офиса на базе Postfix, однако его можно использовать в составе любых других почтовых систем с небольшим количеством клиентов. При всей своей простоте сервер достаточно надежен и стабилен.

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

Имеется сервер с FreeBSD, находящийся на входе подсети центрального офиса. Главным звеном описанной конфигурации является POP3-сервер popa3d, использующий базу данных паролей операционной системы и запускаемый суперсервером inetd. Шифрование трафика обеспечивает утилита stunnel, использующая средства OpenSSL и самоподписной доверенный сертификат X.509. Все перечисленное программное обеспечение будет устанавливаться из портов, поэтому я настоятельно рекомендую Вам обновить их перед выполнением действий, описанных ниже (я использовал FreeBSD 4.10 и последние версии портов для нее). Ссылки на источники информации будут приводиться применительно к конкретным разделам статьи.

Установка и настройка popa3d

Установку popa3d необходимо выполнить из портов:
1. cd /usr/ports/mail/popa3d
2. make install

Popa3d не требует наличие каких-либо файлов конфигурации. Для того, чтобы сервер запускался при обращении клиента, необходимо добавить в файл конфигурации суперсервера inetd /etc/inetd.conf строку:
1. pop3 stream tcp nowait root /usr/local/libexec/popa3d popa3d

Popa3d поддерживает механизм TCP Wrappers, поэтому в файл /etc/hosts.allow перед правилом, запрещающим доступ ко всем службам со всех хостов, необходимо добавить правило, разрешающее доступ к POP3-серверу с любых хостов:
1. popa3d : ALL : allow
2. ALL : ALL : deny

Это не опечатка, именно с любых. Если разрешить доступ только с хостов, входящих в состав доверенных сетей, POP3S-сервер, реализованный на базе stunnel, не будет работать. Т.к. протокол POP3 не относится к числу защищенных, Ваш брандмауэр не должен разрешать установку входящих TCP-соединений c адресом интерфейса, подключенного к Интернет, портом 110, поэтому добавьте соответствующие правила, если они отсутствуют. На этом настройка popa3d заканчивается. Остается перезапустить суперсервер inetd командой killall -HUP inetd. О том, как проверить работоспособность POP3-сервера, подключившись к 110 порту локального хоста с помощью клиента telnet, можно прочитать в статье Создаем почтовую систему среднего и малого офиса на основе FreeBSD Postfix + dr.web + popa3d + pflogsumm.

Установка и настройка stunnel

Установку stunnel необходимо выполнить из портов:
1. cd /usr/ports/security/stunnel
2. make install

Далее необходимо сгенерировать самоподписной доверенный сертификат X.509. Данная процедура описана в статье Почтовая система среднего офиса на базе Postfix (в моем случае файл, содержащий сертификат, называется popa3d.pem). Далее необходимо создать в папке /usr/local/etc/stunnel файл конфигурации popa3d.conf:
1. cd /usr/local/etc/stunnel
2. touch popa3d.conf

Содержимое файла popa3d.conf имеет следующий вид:
1. cert = /usr/local/etc/stunnel/popa3d.pem
2. exec = /usr/local/libexec/popa3d
3. execargs = popa3d
4. pid = /var/run/popa3d-stunnel.pid

Указанные параметры имеют следующие значения: cert – местонахождение самоподписного доверенного сертификата, exec – местонахождение запускаемой программы, execargs – аргументы запускаемой программы, pid – местонахождение файла, содержащего идентификатор процесса stunnel. Для того, чтобы сервер запускался при обращении клиента, необходимо добавить в файл конфигурации суперсервера inetd /etc/inetd.conf cтроку:
1. pop3s stream tcp nowait root /usr/local/sbin/stunnel stunnel /usr/local/etc/stunnel/popa3d.conf

Stunnel поддерживает механизм TCP Wrappers, поэтому в файл /etc/hosts.allow перед правилом, запрещающим доступ ко всем службам со всех хостов, необходимо добавить правило, разрешающее доступ к POP3S-серверу с любых хостов:
1. stunnel : ALL : allow
2. ALL : ALL : deny

Не забудьте, что Ваш брандмауэр должен разрешать прохождение TCP-трафика на адреса нужных интерфейсов сервера порт 995, поэтому добавьте соответствующие правила, если они отсутствуют. На этом настройка POP3S-сервера заканчивается. Остается перезапустить суперсервер inetd командой killall -HUP inetd.

Заключение

Выполнив действия, описанные в статье, Вы получите полнофункциональный POP3/POP3S-сервер, который, скорее всего, удовлетворит большую часть Ваших потребностей. Я не стал экспериментировать с запуском popa3d в режиме демона, т.к. даже в описанной конфигурации не было каких-либо тормозов и заметных нагрузок на процессор слабенького сервера.

3 авг. 2009 г.

Linux, FreeBSD, Мониторинг сервера с помощью MRTG.


Возникла задача мониторинга загрузки нескольких серверов. Решили использовать пакет MRTG для построения графиков. Платформы серверов - Linux Slackware и FreeBSD.
С Linux-ом всё прошло гладко. Скачал, собрал, прописал в Apache и cron-е. В инете нашел пару скриптов для получения данных по загрузке памяти, процессора и сетевых интерфейсов. Благо, информации по этой системе много. Могу порекомендовать соответствующий раздел блога Bog BOS, ну и, естественно, документацию, идущую с пакетом.
С FreeBSD было сложнее. Из исходников пакет собираться не хотел - постоянно ругался на недостающие библиотеки. Пришлось установить его из портов - встал нормально. Затем оказалось, что скрипты для Linux не хотят работать во FreeBSD. Для получения информации по памяти пришлось доставить программку freecolor (из портов же). Использовал ее следующим образом:

#!/bin/sh
freecolor -b -o | /usr/bin/awk '\
NR==2 {ramUsed = $3 }\
NR==3 {swapUsed = $3 }\
END { print swapUsed "\n" ramUsed "\n0\n0" }'


Для информации по CPU использовал такой скрипт на Perl:

#!/usr/bin/perl
$cpu_orig=`/usr/local/bin/bsdsar -u > /tmp/bsdsar.tmp`;
$cpu_str=`/usr/bin/tail -1 /tmp/bsdsar.tmp`;
$val=(split(' ',$cpu_str))[1];
$val2=(split(' ',$cpu_str))[2];
$val=int($val);
$val2=int($val2);
print "$val\n";
print "$val2\n";
print "0\n";
print "0\n";


С загрузкой сетевых интерфейсов пришлось возиться с установкой snmpd. Из портов его поставить не получилось. Решил ставить из исходников. Но наткнулся на статейку с кучей рекламы (видать дорвей). В ней кратко описано поднятие штатного snmp-демона bsnmpd. С его помощью и решился вопрос. mrtg-conf приобрел следующий вид:

### Interface 1 >> Descr: 'rl0' | Name: 'rl0' | Ip: '77.120.101.132' | Eth: ###


Target[LAN0]: 1:public@127.0.0.1:
SetEnv[LAN0]: MRTG_INT_IP="xxx.xxx.xxx.xxx" MRTG_INT_DESCR="rl0"
MaxBytes[LAN0]: 12500000
Title[LAN0]: Traffic Analysis for LAN0
PageTop[LAN0]: <h1>Traffic Analysis for LAN-0 -- xxx.xxx.xxx.xxx (hostname)</h1>
Options[LAN0]: gauge, nopercent, growright

### Interface 2 >> Descr: 'rl1' | Name: 'rl1' | Ip: 'xxx.xxx.xxx.xxx'###

Target[LAN1]: 2:public@127.0.0.1:
SetEnv[LAN1]: MRTG_INT_IP="xxx.xxx.xxx.xxx" MRTG_INT_DESCR="rl1"
MaxBytes[LAN1]: 12500000
Title[LAN1]: Traffic Analysis for LAN1 -- xxx.xxx.xxx.xxx (gorod13.com)
PageTop[LAN1]: <h1>Traffic Analysis for LAN1 -- xxx.xxx.xxx.xxx (hostname)</h1>
Options[LAN1]: gauge, nopercent, growright