SCROLL

Посты автора «jakonda»

Рассмотрим как выполнить установку из исходников Asterisk 16 на Debian 9 Stretch.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

 

Устанавливаем необходимые зависимости:

apt-get install linux-headers-amd64 gcc make autoconf libtool libical-dev pkg-config default-libmysqlclient-dev -y

 

Устанавливаем DAHDI, LibPRI, libSTRP

Скачиваем исходники (dahdi, libpri, libstrp, asterisk) и распаковываем их:

wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-16-current.tar.gz

tar -zxvf dahdi-linux-complete-current.tar.gz 
tar -zxvf libpri-current.tar.gz 
tar -zxvf v2.2.0.tar.gz 
tar -zxvf asterisk-16-current.tar.gz

Рассмотрим как установить систему видео наблюдения ZoneMinder 1.30.4 на Debian 9 Stretch.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

apt-get update && sudo apt-get upgrade -y

 

Устанавливаем необходимые зависимости:

apt-get install apache2 apache2-utils php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-gd mariadb-server vlc-plugin-base deb-multimedia-keyring -y

 

После установки зависимостей, выполним настройку безопасности MySQL:

mysql_secure_installation

 

Установка ZoneMinder

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

echo "deb http://www.deb-multimedia.org stretch main non-free" >> /etc/apt/sources.list
apt-get update

apt-get install zoneminder

В качестве памятки опишу как управлять конференц-комнатами XMPP-сервера ejabberd через консоль ejabberdctl.

 

Рассмотрю самые основные моменты, которые у меня часто возникают в работе с конференц-комнатами (создание, задание параметров комнаты, определение членства пользователя в комнате, удаление комнаты).

[stextbox id=’warning’]Все ниже описанные действия применялись на развернутом XMPP-сервере ejabberd 18.12.1 на Debian 9 Stretch по этой статье.[/stextbox]

 

В моем случае ejabberd-сервер работает от пользователя ejabberd, поэтому работать с консолью ejabberdctl необходимо через этого же пользователя.

 

Создадим комнату «general«, для сервиса MUC «conference.example.com» и домена «example.com»:

sudo -u ejabberd ejabberdctl create_room "general" "conference.example.com" "example.com"

 

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

sudo -u ejabberd ejabberdctl get_room_options "general" "conference.example.com"
title 
description 
allow_change_subj false
allow_query_users true
allow_private_messages true
allow_private_messages_from_visitors anyone
allow_visitor_status true
allow_visitor_nickchange false
public true
public_list true
persistent true
moderated true
captcha_protected false
members_by_default true
members_only true
allow_user_invites false
allow_subscription false
password_protected false
password 
anonymous false
presence_broadcast [moderator,participant,visitor]
allow_voice_requests true
voice_request_min_interval 1800
max_users 200
logging true
vcard 
vcard_xupdate undefined
captcha_whitelist {0,nil}
mam true
pubsub 
lang

Продолжаю свое знакомство с XMPP-сервером, на базе ejabberd и реализацию задачи по организации достойного корпоративного мессенджера.

 

Рассмотрим как интегрировать ejabberd с Active Directory на базе (Windows Server 2012 R2), в частности возможность входа на XMPP-сервер по доменным учетным данным, формирование списка контактов (ростера) на основе пользовательских данных с Active Directory, загрузка пользовательских сведений в vCard из Active Directory, а так же рассмотрим вариант настройки SSO (Single Sign On) авторизации в ejabberd.

 

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

  • XMPP-сервер ejabberd 18.12.1 на Debian 9 (установленный по этой статье).
  • Домен (example.com) развернут на Windows Server 2012 R2 (развернутый по этой статье).

 

Настройка домена

В конфигурационном файле (/etc/ejabberd/ejabberd.yml), указываем обслуживаемый виртуальный домен, в моем примере это example.com:

hosts:
  - "example.com"

 

Создание сертификата

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

openssl req -new -x509 -nodes -newkey rsa:1024 -days 1825 -keyout private.key -out ejabberd.pem


## Common Name (e.g. server FQDN or YOUR name) []:example.com

[stextbox id=’warning’]Важно в процессе генерации сертификата, в поле Common Name, указать FQDN домена, для которого генерируется сертификат.[/stextbox]

Появилась потребность в корпоративном Jabber-сервере (XMPP). Для реализации задачи выбрал ejabberd, по заявлениям разработчика он легкий, быстрый и надежный как скала.

Разберем как установить систему управления проектами Redmine 4.0.1 на Debian 9 Stretch.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

sudo apt-get update && sudo apt-get upgrade -y

 

Устанавливаем необходимые зависимости:

sudo apt-get install apache2 apache2-dev libapr1-dev libaprutil1-dev libapache2-mpm-itk mysql-server curl libapache2-mod-passenger default-libmysqlclient-dev libcurl4-openssl-dev ruby-rmagick libmagickwand-dev gnupg2 dirmngr -y

 

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

sudo mysql_secure_installation

[stextbox id=’warning’]В ходе выполнения команды, будет заданы вопросы (смены пароля root, удаления анонимных учетных записей, отключения удаленного доступа для root, удаления тестовой базы данных, сброса привилегий)[/stextbox]

Сейчас в качестве основной серверной ОС использую Debian 9 Stretch и в связи с этим планомерно перевожу свои действующие сервисы с Debian 8 Jessie, на Debian 9 Stretch.

 

Поэтому рассмотрим, как собрать из исходников последнюю (на момент написания статьи) версию Subversion 1.11.1, с поддержкой WebDAV.

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

 

Устанавливаем необходимые зависимости:

apt-get install gcc checkinstall libaprutil1 libaprutil1-dev zlib1g zlib1g-dev liblz4-1 liblz4-dev libserf-1-1 libserf-dev libutf8proc2 libutf8proc-dev apache2 apache2-dev apache2-utils -y

Столкнулся с ситуацией когда понадобилось в безопасном режиме Windows, удалить программу, установленную MSI-установщиком.

 

При попытке удалить, получил ошибку «Не удалось получить доступ к службе Windows Installer».

 

Если попытаться запустить службу Windows Installer, через встроенную оснастку, то увидим ошибку «Эта служба не запускается в безопасном режиме (Safe Mode)».

 

Понадобилось загрузится в безопасном режиме на Windows 10, но сделать это оказалось не тривиальной задачей. В Windows XP и Windows 7 можно было нажать клавишу F8 при запуске, чтобы получить доступ к опции загрузки в безопасном режиме. Но в Windows 10 не получится просто нажать F8, когда ваш компьютер загружается, чтобы увидеть расширенные параметры запуска, такие как безопасный режим и т.д.

 

Механика загрузки в безопасном режиме изменилась в Windows 10. Рассмотрим различные способы загрузки в безопасном режиме в Windows 10.

 

Использование утилиты настройки системы (msconfig)

Если Windows может запускаться в обычном режиме, то можно получить доступ к безопасному режиму загрузки из опций конфигурации системы. Запускаем утилиту конфигурации системы, нажав Win + R, при запуске введите msconfig и нажмите клавишу ввода.

 

В окне «Конфигурация системы», щелкните вкладку загрузки и выберите безопасную загрузку:

 

При написании скрипта на PHP, понадобилось использовать PDO подключение к MS SQL Server.

 

Решается все довольно просто, установкой драйвера PDO_DBLIB, который реализует доступ к базам данных Microsoft SQL Server с использованием библиотеки FreeTDS.

 

Все ниже действия производились на Debian 9 Stretch, с установленной версией PHP 7.2. Как установить PHP 7.2 на Debian 9 Stretch, можно посмотреть из этой статьи.

 

Устанавливаем необходимый модуль:

apt-get install php7.2-sybase

 

В установленных модулях PHP, установленный драйвер будет именоваться pdo_dblib. Для подключения к базе данных MSSQL, нужно использовать dblib, пример:

$dbh = new PDO ("dblib:host=sever;dbname=dbname","username","password");

При переходе на использование Debian 9 Stretch, обнаружил что имена сетевых интерфейсов имеют странный вид, вместо привычных eth0.. я вижу ens32:

ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:50:56:92:95:88 brd ff:ff:ff:ff:ff:ff
    inet 10.10.16.22/8 brd 10.255.255.255 scope global ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe92:9588/64 scope link
       valid_lft forever preferred_lft forever

 

Как оказалось что в Debian 9 Stretch ввели новый стандарт схемы именования сетевых интерфейсов. Новый метод использует предоставляемый BIOS указатель номеров, а затем пытается использовать номера слотов PCI-карт, что приводит к созданию имён вида ens0 или enp1s1 (ethernet), а также wlp3s0 (wlan).

Довольно часто приходится разворачивать серверные системы на базе ОС семейства Debian и одним из основных и первоначальных пунктов в настройке системы, является настройка ее сетевой части.

 

Рассмотрим как настраивать сеть в Debian 9 Stretch. Настройка сети выполняется в файле /etc/network/interfaces, по-умолчанию в нем сетевые интерфейсы настроены на работу с DHCP:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens32
iface ens32 inet dhcp

[stextbox id=’warning’]где lo — локальный интерфейс (присваиваем локальный адрес 127.0.0.1), а ens32 — это сетевой интерфейс (присваивается сетевой адрес по протоколу DHCP).[/stextbox]

Продолжаем рассматривать способы защиты веб-сервера, от потенциальных угроз. На этот раз рассмотрим такой инструмент как Fail2ban.

 

Принцип работы Fail2ban, заключается в анализе лог-файлов и реагировании на определенные события которые определены в настройках Fail2ban.

 

Рассмотрим как установить Fail2ban и настроить на защиту веб-сервера (Apache), развернутом на Debian 9 Stretch.

 

Устанавливаем пакет fail2ban:

apt-get install fail2ban -y

 

Конфигурационный файл настройки правил /etc/fail2ban/jail.conf, разработчики не рекомендуют изменять, поэтому создадим его локальную копию, из которого будут в приоритете считываться правила:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Давно у меня зрела идея, создания какого либо удобного инструмента для получения различного рода информации с имеющегося в работе почтового сервера, на базе MS Exchange 2010 SP3.

 

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

 

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

 

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

 

Приложение для связи с почтовым сервером и получения от него какой либо информации от него, используется оболочка powershell. Полученная информация обрабатывается и формируется в табличном виде, для возможности дальнейшей работы с ней (тут можно уже фантазировать над всевозможным функционалом).

Используя в работе голый Asterisk, рано или поздно становится недостаточно стандартных инструментов, для решения нужных задач. В этом случае нам поможет интерфейс AGI, который позволяет Asterisk взаимодействовать со сторонними приложениями, к примеру с приложением написанным на PHP.

 

Рассмотрим как настроить взаимодействие Asterisk с классом phpagi, посредством интерфейса AGI (Asterisk Gateway Interface).

[stextbox id=’info’]Все ниже действия будут производится на Debian 8 JessieAsterisk 13 и версией PHP — 5.6. Хочу обратить внимание что ниже описанное так же будет применимо к FreePBX[/stextbox]

 

Настройка Asterisk

Для подключения класса phpagi, в конфигурационный файл (/etc/asterisk/manager.conf), добавляем параметры подключения его (прим. astphp):

Рассмотрим такую технологию как BLF (Busy Lamp Field) — индикатор занятости линии.

 

Имея телефонный аппарат с поддержкой функции BLF (Busy Lamp Field) и развернутый Asterisk 13, можно реализовать функцию контроля абонентов в реальном времени (занят/свободен) и быстрый вызов абонента, нажатием одной клавиши на телефонном аппарате.

 

Выполним настройку поддержки функции BFL в АТС Asterisk 13.

 

В файле описания плана набора extentions.conf, добавим правило обработки BFL:

; Busy Lamp Functionality
[BLF]
exten => _XXXX,hint,SIP/${EXTEN}

Правила для входящих писем в MS Outlook помогают пользователям организовывать свои почтовые ящики. Обычно пользователи сами для себя создают необходимые правила обработки входящей почты, через приложение MS Outlook, но! системный администратор может так же управлять правилами обработки почты, в пользовательских почтовых ящиках.

В работе имеется почтовый сервер на базе MS Exchange 2010 SP3. Необходимо в пользовательских почтовых ящиках, в корневой папке (Входящие), создать пользовательскую папку.

 

Задачу будем решать при помощи Microsoft Exchange Web Services Managed API 2.0 и скрипта написанном на PowerShell.

 

Скачиваем с оф. сайта Microsoft Exchange Web Services Managed API 2.0 . Устанавливаем на сервер, на котором развернут почтовый сервер Exchange.

 

Теперь необходимо назначить роль «ApplicationImpersonation«, для пользователя от имени которого будет выполнятся подключение к EWS. Выполним команду в EMS (Exchange Managment Shell):

New-managementroleassignment –Role "ApplicationImpersonation" –user administrator

В один прекрасный момент заметил что почта прекратила ходить, причиной тому стала нехватка свободного места на локальном диске, на котором располагаются почтовые базы данных Exchange Server:

 

Каталоги в которых располагаются базы данных Exchange Server, были заполнены отработанными лог-файлами/журналами транзакций:

В работе имеется NAS — QNAP TS-459U+, который я решил использовать как хранилище резервных копий, тех или иных систем.