понедельник, 21 декабря 2015 г.

zabbix, очистить очередь уведомлений.

Логинимся в mysql под Вашей учеткой.

use zabbix;
delete from escalations;
update alerts set status=1 where status=0;

Мы не удаляем очередь уведомлений, а помечаем все уведомления в очереди как отработанные.



вторник, 8 декабря 2015 г.

SMS (gnokii)

Конфиг gnokii:

[global]
port = /dev/ttyS0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 115200

Скрипт-рассылка:

#!/bin/bash

PHONES="+7904XXXXXXX +7921XXXXXXX"

for myPhone in $PHONES
do

echo "хой!" | /usr/bin/sudo /usr/bin/gnokii --config /home/zabbix/sms.conf --sendsms $myPhone

done

Скрипт для Zabbix:

#!/bin/sh
LOGFILE="/var/log/zabbix-server/zabbix-sms.log"
echo "Recipient='$1' Message='$3'" >> ${LOGFILE}
MOBILE_NUMBER=`echo "$1" | sed s#\s##`

echo "echo $3 | /usr/bin/sudo /usr/bin/gnokii --config /home/zabbix/sms.conf --sendsms ${MOBILE_NUMBER}" >>${LOGFILE}

echo "$3" | /usr/bin/sudo /usr/bin/gnokii --config /home/zabbix/sms.conf --sendsms "${MOBILE_NUMBER}" 1>>${LOGFILE} 2>&1

exit 0

В /etc/sudoers добавить  (чтобы не было проблем с исполнением под пользователем zabbix, юзать visudo): 

## Send SMS with Zabbix
Defaults:%zabbix !requiretty
Defaults:zabbix !requiretty
zabbix ALL=NOPASSWD:/usr/bin/gnokii

Также добавить пользователя в группу dialout:

useradd -G dialout zabbix


пятница, 24 июля 2015 г.

Разное для Asterisk


Убить зависший peer


Сначала выведем информацию о текущих звонках

core show channels 

Убьем зависший peer --

CLI> channel request hangup SIP/xxx-xxxxxxxxxxx



Вывести версии моделей аппаратов, и номера пиров (с пробелами и переносом строк):
 for a in `asterisk -rx "sip show peers"|cut -f1 -d/` ;do asterisk -rx "sip show peer $a";done | awk '/Useragent/ {print $3"  "} /name/ {print $3,$4"  "}'  | sed ':a; /$/N; s/\n//;'



Вывести имена пользователей и их номера (с пробелами и переносом строк) :
cat /etc/asterisk/users.conf | awk '/^label/ {print $3"  "} /^fullname/ {print $3,$4"  "}'| sed ':a; /$/N; s/\n//;'

Нужно понимать, что значения print в вашем случае могут отличаться.

вторник, 2 июня 2015 г.

Перенаправление порта посредством ssh.

Чтобы не забыть, выкладываю скрин настройки ssh-туннеля, с помощью программы putty.
Картинка справедлива для следующей ситуации: комп 8.8.8.8 - linux (unix) шлюз с открытым в Интернет ssh портом, 192.168.11.11 ПК в локальной сети.

суббота, 16 мая 2015 г.

Samba. Доступ по паролю и без.

Чтобы не забыть, и не потерять, выкладываю свой конфиг samba сконфигурированный для парольного доступа и гостевого файлообмена:
nano /etc/samba/smb.conf

[global]
workgroup = WORKGROUP
hosts allow = 192.168.0.0/24
server string = Samba Server %v
netbios name = chevengur
security = user
map to guest = bad user
dns proxy = no
#
load printers = no
printcap name = /dev/null
disable spoolss = yes

[fileshit]   #файлопомойка
path = /home/fileshit
browsable =yes
writable = yes
guest ok = yes
read only = no

[share]
path = /home/admin/share   #доступ по паролю
browsable =yes
writable = yes
valid users = admin
read only = no

Для осуществления парольного доступа создаем юзера (с домашним каталогом -m) с таким же log/pass как и в windows:

useradd -m admin

Задаем ему пароль:

passwd admin

Загоняем его же в samba

smbpasswd -a admin

и даем такой же пароль как в windows.


Создаем каталоги для файлопомойки, и для запароленной папки:

mkdir /home/admin/share

mkdir /home/fileshit


Назначаем права на пароленный samba-каталог:

chown -R admin:admin /home/admin/share
chmod -R ugo+rwx /home/admin/share 
И на файлопомойку:

chmod 777 -R /home/username/fileshit

Рестартуем samba:

service smbd restart

Если вы в windows под одноименным пользователем, и  с таким же как и в линукс паролем, на парольную папку вас должно пустить.


воскресенье, 15 февраля 2015 г.

OpenVPN - объединение Центрального офиса с подразделением (сервер-клиент). Ubuntu 14.04

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




0. Что имеем:
a. Interfaces на сервере
auto lo
iface lo inet loopback

# The primary network interface
auto eth1
iface eth1 inet static
        address 1.2.3.174
        netmask 255.255.255.0
        network 1.2.3.0
        broadcast 1.2.3.255
        gateway 1.2.3.1
        dns-nameservers 8.8.8.8

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        bridge_ports eth0
        bridge_fd 0


b. Interfaces на клиенте

# The loopback network interface
auto lo
iface lo inet loopback

auto em0
iface em0 inet static
address 1.2.33.123
network 1.2.33.0
gateway 1.2.33.1
netmask 255.255.255.0
broadcast 1.2.33.255
dns-nameservers 8.8.8.8

auto eth0
iface eth0 inet manual

auto wlan0
iface wlan0 inet manual

auto br0
iface br0 inet static
address 192.168.11.1
network 192.168.11.0
netmask 255.255.255.192
broadcast 192.168.11.63
bridge-ports eth0 wlan0
bridge_fd 0

1. На сервере ставим:
apt-get install openvpn easy-rsa libssl-dev openssl

и на клиенте:
apt-get install openvpn

2. Переходим на сервер, и копируем:
cp -Rp /usr/share/easy-rsa/ /etc/openvpn/vpn-tun/

3. Подправим основные параметры в файле vars, чтобы значения в дальнейшем подставлялись сами:
nano /etc/openvpn/vpn-tun/vars

export KEY_COUNTRY="RU"
export KEY_PROVINCE="SZFO"
export KEY_CITY="SPb"
export KEY_ORG="Firma"
export KEY_EMAIL="it@firma.com"
export KEY_OU="FirmaHead"

4. Перейдем в папку:

cd /etc/openvpn/vpn-tun/

Инициализируем PKI:

. ./vars
 и 
./clean-all

5. Генерируем сертификат авторизации (СА) и ключ, для этого выполняем команду:

./build-ca

Большинство параметров должно подхватиться из файла vars, если что-то не так - указываем явно.

6. Генерируем секретный ключ Диффи-Хелмана (займет продолжительное время):

./build-dh

7. Генерируем сертификат, и секретный ключ сервера:

./build-key-server servername

Вместо servername укажите например hostname сервера, это избавит от возможной путаницы в дальнейшем. Параметры подхватятся из vars, однако параметр Name укажите явно - ваш servername. Какой указали при запуске этого скрипта.

8.Также сгенерим ключ для TLS шифрования:
openvpn --genkey --secret keys/ta.key

9. Сгенерируем ключи для клиента:

./build-key clientname

Вместо "clientname" придумайте свое имя, и укажите его в параметре Name при генерации ключа.

Если через некоторое время Вам понадобится включить еще один офис в Вашу сеть надо будет запустить команду:

. ./vars

После чего сгенерируйте ключи для клиента:

./build-key clientname

Не забудьте только создать ccd файл для нового клиента. Об ccd ниже.

10. Создаем папку для ccd файлов:

mkdir /etc/openvpn/vpn-tun/ccd/

затем:

nano /etc/openvpn/vpn-tun/ccd/clientname
(имя файла должно совпадать с названием ключа для клиента см. п.8)
внесем след. параметры:

#disable
ifconfig-push 192.168.255.5 192.168.255.6
iroute 192.168.11.0 255.255.255.192
push "route 192.168.1.0 255.255.255.0"

Если в дальнейшем какой-либо клиент придется отключить, просто раскомментируйте #disable.

11. Теперь создадим conf-файл OpenVpn-сервера:

nano /etc/openvpn/server-tun.conf

dev tun
port 1194
proto udp

tls-server
tls-server
tls-auth /etc/openvpn/vpn-tun/keys/ta.key 0
tls-timeout 120
auth SHA1

cipher BF-CBC



server 192.168.255.0 255.255.255.0
ifconfig 192.168.255.1 192.168.255.2

push "route 192.168.1.0 255.255.255.0"

route 192.168.11.0 255.255.255.192 # подсеть clientname (см. п.8)

#если будут другие клиенты пишем здесь же роуты:
#route 192.168.2.0 255.255.255.0 #например

ca /etc/openvpn/vpn-tun/keys/ca.crt
cert /etc/openvpn/vpn-tun/keys/server.crt
key /etc/openvpn/vpn-tun/keys/server.key
dh /etc/openvpn/vpn-tun/keys/dh2048.pem

client-to-client
client-config-dir /etc/openvpn/vpn-tun/ccd
comp-lzo
persist-tun
persist-key
verb 3
keepalive 10 60
ifconfig-pool-persist ipp.txt # Тут будут храниться ip адреса клиентов

log-append /var/log/openvpn_tun.log
status /var/log/openvpn_status_tun.log

12. Теперь настроим iptables на сервере, добавим правила:

-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
-A FORWARD -i br0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o br0 -j ACCEPT

Если на самом сервере кроме OpenVpn находятся другие сервисы, к которым необходимо дать доступ во внутренней сети добавим правило:
-A INPUT -i tun0 -j ACCEPT
Если мучает паранойя уточним условия:
-A INPUT -i tun0 -p tcp -m multiport --dports ХХ,ХХХХ -j ACCEPT
если нужен UDP:
-A INPUT -i tun0 -p udp -m multiport --dports ХХ,ХХХХ -j ACCEPT
где XXX нужные порты.

13. Переходим клиент, создадим conf файл клиента :

nano /etc/openvpn/clientname_to_server.conf

remote ip_servera 1194
client
verb 5
dev tun0
proto udp
resolv-retry infinite
nobind

tls-client
tls-auth /etc/openvpn/ta.key 1
auth SHA1
cipher BF-CBC

remote-cert-tls server


persist-key
persist-tun
ca "/etc/openvpn/ca.crt"
cert "/etc/openvpn/clientname.crt"#см.п.8
key "/etc/openvpn/clientname.key"#см.п.8
comp-lzo
verb 4
mute 20
verb 3
#redirect-gateway
log-append /var/log/clientname_to_server.log#см.п.8


13. Любым удобным для Вас способом перемещаем сертификаты и ключ (ca.crt, clientname.crt, clientname.key, ta.key) с сервера на клиент, и помещаем их в /etc/openvpn. 

14. Настроим iptables на клиенте, добавим правила:

-A FORWARD -i br0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o br0 -j ACCEPT

Если нужен доступ к локальным ресурсам, расположенным на клиенте см.п. 11.


15. Рестартуем OpenVpn:
/etc/init.d/openvpn restart
и на клиенте и на сервере, и пробуем начинать пинговать хосты в подсетях. Если что-то не так - смотрим логи. Удачи.



вторник, 3 февраля 2015 г.

Collectd+Collectd Graph Panel+Lighttpd

До недавнего времени для мониторинга системы пользовался графиками MRTG, но установив Сollectd с Collectd Graph Panel-ю понял насколько последний инструмент гибче, удобнее и красивее.

1. Готовим почву - cтавим lighttpd и необходимые пакеты:
apt-get install lighttpd php5-cgi php5
2. Включаем поддержку выполнения cgi скриптов:
lighty-enable-mod fastcgi fastcgi-php
3.Рестарт lighttpd:
service lighttpd restart
4. Ставим collectd:
apt-get install collectd
5. Добавим поддержку git:
apt-get install git
6. Создаем копию git репозитория для установки Collectd Graph Panel:
cd /var/www/
git clone https://github.com/pommi/CGP.git
Теперь по адресу
http://192.168.Х.Х/CGP
должна появиться web-панель с графиками.
Графики можно маштабировать с помощью мыши.
7. Для уменьшения нагрузки на процессор включим рендеринг на стороне клиента:
nano /var/www/CGP/conf/config.php
Найдем строку
$CONFIG['graph_type'] = 'png';
и зменим ее на:
$CONFIG['graph_type'] = 'canvas';
8.Включим кэширование в плагине RDD-tools:
nano /etc/collectd/collectd.conf
и там расскомментируем и изменим строки:

DataDir "/var/lib/collectd/rrd"
CacheTimeout 300
CacheFlush 900


9. Все, можно перегрузить collectd:
service collectd restart
10.Включать и отключать, а также настраивать плагины можно в файле collectd.conf. Результат: