пятница, 12 февраля 2010 г.

Использование CBQ для шейпинга трафика в Linux debian(ubuntu)


Использование CBQ для шейпинга трафика в Linux debian(ubuntu).

Использование CBQ для шейпинга трафика в Linux debian(ubuntu).
CBQ – представляют собой систему ограничения трафика по скорости. Это один из наиболее распространённого варианта шейперов. К сожалению, он может ограничивать только исходящий трафик с компьютера, на котором установлен.
Установка

#cd /usr/src/
#wget http://surfnet.dl.sourceforge.net/project/cbqinit/cbqinit/0.7.3/cbq.init-v0.7.3

Переименуйте этот скрипт в cbq.init для удобства и поместите в каталог /etc/init.d/
Настройка
В каталоге /etc/sysconfig создайте каталог /cbq
В нём будем хранить конфиг файлы шейперов.
Создавать файлы нужно с именем по шаблону cbq-<номер>.<имя_шейпера>
например cbq-100.test
Добавим туда следующие строки:

DEVICE=eth0,1000Mbit ## определение интерфейса в таком порядке: имя интерфейса, макс скорость пропускаемая через интерфейс.
RATE=256Kbit
# скорость шейпера
WEIGHT=25Kbit
# 10% от скорости шейпера (вес)
PRIO=1
# приоритет вообще можно не ставить этот параметр
LEAF=sfq
# алгоритм
RULE=10.9.15.1 # правило содержащее в себе айпи адрес трафик к которому будет шейпериться

Также можно указать адрес или порт но источка (src )
выглядит это так :
выглядит это так :
RULE=10.9.15.2:80,


То есть если адрес источника 10.9.15.2 и порт 80 то задействовать шейпиг.
Также можно указать в качестве правила сеть айпи адресов например 10.9.15.0/24 тоесть шейпинг будет действовать на всю подсеть адресов.
Если же вы хотите ограничить скорость скачивания допустим с вашего ресурса для всего мира можно использовать запись правила в таком виде:
RULE=0.0.0.0/0
Запуск шейпера очень прост /etc/ini.t/cbq.init start остановка и перезапуск соотвецвтенно stop restart.

Установка и настройка vnc4server в Linux. Поднимаем X-ы на удалённом сервере

Установка и настройка vnc4server в Linux. Поднимаем X-ы на удалённом сервере.

Часто существует потребность установки на удалённом сервере под управлением linux графической оболочки gnom или kde. Я предлагаю рассмотреть реализацию данной задачи с помощью vnc4server.

Установка производилась в linux debian lenny.
#apt-get install vnc4server
#apt-get install xorg
Также установим KDE3.
#apt-get install kde-core
После установки перейдём в домашний каталог вашего пользователя в моё случае это root:
# cd /root/
Появилась папка .vnc
и в ней конфиг файл xstartup
если нет то создаём его
#touch xstartup
(файл должен иметь права на выполнение)
#!/bin/sh
# раскомментируйте (если файл существовал и он закомментированы ) эти строки для запуска графической оболочки
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80×24+10+10 -ls -title «$VNCDESKTOP Desktop» &
twm &
Установим пароль для входа вашему пользователю.
#vncpassword
и ввеёдём пароль 2 раза.

Далее переходим в каталог /etc/X11/xinitrc и правим файл xinitrc
#!/bin/bash
# $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $
# /etc/X11/xinit/xinitrc
#
# global xinitrc file, used by all X sessions started by xinit (startx)
# invoke global X session script
#. /etc/X11/Xsession # закоментировать
startkde #строка для запуска kde автоматически
теперь запускаем наш vnc4server
#vnc4server
New ’178-59-12-55:1 (root)’ desktop is 178-59-12-55:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/78-159-112-55:1.log
Теперь можно соединятся к нашему удалённому рабочему столу по адресу 178.59.12.55:5901, введя пароль вы попадаете уже непосредственно в kde.
Если после соединения вы не увидили графическю оболочку а только консоль введите startkde.
Заметим что нормер после знака «:» в строке New ’178-59-12-55:1 соответствует последней цифре порта 5901. При повторном перезапуске если не очищать каталог /tmp/ от файлов типа .X1-lock .X2-lock то порт будет меняться по возрастанию последней цифры порта.
Для просмотра удалённого рабочего стола пользователям linux и windows стоит установить утилиту vncviewer.

Нокия соединяет людей

Нокия соединяет людей

Вот приобрёл телефон Nokia 6300.

Телефон неплохой и стоит внимания. давно хотел побаловать себя подобной вещью но всё не решался выбрать, что же лучше КПК или же обычный моноблочный телефон? Естественно речь не шла о выборе бренда я никогда и не задумывался ни о чём другом кромен Nokia. Конечно же сразу стоял вопрос цены, сколько я готов потратить на телефон? Я поставил себе грань в 2000 грн и не более. Тратить суму выше этой я не хотел да и не видел нужды вкладывать деньги в предмет обихода и не хотелось делать культа из обычной трубы. И так я пришол к выводу что КПК это для людей отверженных от стационарной работы и компьютера, которые катаются по городу или же путешествуют не имея доступа к постоянному источнику интернета. Я не отношусь к данному типу людей и тогда мой взор привлекли моноблоки слайдеры и раскладушки, о кпк или воспетом айфоне я уже не думал. Тут было сложнее, как определится что удобнее и лучше? Сделал вывод исходя от обратного: раскладушка – хлопалка и вообще женский тип телефонов, слайдер – да неплохо смотрится и удобно но друзья отсоветовали да и приличный слайдер вылазил за установленный финансовый барьер. Остался вариант с моноблоком ну а тут уже я влюбился в модель nokia 6300. Почему?

Впечатлило то что он стальной, то есть у него стальной корпус и он качественно сделан.(Краш тест проводился кидали в кирпичную стену и всё впорядке). У него большой экранчик и в комплекте шла флешка на 512 метров что немаловажно. Минусы конечно же есть но меня они мало волновали, например нет wi-fi и ик порта.

Смотрим фотку и характеристики http://asad.in.ua

Вешаем свою программу (службу) на порт с помощью xinetd


Вешаем свою программу (службу) на порт с помощью xinetd

Вешаем свою программу (службу) на порт с помощью xinetd
Для этого нам потребуется демон xinetd если его у вас нет то нужно поставить:
#apt-get install xinetd

Для реализации данной задачи создадим файл с любым именем например myprog
в каталог /etc/xinetd.d

service asad ##Название сервиса
{ ## Разрешить использование
disable = no #задаём тип сокета
socket_type = stream
type = UNLISTED
#сервис не указан в стандартном (системном) файле (например /etc/rpc для RPC служб, или #/etc/services для не RPC сервисов).
port = 2329
# 3задаём порт на котором будет слушать подключения ваш сервис
protocol = tcp
#указываем протокол tcp
wait = no
# Этот атрибут определяет является ли сервис single-threaded или multi-threaded. Если его #значение yes сервис является single-threaded; это означает что xinetd запускает сервер и #затем перестает обрабатывать запросы для этого сервера пока запущенный сервер не #завершит работу. Если значение атрибута no, то значит сервис является multi-threaded и #xinetd продолжит обрабатывать вновь приходящие запросы.
#
user = root #пользовател которым выполняется программа
group = tty
#определяет gid под которым будет выполняться процесс. Имя группы должно существовать #в файле /etc/group. Если группа не указана, будет использована к которой принадлежит user #(из /etc/passwd). Этот параметр не действует если эффективный uid xinetd не соответствует #uid супер-пользователя.
#
server = /home/asad/check #Путь к программе сервису который будет получать строку посланную на данный порт
}
Далее перейдём не подсредственно к програме слушателю /home/asad/check
У меня она реализована так
#!/bin/sh
read -r cmd; # получать строку
………
код программы обрабатывающей строку.

Вешаем свою программу (службу) на порт с помощью xinetd

Вешаем свою программу (службу) на порт с помощью xinetd

Вешаем свою программу (службу) на порт с помощью xinetd

Для этого нам потребуется демон xinetd если его у вас нет то нужно поставить:

#apt-get install xinetd


Для реализации данной задачи создадим файл с любым именем например myprog
в каталог /etc/xinetd.d

service asad ##Название сервиса

{ ## Разрешить использование
disable = no #задаём тип сокета
socket_type = stream

type = UNLISTED
#сервис не указан в стандартном (системном) файле (например /etc/rpc для RPC служб, или #/etc/services для не RPC сервисов).
port = 2329
# 3задаём порт на котором будет слушать подключения ваш сервис
protocol = tcp
#указываем протокол tcp

wait = no

# Этот атрибут определяет является ли сервис single-threaded или multi-threaded. Если его #значение yes сервис является single-threaded; это означает что xinetd запускает сервер и #затем перестает обрабатывать запросы для этого сервера пока запущенный сервер не #завершит работу. Если значение атрибута no, то значит сервис является multi-threaded и #xinetd продолжит обрабатывать вновь приходящие запросы.
#
Продолжение на asad.in.ua

Iptables работа с портами. Проброс портов DNAT/SNAT


Iptables работа с портами. Проброс портов DNAT/SNAT

Iptables работа с портами. Проброс портов DNAT/SNAT
Многие часто сталкиваются с проблемой когда есть локальная компьютерная сеть и нужно что бы пакеты из вне попадали вовнутрь и из внутренней сети наружу по определённым портам.
Далее несколько правил.
Разрешить конкретному айпи доступ по порту в интернет
iptables -I FORWARD -s 192.168.0.2 -p tcp –dport 25 -j ACCEPT
Поясненя
-I – вставка правила в начало цепочки
FORWARD – цепочка через которую ходят проходящие пакеты
-s – адрес источника (компьютера который обращается по данному порту в интернет)
-p tcp — тип протокола
–dport – указать порт назначения
25 номер порта
-j – выполнить действие с правилом
ACCEPT разрешить
Что бы запретить пакетам ходить на удалённый порт
iptables -I FORWARD -s 192.168.0.2 -p tcp –dport 25 -j DROP
Что бы из вне запретить или разрешить ходить пакетам на компьютер во внутренней сети на определённый порт.
iptables -I FORWARD -d 192.168.0.2 -p tcp –dport 25 -j DROP(ACCEPT)
Кроме FORWARD  в таблице filter есть ещё цепочки OUTPUT и INPUT
OUTPUT  — для фильтрации исходящих пакетов
INPUT — для фильтрации входящих пакетов

Но если дело касается только компьютеров во внутренней сети и выхода в интернет то лучше использовать только FORWARD
Как организовать проброс портов
Представим схему
internet—–IP1(маршрутизатор)–IP2(локальный компьютер)
Если нужно что бы по обращению к конкретному порту вашего сервера из вне во внутреннюю сеть пакет поступал на конкретный айпи, то делается это с помощью NAT
iptables -t nat -A PREROUTING -p tcp –dport 2106 -d IP1 -j DNAT –to-destination IP2
iptables -t nat -A POSTROUTING -p tcp –dport 2106 -d IP2 -j SNAT –to IP1
1 правило  – пробрасывает пакет по порту во внутреннею сеть на конкретный айпи
-t nat указать таблицу nat
-A – добавить правила в конец цепочки
PREROUTING –указать цепочку
-p tcp –dport 2106  пример указывания порта на который будет обращение к серверу
-d IP1  – ваш внешний айпи
-j DNAT   транслировать адреса во внутреннюю сеть
–to-destination — указывать куда
2 правило — возврат пакета отправителю
-t nat указать таблицу nat
-A – добавить правила в конец цепочки
PREROUTING –указать цепочку
-p tcp –dport 2106  пример указывания порта на который будет обращение к серверу
-d IP2 — адрес во внутренней сети
-j SNAT –to IP1 транслировать адрес обратно вашим внешним айпи для возврата пакета назад отправителю
Таким образом пакет попадая на ваш маршрутизатор на определённый порт попадает на порт локального компьютера и имеет возможность вернуться назад.

Настройка интернет шлюза (ОС Linux)

Настройка интернет шлюза (ОС Linux)

Интернет шлюзы подобного рода часто становятся очень востребоваными для раздачи интернета малым офисам или предприятиям. Рассмотрим один из простых вариантов ришения этой задачи который позволит давать доступ в интернет небольшим группам компьютеров через интернет шлюз.
Как видно на рисунке 1 имеем простейшую схему подключения сети компьютеров в интернет. Настройка данного шлюза будет проводится на основе ОС Linux ubunu (debian).
Для начала определим то что у шлюза будет 2 сетевіх интерфейса:
Eth0 — интерфейс с внешним адресом 194.15.15.1 который имеет досту в интернет
Eth1 — интерфейс с локальным адресом 192.168.1.1 который для компьютеров в локальной сети в дальшейшем будет адресом шлюза (gateway)

Приступим к настройке шлюза.
Для начал нужно активировать опцию разрешающую маршрутизации на нашем интернет шлюзе, для этого находим файл /etc/sysctl.conf и разкаментируем строку
net.ipv4.ip_forward=1

Теперь нужно настроить сетевые интерфейсы шлюза.
Находим файл настроек сети /etc/network/interfaces
и пишем туда соотвецтвующие настройки нашим интерфейсам.

iface eth0 inet static
## описание интерфейса и типа static значит что адрес ## задан статически
address 194.15.15.1 ## определение сетевого адреса интерфейса
netmask 255.255.255.0 ## определение маски эквивалент /24
gateway 194.15.15.253
## определение адреса шлюза в данном случае адрес ## выданный провайдером для выхода в интернет

iface eth1 inet static
## описание интерфейса и типа static значит что адрес ## задан статически
address 192.168.1.1
## определение сетевого адреса интерфейса
netmask 255.255.255.0
## определение маски эквивалент /24
auto eth0 eth1 ## означает автоматически при запуске компьютера ## активировать интерфейсы

Теперь нам нужно активировать NAT на шлюзе для того что бы пакеты проходящие через шлюз дальше в интернет имели адрес шлюза 194,15,15,1 для нормальной работы в интернете. Для этого используем фаервол iptables


Продолжение ....

Настройка DNS сервера


Настройка DNS сервера

DNS – Domain Name System — система доменных имён
распределённая система (распределённая база данных), способная по запросу, содержащему доменное имя хоста (компьютера или другого сетевого устройства), сообщить IP адрес или (в зависимости от запроса) другую информацию. DNS работает в сетях TCP/IP. Как частный случай, DNS может хранить и обрабатывать и обратные запросы, определения имени хоста по его IP адресу – IP адрес по определённому правилу преобразуется в доменное имя, и посылается запрос на информацию типа «PTR».
Установка

#apt-get install bind9

Настройка
Автоматически после установки все конфиг файлы распологаются в /etc/bind
Начнём с файла /etc/bind/named.conf

include «/etc/bind/named.conf.options»;
// подгрузить файл в котором будут описаны опции
// далее описываются зоны
//в этой зоне описана база данных root тоесть сервера которые хранят доменные имена в зоне «.»
zone «.» {
type hint;
file «/etc/bind/db.root»;
};
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
// зона локальных имён
zone «localhost» {
type master;
file «/etc/bind/db.local»;
};
// обратная зона локальных имён
zone «127.in-addr.arpa» {
type master;
file «/etc/bind/db.127″;
};
//обратная бродкаст зона
zone «0.in-addr.arpa» {
type master;
file «/etc/bind/db.0″;
};
zone «255.in-addr.arpa» {
type master;
file «/etc/bind/db.255″;
};

В нём находятся глобальные настройки
options {
directory «/var/cache/bind»;
// If there is a firewall between you and nameservers you want
// to talk to, you might need to uncomment the query-source
// directive below. Previous versions of BIND always asked
// questions using port 53, but BIND 8.1 and later use an unprivileged
// port by default.
// query-source address * port 53;
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0′s placeholder.
// forwarders { адрес соседнего DNS (возможно slave или master сервера) или несколько адресов с которыми разрешено общятся для обмена зонами и другой информацией
// 0.0.0.0;
// };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Вот впринцпе и всё такие стандартные настройки позволят вашему серверу нормально функционировать. Теперь рассмотрим пример добавления доменного имени в прямую и обратную зоны.

В файл /etc/bind/named.conf добавляем запись

zone «myhost.net.ua» {
type master;
file «masters/db.myhost.net.ua»;
allow-transfer { // опишем тут адреса DNS серверов которым разрешить загрузку зоны
217.20.160.161;
217.20.160.162;
194.19.14.154;
194.19.15.254;
};
};
// опишем обратную зону
zone «14.19.194.IN-ADDR.ARPA» {
type master;
file «masters/db.194.19.14″;
allow-transfer {
217.20.160.161;
217.20.160.162;
194.19.14.3;
194.19.14.154;
194.19.15.254;
};
};

Теперь нужно создать файлы зон

Создадим файл прямой зоны как указано в конфигурации db.myhost.net.ua
$TTL 86400
;
$ORIGIN net.ua.
myhost IN SOA ns.myhost.net.ua. hostmaster.myhost.net.ua. (
2009041000 ; Serial (yymmddxx)
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Time to Live
IN A 194.19.14.152
; NS for myhost.net.ua.
IN NS ns.myhost.net.ua.
; MX for myhost.net.ua.
IN MX 10 relay.myhost.net.ua.
$ORIGIN myhost.net.ua.
relay IN A 194.19.14.1

Подробней о записях:

Запись A (address record) или запись адреса связывает имя хоста с адресом IP. Например, запрос A-записи на имя referrals.icann.org вернет его IP адрес — 192.0.34.164
Запись AAAA (IPv6 address record) связывает имя хоста с адресом протокола IPv6. Например, запрос AAAA-записи на имя K.ROOT-SERVERS.NET вернет его IPv6 адрес — 2001:7fd::1
Запись CNAME (canonical name record) или каноническая запись имени (псевдоним) используется для перенаправления на другое имя
Запись MX (mail exchange) или почтовый обменник указывает сервер(ы) обмена почтой для данного домена.
Запись NS (name server) указывает на DNS-сервер для данного домена.
Запись SOA (Start of Authority) или начальная запись зоны указывает, на каком сервере хранится эталонная информация о данном домене, содержит контактную информацию лица, ответственного за данную зону, тайминги кеширования зонной информации и взаимодействия DNS-серверов.

Теперь создадим файл обратной зоны db.194.19.14

$TTL 86400
;
14.19.194.IN-ADDR.ARPA. IN SOA ns.myhost.net.ua. hostmaster.myhost.net.ua. (
2009050700; Serial
28800 ; Refresh
7200 ; Retry
1209600 ; Expire
86400) ; Time to Live
IN NS ns.myhost.net.ua.
$ORIGIN 14.19.194.IN-ADDR.ARPA.
; hosts from main backbone
1 IN PTR relay.myhost.net.ua.

О записях обратной зоны

Запись PTR (pointer) или запись указателя связывает IP хоста с его каноническим именем. Запрос в домене in-addr.arpa на IP хоста в reverse форме вернёт имя (FQDN) данного хоста (см. Обратный DNS-запрос). Например, (на момент написания), для IP адреса 192.0.34.164: запрос записи PTR 164.34.0.192.in-addr.arpa вернет его каноническое имя referrals.icann.org. В целях уменьшения объёма нежелательной корреспонденции (спама) многие серверы-получатели электронной почты могут проверять наличие PTR записи для хоста, с которого происходит отправка. В этом случае PTR запись для IP адреса должна соответствовать имени отправляющего почтового сервера, которым он представляется в процессе SMTP сессии.

Вот и всё теперь можем перезапустить сервер и опробовать работу DNS сервера

#/etc/init.d/bind9 reload
#host -t A relay.myhost.net.ua
relay.myhost.net.ua has address 194.19.14.1
# dig @127.0.0.1 relay.myhost.net.ua
; <<>> DiG 9.4.2-P2 <<>> @127.0.0.1 relay.myhost.net.ua
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- 1312="" id:="" noerror="" opcode:="" p="" query="" status:=""> ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3
;; QUESTION SECTION:
;relay.myhost.net.ua. IN A
;; ANSWER SECTION:
relay.myhost.net.ua. 86400 IN A 194.19.14.1
;; AUTHORITY SECTION:
myhost.net.ua. 86400 IN NS ns.myhost.net.ua.
;; ADDITIONAL SECTION:
ns.myhost.net.ua. 86400 IN A 194.19.14.1 52
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue May 12 11:11:33 2009
;; MSG SIZE rcvd: 158
Хочу заметить то что для ведения ведения зон нужно 2 DNS сервера master как пример описанный выше и slave сервер.
Статью буду изменять в соответствии с вашими пожеланиями и замечаниями.

SSL + apache , Настройка ssl шифрования для веб страниц


SSL + apache , Настройка ssl шифрования для веб страниц

Настройка ssl шифрования для веб страниц apache+modssl

Устанавилваем apache + modssl и openssl

#apt-get install openssl
#apt-get install appache2
Далие нужно активировать ssl модуль :

Создаём ссылки

/etc/apache2/mods-available/ssl.conf в /etc/apache2/mods-enabled
/etc/apache2/mods-available/ssl.load в /etc/apache2/mods-enabled
теперь нужно создать ключи
Создаём ключ командой
#openssl req -newkey rsa:1024 -nodes -keyout server.key
#openssl rsa -in server.key -out server.pem
Заполняем все поля которые попросит система
выполняем следующее
#openssl req -new -key server.key -out server.csr
Заполняем поля повтороно
#openssl x509 -req -days 60 -in server.csr -signkey server.key -out server.crt
получаем приватный ключ на 60 дней
Теперь нужно создать конфигурацию для apache — тоесть виртуальный хост

правим /etc/apache2/apache2.conf

ServerAdmin webmaster@domain.com
DocumentRoot /var/www/apache2/share/htdocs
ServerName www.domain.com
ScriptAlias /cgi-bin/ /var/www/apache2/share/htdocs/cgi-bin/
SSLEngine on
SSLCertificateFile /var/www/apache2/server.crt # путь к ключу очень важно!!
SSLCertificateKeyFile /var/www/apache2/server.pem #путь к ключу
SetEnvIf User-Agent «.*MSIE.*» nokeepalive ssl-unclean-shutdown
CustomLog /var/www/apache2/var/log/ssl_request_log \ #логи пути могут быть другми
«%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \»%r\» %b»
Эту конфигурацию нужно переделать под свои пути и названия ключей и также можно и сохранить отдельным файлом в /etc/apache2/sites-available и потом сделать ссылку в /etc/apache2/sites-enabled

iptables , Немного о iptables

iptables , Немного о iptables

Так как часто сылшу вопросы о том, что кто то хочет поставить у себя дома маршрутизатор под управлением Linux и с помощью него раздавать интернет своим домашним компьютерам решил написать небольшую статью как это сделать.
Хочу рассказать немного о фаерволе iptables и показать несколько правил которые возможно помогут вам в настройке маршрутизатора для вашей домашней сети.

В первую очедерь вам понадобится сдлеать NAT для своей внутреней сети. (NAT (Network Address Translation — «преобразование сетевых адресов») — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов. Также имеет названия IP Masquerading, Network Masquerading и Native Address Translation.)

#iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE

таким образом ваша внутреня сеть 172,16,1,0/24 будет попадать в интернет через «внешний» айпи адрес вашего маршрутизатора

Затем возможно вам понадобится сделать проброс портов для когонибудь из вагей домашней сети
делается это следующим образом

#ipt -t nat -A PREROUTING -p tcp –dport 16862 -d 194.9.15.1 -j DNAT –to-destination 172.16.1.11
#ipt -t nat -A PREROUTING -p tcp –dport 3389 -d 194.9.15.1 -j DNAT –to-destination 172.16.1.11

где 194,9,15,1 это ваш внешний ip а 172,16,1,11 это машинка во внутненей сети

Также можно защитить вашу внутренюю сеть от проникновения из вне
допустим так

Продолжение ..

Настройка мониторинга сетевых устройств на базе rrdtool , Настройка мониторинга сетевых устройств на базе rrdtool (ubuntu server)


Настройка мониторинга сетевых устройств на базе rrdtool , Настройка мониторинга сетевых устройств на базе rrdtool (ubuntu server)

Настройка мониторинга сетевых устройств на базе rrdtool
(ubuntu server)

Многие провайдеры компьютерных сетей проводят постоянный мониторинг своих сетевых устройств в этой статье я опишу настройку мониторинга с помощью rrdtool.
RRDtool (Round Robin Database). Обеспечивает хранение и отображение данных мониторинга (загрузка каналов, температура и любая другая зависящая от времени последовательность данных, которую можно получить некоторым способом). Задумывалась как повторная, но более правильная реализация MRTG. Объём хранимых данных не увеличивается со временем (ячейки хранения используются циклически). Использование различных функций консолидации данных позволяет охватывать большие интервалы времени без чрезмерного увеличения объема БД за счет снижения разрешающей способности.
Снимать статистику будем с помощью утилиты snmpwalk
Установка

#sudo apt-get install rrdtool
#sudo apt-get install snmp
Настройка
Создайте каталог для хранения скриптов и баз данных которые будут использоваться rrdtool
допустим /var/rrd и /var/rrd/db
Теперь нужно создать базу данных для хранения статистики для вашего сетевого устройства

#rrdtool create /var/rrd/db/switch.rrd \
–step 300 \
DS:input:COUNTER:600:0:50000000 \
DS:output:COUNTER:600:0:50000000 \
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MAX:0.5:1:60 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797

Эта команда создает rrdb switch.rrd для снятия статистики с сетевого интерфейса свича, предполагая, что данные в нее будут поступать раз в 5 минут, задаются два источника данных: счетчик принятых и отправленных байт. Создаются также 8 рядов, четыре из которых используют для консолидации данных функцию AVERAGE, а остальные – MAX. При этом создаются следующие промежутки: 600 ячеек по 5 минут, 700 ячеек по 30 минут (5*6), 775 ячеек по два часа (5*24), а также 797 ячеек, хранящих статистику отсчетов за день. В данном случае имитируется поведение mrtg, обрабатывающей такие же временные промежутки.

Значения функций

DS:input:COUNTER:600:0:50000000 \
DS:output:COUNTER:600:0:50000000 \
Установлены так что хранимые данные могут принимать значения от 0 до 50000000, в данном случае будет производится статистика загрузки сетевого устройства то есть скорость канала и верхний порог мы установили 50 Mbit/s. Если вы нехоитите выставлять ограничения то используйте запись типа
DS:input:COUNTER:600:U:U \
DS:output:COUNTER:600:U:U \
И так база данных создана.
Для внесения данных со счетчиков в rrdb используется команда rrdtool update, имеющая достаточно простой формат:
rrdtool update имя_rrdb.rrd время:значение_DS1[:значение_DS2[:...]]
Для считывания данных с устройства используем snmpwalk
При условии что на сетевом устройстве включен агент snmp
и SNMP Community: имеет значение public

Пример команды:

#snmpwalk -v 2c -c public 10.9.15.1 IF-MIB::ifInOctets.2
IF-MIB::ifInOctets.2 = Counter32: 449999725
Где -v 2c это версия протокола snmp
10,9,15,1 это адрес сетевого устройства
IF-MIB::ifInOctets считывание входящих данных на интерфейсе под номером 2 сетевого устройства.
Также и для исходящих данных
# snmpwalk -v 2c -c public 10.9.15.4 IF-MIB::ifOutOctets.2
IF-MIB::ifOutOctets.2 = Counter32: 2348960795
*Хочу заметить что данный способ используется в том случае если данные снимаются с 32-битных счётчиков который не позволяют считать данные загрузки канала свыше 113 Мбит/с
если ваше сетевое устройство имеет пропускную способность более 100 Мбит/с и скорость которую необходимо считывать будет больше 113 Мбит/с то стоит использоваться 64-битные счётчики
пример:
#snmpwalk -v 2c -c public 10.9.15.1 IF-MIB::ifHCInOctets.2
#snmpwalk -v 2c -c public 10.9.15.1 IF-MIB::ifHCOutOctets.2
Для того что бы получить последний кусочек строки
IF-MIB::ifOutOctets.2 = Counter32: 2348960795
то есть сами данные используем
#snmpwalk -v 2c -c public 10.9.15.1 IF-MIB::ifInOctets.2 | awk ‘{print($4)}’`
2348960795

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

use.sh
#!/bin/bash
input=`snmpwalk -v 2c -c public 10.9.15.4 IF-MIB::ifInOctets.2 | awk ‘{print($4)}’`
output=`snmpwalk -v 2c -c public 10.9.15.4 IF-MIB::ifOutOctets.2 | awk ‘{print($4)}’`
##заполняем переменные
a=`echo $input*8 | bc ` # переводим байты в биты :)
b=`echo $output*8 | bc `
/usr/bin/rrdtool update /var/rrd/db/switch.rrd \
N:$a:$b
# Сохраняем в базу 2 переменне со значениями входящей и исходящей скоростями.
Теперь отобразим данные на графике и сохраним его в формат png

Напишем скрипт для отрисовки графиков из базы данных:

graph.sh
#!/bin/bash
/usr/bin/rrdtool graph /var/www/switch.png –slope-mode –step 60\
–width 400 –height 100 –imgformat PNG \
–start -86400 \
–title «switch» –rigid –color BACK#FAFAFA \
–vertical-label bit/sec \
DEF:inoctets=/var/rrd/db/switch.rrd:input:AVERAGE \
DEF:outoctets=/var/rrd/db/switch.rrd:output:AVERAGE \
AREA:inoctets#0000ff:»In traffic. Now in (bit/sec) =» \
GPRINT:inoctets:LAST:%.2lf \
AREA:inoctets#0000ff:»In traffic. Now max in (bit/sec) =» \
GPRINT:inoctets:MAX:%.2lf \
AREA:inoctets#0000ff:»In traffic. Now average in (bit/sec) =» \
GPRINT:inoctets:AVERAGE:%.2lf \
LINE1:outoctets#00ff00:»Out traffic. Now out (bit/sec) =» \
GPRINT:outoctets:LAST:%.2lf \
LINE1:outoctets#00ff00:»Out traffic. Now max out (bit/sec) =» \
GPRINT:outoctets:MAX:%.2lf \
LINE1:outoctets#00ff00:»Out traffic. Now average out (bit/sec) =» \
GPRINT:outoctets:AVERAGE:%.2lf \
Для того что бы делать графики не только за сутки, а и за неделю достаточно поменять значения —start на –start -604800 \ Ну и конечно же название в файла стоит добавить пометку week, что бы не было перезаписи.
/usr/bin/rrdtool graph /var/www/switch_week.png –slope-mode –step 60\
–width 400 –height 100 –imgformat PNG \
–start -604800 \
–title «switch» –rigid –color BACK#FAFAFA \
–vertical-label bit/sec \
DEF:inoctets=/var/rrd/db/switch.rrd:input:AVERAGE \
DEF:outoctets=/var/rrd/db/switch.rrd:output:AVERAGE \
AREA:inoctets#0000ff:»In traffic. Now in (bit/sec) =» \
GPRINT:inoctets:LAST:%.2lf \
AREA:inoctets#0000ff:»In traffic. Now max in (bit/sec) =» \
GPRINT:inoctets:MAX:%.2lf \
AREA:inoctets#0000ff:»In traffic. Now average in (bit/sec) =» \
GPRINT:inoctets:AVERAGE:%.2lf \
LINE1:outoctets#00ff00:»Out traffic. Now out (bit/sec) =» \
GPRINT:outoctets:LAST:%.2lf \
LINE1:outoctets#00ff00:»Out traffic. Now max out (bit/sec) =» \
GPRINT:outoctets:MAX:%.2lf \
LINE1:outoctets#00ff00:»Out traffic. Now average out (bit/sec) =» \
GPRINT:outoctets:AVERAGE:%.2lf \
Для графиков за месяц используйте значение start -2592000 \
За год -31536000 \
И создавая аналогичным путём графики для разных диапазонов времени можно получить статистику загрузки канала сетевого устройства.
Для удобства я создал скрипт объединяющей запуск скрипта use.sh и graph.sh и добавил его в крон для выполнения каждые 5 минут
rrd.sh
#!/bin/sh
export PATH=/usr/local/bin/:/usr/bin/:/bin/
cd /var/rrd
/var/rrd/use.sh
/var/rrd/graph.sh
Теперь каждый 5 минут мы снимаем данные с устройства и складываем его в базу а затем скрипт рисует графики для каждого интервала времени.

Настройка VPN сервера с помощью pptpd. , Настройка VPN сервера с помощью pptpd. Linx Ubuntu server-8.0.4.1


Настройка VPN сервера с помощью pptpd. , Настройка VPN сервера с помощью pptpd. Linx Ubuntu server-8.0.4.1

Настройка VPN сервера с помощью pptpd.
Многие провайдеры домашних сетей используют этот способ для продажи интернета своим клиентам. Сервер vpn подключений будет основан с помощью демона pptpd который будет принимать соединения аутентифицировать пользователей и выдавать им интернет. В этой статье я опишу как настроить простой vpn сервер без ограничений по скорости.
Установка
#sudo apt-get install pptpd
#sudo apt-get install pppd
Также нам потребуется iptables в качаестве файрвола если он неустановлен то установим его:
#sudo apt-get install iptables

Настройка

Теперь мы можем редактировать /etc/pptpd.conf

ppp /usr/sbin/pppd
# где находится демон pppd
option /etc/ppp/pptpd-options
# где находится файл опций
listen 0.0.0.0
## «слушем» все адреса
# TAG: debug
# Turns on (more) debugging to syslog
#
debug
# TAG: stimeout
# Specifies timeout (in seconds) on starting ctrl connection
#
stimeout 10
# TAG: noipparam
# Suppress the passing of the client’s IP address to PPP, which is
# done by default otherwise.
#
#noipparam
# TAG: logwtmp
# Use wtmp(5) to record client connections and disconnections.
#
# logwtmp
# TAG: bcrelay
# Turns on broadcast relay to clients from interface
#
#bcrelay eth1

localip 193.9.15.1
# это айпи адрес вашего сервера
remoteip 10.100.1.1-254
# адреса выдаваемые пользователям при подключении
Теперь отредактируем файл опций/etc/ppp/pptpd-options

# Authentication
# Name of the local system for authentication purposes
# (must match the second field in /etc/ppp/chap-secrets entries)
name pptpd
# Optional: domain name to use for authentication
# domain mydomain.net
# Strip the domain prefix from the username before authentication.
# (applies if you use pppd with chapms-strip-domain patch)
#chapms-strip-domain
# Encryption
# Debian: on systems with a kernel built with the package
# kernel-patch-mppe >= 2.4.2 and using ppp >= 2.4.2, …
# {{{
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
# Require MPPE 128-bit encryption
# (note that MPPE requires the use of MSCHAP-V2 during authentication)
require-mppe-128
# Таким образом при настройе подключений пользователь использующий ОС windows не #должен делать ничего лишнего то есть возится с настройкой шифрования или #дополнительными опциями.
# Network and Routing
ms-dns 193.9.15.1 # укажем днс который будут использовать пользователи после #соединения с вашим сервером
#ms-wins 10.0.0.3 эти параметры я неуказывал но если таковой сервер сужествует то #можете его здесь написать
#ms-wins 10.0.0.4
#proxyarp
# не заменяем шлюз установелный по умолчанию
nodefaultroute
# Logging
#debug
#dump
# Miscellaneous
# Create a UUCP-style lock file for the pseudo-tty to ensure exclusive
# access.
lock
# Disable BSD-Compress compression
nobsdcomp

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

/etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
asad * passwd *
user1 * user1 *
user2 * 11111 *
Плохо что пользователи хранятся в открытом виде но в этой статье я не буду описывать методы хранения акаунтов с помощью других серверов аутентификации.
Перезапустим pptpd
#/etc/init.d/pptpd restart
Теперь клиенты могут подключатся к нашему серверу и получать ip адрес и DNS сервер.
Но для доступа в интернет сделаем NAT для «серых» адресов которые пользователи получают в результате подключения.
#iptables -t nat -A POSTROUTING -s 10.100.1.1/24 -j MASQUERADE
Теперь все клиенты которые установили vpn соединение с вашим сервером могут пользоваться интернетом.
Предложения и отзывы присылать на почту asad@online.ua

Советы по защите от Ddos атак. , Защита от ДДос (Ddos) атак. настройки sysctl.conf и iptables

Советы по защите от Ddos атак. , Защита от ДДос (Ddos) атак. настройки sysctl.conf и iptables

Советы по защите от Ddos атак.

В наше время стало популярным вредительство сайтам серверам или вобщем провайдерам
такое понятие как Ддос атака.
DoS-атака (от англ. Denial of Service, отказ в обслуживании) — атака на вычислительную систему с целью довести её до отказа, то есть создание таких условий, при которых легитимные (правомерные) пользователи системы не могут получить доступ к предоставляемым системой ресурсам (серверами), либо этот доступ затруднён. Отказ «вражеской» системы может быть как самоцелью (например, сделать недоступным популярный сайт), так и одним из шагов к овладению системой (если во внештатной ситуации ПО выдаёт какую-либо критическую информацию — например, версию, часть программного кода и т. д.).

В этой статье я дам конкретные советы как защитится или же просто уберечься от таких атак. Панацеи конечно же нет! Каждый случай индивидуален но некоторый выход из ситуации есть. Я опишу несколько настроек которые возможно вам помогут бороться с таким видом атак.

Для начала рассмотрим настройки /etc/sysctl.conf:

# Controls IP packet forwarding
net.ipv4.ip_forward = 1
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.core.wmem_default = 2097152
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
net.core.rmem_default = 2097152
net.core.wmem_default = 2097152
net.ipv4.tcp_mem= 8388608 8388608 8388608
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_max_syn_backlog = 2048
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
net.ipv4.tcp_max_orphans = 131072
# Определяет основные свалки добавляя PID для основного файла
# Полезно для отладки многопоточных приложений
kernel.core_uses_pid = 1

# Если ядро собрано с CONFIG_SYNCOOKIES для защиты от syn флуда
net.ipv4.tcp_syncookies = 1

# Контролиролвать максимальный размер сообщений в байтах
kernel.msgmnb = 65536

# Котролировать максимальный размер очереди сообщений
kernel.msgmax = 65536

# Контролирует максимальное общему сегменту размер в байтах
kernel.shmmax = 4294967295

# Контролирует максимальное число общих сегменты памяти, в страницах
kernel.shmall = 268435456
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 30
kernel.panic=5

Пояснения
net.ipv4.ip_forward – разрешает форвард пакетов, это параметр нужен для маршрутизации пакетов если вам это ненужно лучше оставить значение этого параметра 0.

Продолжение ...


Установка и настройка виртуальных серверов jail , Настройка виртуальных серверов Jail на базе FreeBSD 6.2

Установка и настройка виртуальных серверов jail , Настройка виртуальных серверов Jail на базе FreeBSD 6.2

Настройка виртуальных серверов Jail на базе FreeBSD 6.2

Jail позволяет создавать и управлять виртуальными серверами. Причём каждый такой сервер будет работать независимо друг от друга и осуществить вход из такого виртуального сервера на внешний (корневой) сервер будет невозможным, что даёт абсолютную безопасность от взлома вашей основной системы.

Установка

Непосредственно для установки Jail сервера нам понадобятся исходные коды freebsd. Исходные коды FreeBSD можно найти на CD с которого устанавливается система. При установке или установленной системе в sysinstall ->configure->distributions отметить пункт src. Исходные коды FreeBSD В установленной системе /usr/src/
Либо скачать с многочисленных зеркал официального сервера freebsd.org

Для установки я выбрал директорию /usr/local/jails/

Итак выполняем команды естественно от пользователя root

#mkdir -p /usr/local/jails/jail1
#cd /usr/src
#make world DESTDIR=/usr/local/jails/jail1
#cd /usr/src/etc
#make distribution DESTDIR=/usr/local/jails/jail1
#mount_devfs devfs /usr/local/jails/jail1/dev
#cd /usr/local/jails/jail1
#ln -sf dev/null kernel

После выполнения этих команд у вас получится готовый виртуальный сервер,
который выглядит точно так же как корневой каталог типичной системы FreeBSD.

/etc/rc.conf

Далее нужно настроить файл /etc/rc.conf корневого сервера.

добавим следующие строки в /etc/rc.conf:

syslogd_flags=»-ss»

# Она укажет демону syslogd корневой машины не открывать UDP порт для приема #сообщений с удаленных систем, что позволит запустить syslogd в окружении jail.

inetd_flags=»-wW -a 193.19.14.3″

ifconfig_lo0_alias0=»inet 193.19.14.52/32″ # алиас на устройство lo0 для нашего jail

##определим общие настройки для jail серверов
jail_enable=»YES»
jail_devfs_enable=»YES»
jail_procfs_enable=»YES»
jail_list=»jail1″ # если у вас есть несколько виртуальных серверов то этот список можно #писать таким образом jail_list=»jail1 jail2 jail3 ….»

# Далее определим параметры запуска самого jail сервера
# jail1
jail_jail1_rootdir=»/usr/local/jails/jail1″ #каталог где находится ваш сервер
jail_jail1_hostname=»jail1″ # имя сервер (должно совпадать с именем в списке jail_list
jail_jail1_ip=»193.19.14.52″ # ip адрес
jail_jail1_exec=»/bin/sh /etc/rc» # параметры запуска
jail_jail1_devfs_enable=»YES»



продолжение ...

Sendmail+cyrus-imapd+saslauth+spamassasin в Ubuntu server 8.10 , Настройка почтового сервера со спам фильтром spamassasin


Sendmail+cyrus-imapd+saslauth+spamassasin в Ubuntu server 8.10 , Настройка почтового сервера со спам фильтром spamassasin

Sendmail+cyrus-imapd+saslauth+spamassasin в Ubuntu server 8.10
Настройка почтового сервера со спам фильтром spamassasin

Итак для установки нам потребуются пакеты
cyrus-imapd-2.2 – для управления почтовыми ящиками и получения почты
sendmail – для отправки почты
mailutils – утилиты для отправки почты в частности комнда mail
sasl2-bin – для аутентификации пользователей и хранения паролей с помощью демона saslauthd
Устанавливаем всё с помощью apt-get
#apt-get install cyrus-imapd-2.2 sendmail mailutils sasl2-bin
#apt-get install cyrus-admin-2.2
#apt-get install spamass-milter spamassassin
После установки переходим в /etc/default/ и открываем на редактирование файл saslauthd

# Which authentication mechanisms should saslauthd use? (default: pam)
#
# Available options in this Debian package:
# getpwent – use the getpwent() library function
# kerberos5 — use Kerberos 5
# pam — use PAM
# rimap — use a remote IMAP server
# shadow – use the local shadow password file
# sasldb – use the local sasldb database file
# ldap – use LDAP (configuration is in /etc/saslauthd.conf)
# указываем что пользователи и пароли будут хранится в базе данных
MECHANISMS=»sasldb»
# Additional options for this mechanism. (default: none)
# See the saslauthd man page for information about mech-specific options.
MECH_OPTIONS=»"
# How many saslauthd processes should we run? (default: 5)
# A value of 0 will fork a new process for each connection.
THREADS=5
OPTIONS=»-c -m /var/run/saslauthd»

Далее переходим к настройке sendmail файлы конфигурации которого обычно находятся в каталоге /etc/mail

Nagios в ubuntu server , Установка и настройка nagios2 в ubuntu


Nagios в ubuntu server , Установка и настройка nagios2 в ubuntu

Настройка Nagios2 (Ubuntu server-8.10)
Краткое описание
Nagios — это приложение, предназначенное для выполнения мониторинга систем и сетей. Оно следит за назначенными приложениями и службами и генерирует оповещения в зависимости от поведения наблюдаемых служб.
Обычно более мение крупному провайдеру рано или позно потребуется следить за своими серверами свичами, рутерами, nagios предоставляет совокупность сервисов для этого также с его помощью можно выстроить виртуально сеть и настроить удобную систему оповещения при каких либо событиях в этой сети.

Нам потребуются следующие пакеты:
apache2
nagios2

Установка:
# apt-get install nagios2
# apt-get install apache2

Конфигурирование:
Обычно Nagios устанавливается в директорию /etc/nagios2/
Web директория лежит в /usr/share/nagios2/htdocs

Также следует добавить файл /etc/nagios2/apache.conf в файл конфигурации apahce2.
Делается это следующим образом:
Открываем файл /etc/apache2/apache2.conf и дописываем там

Include /etc/nagios2/apache.conf
После чего просто перезапускам apache:
#/etc/init.d/apache2 restart
Теперь подробно по конфигурации самого nagios-a
и так переходим в директорию /etc/nagios2/
# cd /etc/nagios2
Список файлов по умолчанию

cgi.cfg-sample
checkcommands.cfg-sample
contactgroups.cfg-sample
contacts.cfg-sample
dependencies.cfg-sample
escalations.cfg-sample
hostgroups.cfg-sample
hosts.cfg-sample
misccommands.cfg-sample
nagios.cfg-sample
resource.cfg-sample
services.cfg-sample
timeperiods.cfg-sample

естественно *.-sample стоит убрать из имён файлов просто переименованием.
После этой операции получим список файлов конфигурации, но мы будем использовать следующие файлы конфигурации:

apache.conf – файл конфигурации веб сайта nagios2 (обычно там ничего менять не приходится)

cgi.cfg – файл в котором описаны пользователи имеющие доступ к сомндам и сервисам nagios

commands.cfg — файл в ктором описаны команды nagios

contactgroups.cfg – файл в котором мы будем описывать группы пользователей

contacts.cfg — файл в котором мы будем описывать группы пользователей и их контактные данные

hostextinfo.cfg – конфигурационный файл для дополнительныйх настроек хостов отображаемых на 2d карте

hostgroups.cfg – файл описания групп хостов

hosts.cfg – файл конфигурации хостов

nagios.cfg – главный конфигурационный файл nagios-а

services.cfg – файл конфигурации сервисов

timeperiods.cfg — файл в котором будут описаны периоды времени нотификации и работы сервисов

Итак начнём кофигурирование:

nagios.cfg:

в этом файле мы должны описать все конфигурационные файлы которые нам нужнф для использования

открываем и редактируем nagios.cfg

cfg_file=/etc/nagios2/contactgroups.cfg

cfg_file=/etc/nagios2/contacts.cfg

#cfg_file=/etc/nagios2/dependencies.cfg

#cfg_file=/etc/nagios2/escalations.cfg

cfg_file=/etc/nagios2/hostgroups.cfg

cfg_file=/etc/nagios2/hosts.cfg

cfg_file=/etc/nagios2/services.cfg

cfg_file=/etc/nagios2/timeperiods.cfg

cfg_file=/etc/nagios2/hostextinfo.cfg

#cfg_file=/etc/nagios2/serviceextinfo.cfg

и

check_external_commands=1 ## здесь мы указываем разрешение выполнять команды для # ##пользователей

Остальное трогать не будем так как всё там нормально.

Далее переходим к файлу cgi.cfg

Вот пример моей конфигурации.

main_config_file=/etc/nagios2/nagios.cfg

physical_html_path=/usr/share/nagios2/htdocs

url_html_path=/nagios2

show_context_help=1

nagios_check_command=/usr/lib/nagios/plugins/check_nagios /var/cache/nagios2/status.dat 5 ‘/usr/sbin/nagios2′

use_authentication=1

default_user_name=nagiosadmin

authorized_for_system_information=*

authorized_for_configuration_information=*

authorized_for_system_commands=*

authorized_for_all_services=nagiosadmin, asad

authorized_for_all_hosts=nagiosadmin, asad

#authorized_for_all_services=nagiosadmin,guest

#authorized_for_all_hosts=nagiosadmin,guest

authorized_for_all_service_commands=nagiosadmin, asad

authorized_for_all_host_commands=nagiosadmin, asad

#statusmap_background_image=smbackground.gd2 ## картинка заднего плана для statusmap

default_statusmap_layout=5

default_statuswrl_layout=4

#statuswrl_include=myworld.wrl

ping_syntax=/bin/ping -n -U -c 5 $HOSTADDRESS$

refresh_rate=90 ## время обновления

## звуки

#host_unreachable_sound=hostdown.wav

#host_down_sound=hostdown.wav

#service_critical_sound=critical.wav

#service_warning_sound=warning.wav

#service_unknown_sound=warning.wav

#normal_sound=noproblem.wav

Он сконфигурированный так что бы пользователи авторизировавшиеся через веб имели доступ ко всем командам и процессам nagios доступным через web интерфейс.

Для этого стоит cделать файл паролей htpasswd.users с помощью htpasswd

# htpasswd -c htpasswd.users asad

ввести пароль и прописать этот файл для использования при авторизации в /etc/nagios2/apache.conf:

Options FollowSymLinks

DirectoryIndex index.html

AllowOverride AuthConfig

Options ExecCGI

Order Allow,Deny

Allow From All

AuthName «Nagios Access»

AuthType Basic

AuthUserFile /etc/nagios2/htpasswd.users ## путь к файлу паролей

require valid-user

Далее переходим к contacts.cfg

В нём мы опишем пользователя который будет получать уведомление и смогут просматривать информацию через веб.

contacts.cfg:

define contact{

contact_name asad

alias asad

service_notification_period 24×7

host_notification_period 24×7

service_notification_options u ## здесь я оставил только нотфикацию о том что хост недоступен

host_notification_options d,u ## а здесь только о том что сервис выключен или недоступен

service_notification_commands notify-by-email,notify-by-epager ## види оповещения через почту и смс

host_notification_commands host-notify-by-email,host-notify-by-epager

email asad@neocom.net.ua ## здесь можно написать почту

pager ххххххххх@sms.ecotel.com.ua ## а здесь мобильный номер и адрес оператора отсылки смс

}

contactgroup.cfg:

define contactgroup{

contactgroup_name domain-admins

alias Domain.Com Admins

members asad

}

Файл в котором описана группа пользователей

Далее файл в котором описаны период времени timeperiods.cfg. В нём я описал два периода

24х7 тоесть 5 дней в неделю и none тоетсь никогда.

timeperiods.cfg :

define timeperiod{

timeperiod_name 24×7

alias 24 Hours A Day, 7 Days A Week

sunday 00:00-24:00

monday 00:00-24:00

tuesday 00:00-24:00

wednesday 00:00-24:00

thursday 00:00-24:00

friday 00:00-24:00

saturday 00:00-24:00

}

# ‘none’ timeperiod definition

define timeperiod{

timeperiod_name none

alias No Time Is A Good Time

}

Далее переходим к непосредственной конфигурации сканируемых хостов и используемых для этого сервисов.

hosts.cfg здесь мы опишем наши хосты:

define host{

use generic-host

host_name myserver

contact_groups domain-admins

alias My Registered Domain

address 192.168.0.1

check_command check-host-alive #проверять жив ли хост? это будет выполнятся командой ping

max_check_attempts 10

notification_interval 120

notification_period 24×7

notification_options d # только если down

}

define host{

use generic-host

host_name myrouter

parents myserver ##здесь мы указали что предшественником будет хост myserver описанный #вышше

contact_groups domain-admins

alias My Registered

address 192.168.0.2

check_command check-host-alive

max_check_attempts 10

notification_interval 120

notification_period 24×7

notification_options d,u,r # down, unreachable, recover

}

Также нам поднадопится задать группу хостов для этого редактируем файл hostgroups.cfg:

define hostgroup{

hostgroup_name domain-servers

alias Domain Servers

members myserver, myrouter

}

Далее мы опишем сервис для команды PING в файле

services.cfg:

define service{

use generic-service

host_name myserver

service_description PING

is_volatile 0

check_period 24×7

max_check_attempts 3

normal_check_interval 1

retry_check_interval 1

contact_groups domain-admins

notification_interval 120

notification_period 24×7

notification_options u,c,r

check_command check_ping!100.0,20%!500.0,60%

}

define service{

# Name of service template to use

use generic-service

host_name myrouter

service_description PING

is_volatile 0

check_period 24×7

max_check_attempts 3

normal_check_interval 1

retry_check_interval 1

contact_groups domain-admins

notification_interval 120

notification_period 24×7

notification_options u,c,r

check_command check_ping!100.0,20%!500.0,60%

}

Итак nagios будет выполнять проверку 2-х хостов с помощью команды ping и отображать состояние хостов через веб страницу.

Но для удобства мы можем добавить ещё дополнительные настройки хоста например отображаемая пиктограмка хоста.

Всё это описывается в файле hostexinfo.cfg

define hostextinfo{

host_name myserver

icon_image serv.png

vrml_image serv.png

statusmap_image serv.png

}

define hostextinfo{

host_name myrouter

icon_image net.png

vrml_image net.png

statusmap_image net.png

}

Ну вот и всё для начала стоит запустить nagios в режиме проверки

# nagios -v /etc/nagios2/nagios.cfg

Команда загрузит все конфигурационные файлы и сообщит обо всех ошибках, которые она найдет. Исправляйте все ошибки по очереди, а потом запускайте команду снова.

Далее стоить запускать или перезапускать nagios так:

/etc/init.d/nagios2 start | restart | stop

Дополнительная информация

http://www.nagios.org/

Все замечаения и вопросы по почте asad@online.ua