2-факторная авторизация средствами nginx

Привет, друзья. Сегодня я хочу поведать о том, как я запилил 2-х факторную авторизацию на любое количество ресурсов. Итак, у нас есть некоторые web-ресурсы, доступ к которым должен быть ограничен списком белых IP-адресов и подсетей. Хороший пример это билд сервера или wiki. У админов не всегда есть возможность быстро обновлять ПО на серваках. Поэтому хотелось бы прикрыть к таким ресурсам доступ некой заглушкой.

Именно для этих целей мы с вами запилим динамический список «авторизованных IP-адресов» с помощью nginx. Конечно, реализовать функционал вы можете своими средствами, ухватив основную идею. Общий алгоритм для IP-адресов которые не попадают в список белых IP:

  1. nginx смотрит, что IP, с которого пытаются обратиться к «закрытому» ресурсу не входит в список авторизованных. После чего делается 302 редирект на сайт авторизации. В моем случае это authme.domain.com.
  2. После перехода открывается простая форма с предложением ввести email адрес.
  3. Проверяется что email валидный. В моем случае, я проверяю что email принадлежит зоне domain.com.
  4. Если email валидный, генерируется ключ(с привязкой к IP с которого пришел запрос), который сразу высылается ссылкой на почту.
  5. Пользователь проверяет почту и переходит по ссылке.
  6. authme.domain.com проверяет, что ключ и IP адрес валидные. После чего добавляет в конфигурационный файл nginx IP-адрес в список белых адресов. После чего делается nginx reload, что тот перепрочитал конфигурационные файлы.

Надеюсь основная идея вам ясна. Подходит это вам или нет — решать вам. По ссылке вы найдете docker контейнеры с приложением на nodejs и nginx. Ну и там же есть пример использования.

https://github.com/voiplab/docker

 

Чистим историю в базе данных zabbix

Ни для кого не секрет , что со временем база данных zabbix увеличивается. Поэтому покажу вам как ее почистить в базе. Итак, подключаемся любым удобным клиентом к базе mysql и далее по списку. Читать далее

Установка второго агента TeamCity на сервер

Иногда более продуктивно установить на один сервер несколько агентов TC. Для этого:

  1. Качаем инсталлятор и запускаем установку. В процессе устновки нужно изменить путь(c:\buildagent2\) и снять галку с поля «установить сервис». В окне настройки поменять ownPort на другой.
  2. Редактируем файл c:\buildagent2\launcher\conf\wrapper.conf. Скроллим вниз и меняем имя сервиса, описание и тд.
  3. Переходим в каталог c:\buildagent2\launcher и выполняем в консоли команду ..\bin\service.install.bat от администратора.
  4. Запускаем второго агента
  5. Профит

TeamCity — установка JAVA 64 bit

Остановить TeamCity Server и Agent

Скачать последнюю версию JRE и установить. Скопировать файлы из C:\Program Files\Java\jre1.8.0_111 в C:\TeamCity\jre

Установить переменную окружения TEAMCITY_SERVER_MEM_OPTS со значением -Xmx4g -XX:MaxPermSize=270m -XX:ReservedCodeCacheSize=350m

Перезапустить сервис.

Конвертирование сертификатов (PEM/P7B/PFX/DER)

Форматы сертификатов можно менять при помощи команд OpenSSL или посредством инструментов Конвертор SSL. Есть еще отличный online-конвертер.

Ниже указаны наиболее употребляемые комманды:

I. Конвертирование файлов PEM
PEM в DER
openssl x509 -outform der -in certificate.pem -out certificate.der
PEM в P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
PEM в PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

II. Конвертирование файлов P7B
P7B в PEM openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
P7B в PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer

III. Конвертирование файлов PFX
PFX в PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes

IV. Конвертирование файлов DER
DER в PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem

Источник: https://ssl4less.ru/faq/ehniceskie-voprosy/onvertirovanie-sertifikatov-pem-p7b-pfx-der.html

AutoMerge Script for Bitbucket.org

В рамках автоматизации одного проекта написал скрипт на PowerShell, который мержит ветки используя bitbucket API. Огромный плюс использования этого скрипта для автоматического мержа в том, что вам не нужно вытягивать исходники. Все делается на стороне bitbucket. Не все идеально, где то можно оптимизировать, но он работает =)

https://github.com/voiplab/Misc/blob/master/RemoteMergeBitbucket.ps1

Нагрузочное тестирование Elastix / NEOPbx / FreePBX / Asterisk

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

$ wget https://github.com/SIPp/sipp/archive/3.4.0.tar.gz
$ tar xzfv ./3.4.0.tar.gz
$ sudo su
# cd sipp-3.4.0
# ./configure
# make
# make install

После успешной установки переходим к конфигурированию Elastix / NEOPbx / FreePBX. Я покажу пример подготовки к тестированию через WEB-интерфейс. Итак, первое, что необходимо сделать — это создать номер(Extension).  Если у вас уже есть существующий номер, который вы используйте, то можно пропустить этот шаг. Переходим во вкладку PBX > PBX Configuration > Extensions и жмем кнопку Submit, чтобы создать номер. Он нам понадобится для того, чтобы проверить что прохождение dialplan-а проходит как запланировано.

Далее необходимо создать номер

sipp 192.168.1.53 -s 8000 -i 192.168.1.67 -d 1h -l 50 -aa -mi 192.168.1.67 -rtp_echo -nd -r 5

192.168.1.53 — сервер Elastix / NEOPbx / FreePBX;
-s 8000 — Указывает номер который будет вызван. Может быть числом или текстом. (Значение по умолчанию — service);
-i 192.168.1.67 — Локальный IP адрес. Этот адрес будет использован в SIP сообщениях в качестве адреса источника сообщений. (По умолчанию — 127.0.0.1);
-d 1h — Устанавливает длительность звонков. В данном случае звонки будут длиться 2 часа. (По умолчанию — 1 секунда);
-l 50 — Ограничивает максимальное количество одновременных звонков;
-aa — Включает автоматические ответы 200 OK на сообщения INFO, UPDATE и NOTIFY;
-mi 192.168.1.67 — Устанавливает локальный IP для RTP;
-rtp_echo — Включает режим RTP эха. Все RTP пакеты полученные от удалённой стороны — отправляются обратно;
-nd — Отключает стандартную обработку неожиданных ситуаций — sipp будет прерывать звонки в случае получения неправильных SIP сообщений;
-r 5 — Устанавливает максимальную «скорость звонков» (CPS) в данном случае — не более 5 звонков в секунду.

SMS2Mail Forwader

Screenshot_2015-10-22-22-36-13

Сидел я вечером, пил чай с баранками и решил себя попробовать в роли Android Developer’а. Получилось у меня или нет — судить вам.

sms3-03

Итак, задача написать приложение которое пересылает все входящик СМС на указанный почтовый ящик. Естественно, основной функциаонал должна делать служба в фоне. А именно отслеживать входящие СМС и отправлять их на почтовый адрес. Ну и нужно было чтобы служба эта запускалась автоматически при включении/перезагрузке телефона.

Начал я с придумывания дизайна. Основное требования — максимальный минимализм =D. В результате получился вот такой макет, который вы видите слева.

Покодив пару вечеров получилась вот такая незамысловатая программа, скачать которую можно из Play Market: SMS2Mail Forwarder.

Кстати, хотел бы поблагодарить своего дизайнера Оксану Котибенко, которая вдохновившись идеей «для народа все должно быть Free«, нарисовала мне замечательное лого для приложения