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

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

Вешаем свою программу (службу) на порт с помощью 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


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

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 минут мы снимаем данные с устройства и складываем его в базу а затем скрипт рисует графики для каждого интервала времени.

Советы по защите от 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.

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


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

Настройка клиента vpn подключений pptp-client в Linux , Настройка pptp-client для vpn соединения в linux ubuntu, suse, asp, fedora


Настройка клиента vpn подключений pptp-client в Linux , Настройка pptp-client для vpn соединения в linux ubuntu, suse, asp, fedora

Настройка pptp-client для vpn соединения в linux
Установка
Вначале вам потребуется установить пакет pptp-linux
Так как я использую linux ubuntu то инсталлировать пакет буду с помощью apt-get
#apt-get install pptp-linux
Далее переходим в диреторию /etc/ppp/peers
создаём файл с именем подключения:
#sudo touch asad.inet

pty «pptp [ip-addr] –nolaunchpppd» #ip-addr это айпи адрес удалённого vpn сервера
#которому будет вестись подключие
name asad ## ваш логин для подклчюения к vpn серверу
noauth
nodeflate
nobsdcomp
lock
remotename x #алиас вашего аккаунта
defaultroute
replacedefaultroute
persist
#debug если разкоментировать эту строку то при попытке подключения мы
#nodetach сможем увидеть логи подлкючения
Далее редактируем файл /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client server secret IP addresses
asad x password *
x asad password *
Теперь вы можете установить соедениение с сервером
#sudo pppd call asad.inet
где asad.inet это имя подключения

проверяем:
#ps ax | grep ppp
28802 ? Ss 0:00 pppd call asad.inet
28803 ? S 0:00 sh -c pptp vpn.server –nolaunchpppd
28806 ? S 0:01 pptp vpn.server –nolaunchpppd
28819 ? S 0:00 pptp vpn.server –nolaunchpppd
28966 pts/7 S+ 0:00 grep ppp
Посмотрим интерфейс ppp0 и узнаем какой айпи выдал нам сервер.
#ifconfig
ppp0 Link encap:Протокол PPP (Point-to-Point Protocol)
inet addr:10.100.1.2 P-t-P:10.9.15.1 Mask:255.255.255.255
ВВЕРХ POINTOPOINT RUNNING NOARP MULTICAST MTU:400 Metric:1
RX packets:7294 errors:0 dropped:0 overruns:0 frame:0
TX packets:5447 errors:0 dropped:0 overruns:0 carrier:0
коллизии:0 txqueuelen:3
RX bytes:2693494 (2.6 MB) TX bytes:421037 (421.0 KB)
Также в некоторых сетя ваш VPN сервер может находится в другом сегмете сети тогда следует добавлять маршрут через ваш маршрутизатор в другие сети
если ваш ip адрес находится в сети 172.16.2.0/24 а маршрутизатор 172.16.22.254, а VPN сервер находится в сети 172.16.1.0/24 то добавление маршрута будет выглядеть так:
#route add -net 172.16.0.0 netmask 255.255.0.0 gw 172.16.2.254
Данная конфигурация была успешно испробована в Linux Ubuntu 8, Suse, ASP Linux 11.2-12, Fedora 10.

Глюк с maplayer в ubuntu

Глюк с maplayer в ubuntu

Я на работе пользую linux ubuntu 9.04. До этого с диска ставил 7.10 потом апгрейд до 8.04 и потом до 9.04. Так вот после последнего апгрейда случился глюк с mplayer, а конкретнее он перестал проигрывать видео, хотя звук оставался. Вот что он мне писал прямо на экран

#mplayer Ghost.avi
MPlayer 1.0rc2-4.3.3 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Pentium(R) 4 CPU 3.00GHz (Family: 15, Model: 2, Stepping: 9)
CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing Ghost.avi.
AVI file format detected.
[aviheader] Video stream found, -vid 0
[aviheader] Audio stream found, -aid 1
VIDEO: [DX50] 512×286 24bpp 29.970 fps 632.7 kbps (77.2 kbyte/s)
xscreensaver_disable: Could not find XScreenSaver window.
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg’s libavcodec codec family
Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)
==========================================================================
==========================================================================
Forced audio codec: mad
Opening audio decoder: [libmad] libmad mpeg audio decoder
AUDIO: 48000 Hz, 2 ch, s16le, 112.0 kbit/7.29% (ratio: 14000->192000)
Selected audio codec: [mad] afm: libmad (libMAD MPEG layer 1-2-3)
==========================================================================
E: core-util.c: Home directory /home/asad not ours.
AO: [pulse] Failed to connect to server: Connection refused
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback…
VDec: vo config request – 512 x 286 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.79:1 – prescaling to correct movie aspect.
VO: [xv] 512×286 => 512×286 Planar YV12
X11 error: BadAlloc (insufficient resources for operation)?,?% 5 0
X11 error: BadAlloc (insufficient resources for operation)
X11 error: BadAlloc (insufficient resources for operation)
X11 error: BadAlloc (insufficient resources for operation)
X11 error: BadAlloc (insufficient resources for operation)
X11 error: BadAlloc (insufficient resources for operation)
X11 error: BadAlloc (insufficient resources for operation)
X11 error: BadAlloc (insufficient resources for operation)
X11 error: BadAlloc (insufficient resources for operation)

и так далие

Как же быть смотрим продолжение http://asad.in.ua/?p=95

Маленький но быстрый proxy/socks сервер на ubuntu

Маленький но быстрый proxy/socks сервер на ubuntu

По некоторому ряду причин иногда приодится использовать прокси сервера, то ли это сокрытие своего адреса то ли для обхода некоторых огрничений установленых провайдером или злым админом для сети или вашего компьютера. Сегодня мы настроим быстрой но могучий проксисервер на основе 3proxy

Итак качаем

wget http://3proxy.ru/0.5.3j/3proxy-0.5.3j.tgz

Распакуйте его в любую по вашему вкусу директорию и запустите внути

make -f Makefile.unix

Теперь перейдём в каталог src/ и создадим конфигурационный файлик config.cfg

touch config.cfg

Пишем следующие строки внутрь конфига: Продолжение ...