пятница, 30 декабря 2016 г.

Осваиваем letsencrypt

Начать лучше отсюда
https://certbot.eff.org/
и можно заглянуть сюда
https://certbot.eff.org/docs/

Там же есть оф клиент, которым можно сделать запрос. При этом если для centos 7 прямо в epel лежит certbot, то под 6 надо качать скрипт-установщик.

Также есть аналоги типа dehydrated, пример запуска тут:
https://habrahabr.ru/post/304174/
Особенность - из зависимостей только curl и openssl, тогда как оф версия тянет два десятка питоновых либ.

Принцип работы - указываем домен(ы), которые надо подписать, и куда класть проверочный файл, путь будет вида /.well-known/acme-challenge/(длинная строка)
Для апача прямо на сайте есть примеры конфигурации и скрипт умеет "донастроить" апач, также есть режим standalone, когда запустится веб сервер с нужным доменом. Несовместимо с другими серверами на порту 80, и запрашиваемый домен должен вести на тот же сервер, где и запустили утилиту.
С nginx нужно чуть больше работы - или указывать --webroot -w (путь к root проекта), или добавить location /.well-known в нужное место.
Итог искать в /etc/letsencrypt/live/ (с оф клиентом)

Также есть вариант подтверждения через dns, есть в документации.

В дальнейшем запускаем с опцией renew, и оно обновит все сертификаты. Но nginx перезапускать через -s reload недостаточно, надо service nginx reload, а иногда и вообще рестарт.

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

rtpengine + Centos 7

В продолжение http://dragonflybsd.blogspot.ru/2016/04/rtpengine-centos-6.html

Отличий совсем немного, прежде всего - нужен .service файл, получить можно так
cd /usr/local/src
git clone https://github.com/etamme/federated-sip.git
cd federated-sip/scripts
cp rtpengine.sysconfig /etc/sysconfig/rtpengine
cp rtpengine.service /etc/systemd/system/

https://github.com/etamme/federated-sip/wiki/compile-and-set-up-rtpengine-on-centos-7
И там же, как собрать ядерный модуль под 7.

четверг, 22 декабря 2016 г.

Используем кэш для pip, npm, bower

Когда может понадобиться кэш? Например, когда часто пересобираем разные окружения или когда машины накатываются в докере итд. И каждый раз оно будет заново тянуть исходники, особенно актуально для различных докеров, а также сборкой rpmbuild с "чистым" BUILD(ROOT).

pip

cat >> ~/.pip/pip.conf << EOF
[global]
download_cache = ~/.cache/pip
EOF
mkdir -p ~/.cache/pip

Для более старых версий есть опция --download-cache <dir>, которую надо указать дополнительно -  в новых она активна по умолчанию. Отключать через --no-cache-dir

Также есть вариант через промежуточный wheel
pip wheel --wheel-dir=/tmp/wheelhouse cssselect==0.9.1
pip install /tmp/wheelhouse/cssselect-0.9.1-py2-none-any.whl

И попадались упоминания переменной PIP_DOWNLOAD_CACHE

npm

npm config set cache ~/.cache/npm
mkdir -p ~/.cache/npm
mv ~/.npm/* ~/.cache/npm/
rm -rf ~/.npm/


bower
cat >> ~/.bowerrc << EOF
{
  "cache": "$HOME/.cache/bower/"
}
EOF
mkdir -p ~/.cache/bower

links
https://pip.pypa.io/en/latest/reference/pip_install/#caching
https://blog.samat.org/2014/12/01/setting-up-package-caching-for-pip-and-npm/

среда, 14 декабря 2016 г.

CentOS 7.2: Установка и настройка

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

centos 7: подключаем автодополнение (autocompletion)

Порой так удобно - нажать таб и посмотреть параметры программы, но в minimal установке centos это не работает и показывает листинг файлов. А исправить это легко:
yum -y install bash-completion

И начинают работать штуки вида
systemctl status ht<tab>
firewall-cmd --get-act<tab>
итд.

Если что - файлы с этими параметрами лежат тут
/usr/share/bash-completion/completions/

Можно и без пакета некоторые файлы подключить напрямую так
source /usr/share/bash-completion/completions/systemctl

Только многое не заработает, ругаясь так:
bash: _init_completion: command not found
(Эта функция - часть пакета bash-completion)

Ну и мелкая полезность: как посмотреть, какой пакет поставил туда свои файлы
rpm -qf /usr/share/bash-completion/completions/*

пятница, 2 декабря 2016 г.

ubuntu/mint: IOError: [Errno 2] No such file or directory: '/usr/share/libvirt/cpu_map.xml'

IOError: [Errno 2] No such file or directory: '/usr/share/libvirt/cpu_map.xml'
при попытке подключиться virt-manager к другому хосту.
$ dpkg --search /usr/share/libvirt/cpu_map.xml
libvirt-bin: /usr/share/libvirt/cpu_map.xml

Ставить libvirt-bin

вторник, 29 ноября 2016 г.

CentOS 7: включаем core dump

Обычно достаточно модифицировать service файл, добавив
[Service]
LimitCORE=infinity

или глобально, в /etc/systemd/system.conf
DefaultLimitCORE=infinity

Иногда требуется выставить
kernel.core_uses_pid = 1
fs.suid_dumpable = 2

Обычно этого достаточно.

пятница, 25 ноября 2016 г.

CentOS 7 и сокет-файлы

Суть в том, что раньше многие писали сокет файлы в /tmp, а сейчас например при запуске сервиса uwsgi + nginx с сокетом в /tmp при попытке обратиться можно поймать
(2: No such file or directory) while connecting to upstream
и долго ломать голову, что же не так.

Это systemd security feature, корни примерно тут
[Service]
PrivateTmp=true
И если подумать, это правильно. Учимся использовать /run (в центос 7 оно же /var/run в виде симлинка на ../run)

Не путаем с permission denied, что обычно из-за прав на сокет файл или каталог где он лежит. ИЛИ - из-за selinux, проверить getenforce, который входит в пакет libselinux-utils. Если Enforced - переводим в permissive и проверяем снова
setenforce permissive

Не забываем потом перенастроить selinux или отключить его.
http://stackoverflow.com/questions/26334526/nginx-cant-access-a-uwsgi-unix-socket-on-centos-7

вторник, 15 ноября 2016 г.

rpmbuild: отключаем проверку зависимостей

Иногда собираем проект, где внутри свои либы... А при установке эти либы хочет увидеть на стандартных местах.
Отключить можно так:
1) AutoReqProv: no в спек или в ~/.rpmmacros
2) %define %__find_requires         %{nil}
или %define __find_requires         /bin/true


По аналогии можно отключить авто provides:
%__find_provides   /bin/true
или Autoprov: 0

линки:
http://rpm5.org/docs/max-rpm.html#s2-rpm-depend-autoreqprov
http://rpm.org/max-rpm-snapshot/s1-rpm-depend-auto-depend.html

понедельник, 17 октября 2016 г.

zabbix и Linux template: нормальный учёт памяти

Штатно  в linux шаблоне есть триггер Lack of available memory on server {HOST.NAME} на параметр {Template OS Linux:vm.memory.size[available].last(0)}. Проблема в том, что в таком виде триггер бесполезен чуть менее чем совсем, и особенно с учётом штатного десятка мегабайт. Тем более, у разных серверов будет разное количество памяти и разные границы. Да, можно зайти в настройки хоста и поправить триггер, но это совсем через одно место.
К счастью, есть параметр, показывающий свободную память... в процентах. Куда логичнее абсолютного значения, не правда ли? И отличие всего в 1 букву: оно pavailable
Так что идём в Items, клонируем старый айтем, правим ему ключик и имя, повторяем в Triggers. Можно повторить для другого уровня с другой важностью, например 10 и 20 - average и warning.
Ну и почитать про этот параметр
https://www.zabbix.com/documentation/2.4/ru/manual/appendix/items/vm.memory.size_params

пятница, 7 октября 2016 г.

ipset как аналог address lists микротика

Одно из частых применений address lists - "временные" записи, в том числе для неудачных попыток подключения и временных банов. Или наоборот, "полезных" машин, для port knocking.
Для этого у ipset есть опция timeout. А дальше как обычно, ALLOW|DROP

И пример доки
https://habrahabr.ru/post/108691/

вторник, 9 августа 2016 г.

python: Собираем свой пакет из pip версии

Зачастую в пакетах лежит нужная библиотека, но отставшая от нужной версии года так на 3-4. Или вообще доступная только в pip.
Самый простой вариант это использовать библиотеку из pip. К сожалению, у pip нет "собранных" версий, поэтому на хосте тогда нужен компилятор, что многим неприемлемо для "боевых" сред. И в целом это разумно.
Хороший выход - используем ноду для сборки и собираем там virtualenv с нужными пакетами. А потом итог оборачиваем в пакет (пишем спеку). Также это может быть докер, но опять же - туда нужен компилятор... И опять возвращаемся к virtualenv. Впрочем, для простых либ и единообразной среды достаточно скопировать нужные файлы в SOURCES и раскидать их по местам установщиком пакета, более сложные либы лучше пакетировать раздельно. Если уже есть такая же старая либа --  всё просто, качаем .src.rpm, правим .spec под новую версию, подкладываем архив с новыми исходниками, собираем.
А может быть, что за основу взять нечего... Тогда можно взять например python-pika, скопировать его spec и начать правки.
Нужно скачать архив нужной версии, для примера сделаем пакет для couchbase. Работаем от обычного пользователя, который будет заниматься сборкой

четверг, 14 июля 2016 г.

debian 8, apache, php: почта ходит только от рута

Довелось настраивать debian 8 + apache 2.4 (ITK) + php, штатный почтовик exim (и сразу - не забываем сказать dpkg-reconfigure exim4-config и выставить режим internet site), а дальше - есть скрипт-мейлер, от рута из консоли mail() возвращает true, а ровно оно же но через сайт отдаёт false. При этом в paniclog появляется строка
 unable to set gid=1000 or uid=0 (euid=0): forcing real = effective
По данной строке уже гуглится проблема и решение:
<IfModule mpm_itk_module>
LimitUIDRange 0 6000
LimitGIDRange 0 6000
</IfModule>

ну или так
echo "LimitGIDRange 0 2000" >> /etc/apache2/mods-available/mpm_prefork.conf
echo "LimitUIDRange 0 2000" >> /etc/apache2/mods-available/mpm_prefork.conf
service apache2 restart
(только с гидом не работает, надо uid+gid)

Кто-то набыдлокодил и выпустил это в мир, только непонятно кто именно.

Плюс кому-то также в exim надо вписать 
disable_ipv6 = true

И опционально в /etc/php5/apache/php.ini найти sendmail_path и выставить
sendmail_path = "/usr/sbin/exim4 -ti"

И немного доков

пятница, 17 июня 2016 г.

couchbase: сброс пароля пользователя Administrator

Можно через cli
./couchbase-cli cluster-init -c localhost:8091 --user=Administrator --password=123 --cluster-init-username=Administrator --cluster-init-password=god

Но есть другой штатный способ, проще
/opt/couchbase/bin/cbreset_password 127.0.0.1:8091

И внимание на вопрос:
Do you really want to do it? (yes/no)
Тут надо отвечать не y, а полностью yes, иначе просто молча выйдет. А должно быть так:

Do you really want to do it? (yes/no)yes
Resetting administrative password...
Password for user Administrator was successfully replaced.

четверг, 16 июня 2016 г.

nginx gzip основные content-type

gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

среда, 11 мая 2016 г.

rpmbuild: *** ERROR: No build ID note found in ...

Лечение:
1) добавить в сборку node-id
--buil-id
Если не помогло:
2) отключить сборку debuginfo
a) %global _missing_build_ids_terminate_build 0
б) %global debug_package %{nil}
в) попробовать удалить "проблемные" файлы

пятница, 6 мая 2016 г.

Собираем google V8 под centos 6

Почти все действия проводим от простого пользователя, незачем зря портить систему. И желательно на отдельном билд-сервере.

V8 is Google's open source high-performance JavaScript engine, written in C++ ... V8 can run standalone, or can be embedded into any C++ application.

centos 6: готовим lsb_release

Штатно нет команды lsb_release. Часть информации можно получить через
cat /etc/*-release
но некоторое ПО хочет именно эту команду.

yum provides */lsb_release
и как вариант
yum install redhat-lsb-core

centos 6: ставим gcc 4.9.2

yum install centos-release-scl-rh
yum install devtoolset-3-gcc devtoolset-3-gcc-c++

И для активации
scl enable devtoolset-3 bash

вторник, 26 апреля 2016 г.

Scapy

http://scapy.net/

Scapy — сетевая утилита написанная на языке Python, которая позволяет посылать, просматривать и анализировать сетевые пакеты. В отличии от многих других утилит, утилита Scapy не ограничена только теми протоколами, пакеты которых она может генерировать. Фактически, она позволяет создавать любые пакеты и комбинировать атаки различных типов.
С помощью Scapy легко осуществлять такие процедуры, как:
сканирование,
трассировку маршрута,
проверку хоста (probing),
юнит-тестирование каких-либо сетевых функций,
исследование сети и различные виды атак.
С помощью Scapy можно заменить:
hping,
arpspoof,
arp-sk,
arping,
p0f
и частично
Nmap,
tcpdump,
tshark.

http://xgu.ru/wiki/Scapy

И очень много примеров тут
https://habrahabr.ru/post/249563/

четверг, 21 апреля 2016 г.

Смотрим и чистим таблицу conntrack

Иногда бывает так, что что-то сбивается в коннтрак таблицах, из недавнего: поменяли роутинг для одной сети, которая доступна напрямую, но ранее ходила через default gateway, соответственно внешний айпи стал другой. С TCP это не проблема, сессии сами отвалятся, а вот с UDP (та же телефония) будут проблемы. Совсем простое решение - ребутнуть шлюз, чуть сложнее - на проблемных телефонах поменять src port, это создаст новые правила в conntrack. Но мы попытаемся решить более цивилизованно.

вторник, 19 апреля 2016 г.

rtpengine + Centos 6

Достаточно интересный rtp proxy
https://github.com/sipwise/rtpengine

Инструкция под centos/redhat тут:
https://github.com/sipwise/rtpengine/blob/master/el/README.el.md

но она странная, поэтому соберём свою версию.

Enabling automatic updates in Centos 6|7 and Red Hat 6|7

http://linuxaria.com/pills/enabling-automatic-updates-in-centos-6-and-red-hat-6
http://linuxaria.com/howto/enabling-automatic-updates-in-centos-7-and-rhel-7

В двух словах -- ставим yum-cron, правим конфиги и активируем сервис.
Да, в 6 настройки минимальны - только скачать или поставить, да список exclude, а вот в 7 настроек куда больше.

понедельник, 14 марта 2016 г.

ставим zabbix свежих версий в ubuntu

Начинать отсюда:
http://www.zabbix.com/download.php

Версия 2.4:
Свежая убунту это trusty (14.04 LTS)
Можно скачать нужные пакеты, перейдя сюда:
http://repo.zabbix.com/zabbix/2.4/ubuntu/pool/main/z/zabbix/

можно подняться на уровень выше и перейти в zabbix-release, там будет деб-файл для установки репы. Или сразу скачать так:
wget http://repo.zabbix.com/zabbix/2.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.4-1+trusty_all.deb
dpkg -i zabbix*

Для 3.0 аналогично:
deb файлы:
http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix/
релиз-файл:
http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-1+trusty_all.deb