среда, 29 марта 2017 г.

Уведомления из Zabbix в Telegram

1. Создаем бота.
Идем к @BotFather
/start
/newbot
Получаем токен вида:
311825528:AAE3r8V7iaIiXzJY_s0-9brG6JMWbT126qB
Добавляем бота в список контактов в телеграме.

2. Узнаем свой TelegramID.
Идем к @MyTelegramID_bot
/start
Получаем ID вида:
281724313

пятница, 17 марта 2017 г.

Заметки по Docker

1. По умолчанию в образах докера CentOS отключена установка документации (man) для экономии места.
Это осуществляется записью в конфиге /etc/yum.conf:
tsflags=nodocs
Поэтому если хотим маны в образах CentOS, этот параметр нужно закомментировать или удалить.

2. В репозиториях CentOS/RHEL, Docker собран с поддержкой параметра --add-registry, что позволяет использовать вот такое в /etc/sysconfig/docker:
ADD_REGISTRY='--add-registry docker-registry:5000'
INSECURE_REGISTRY='--insecure-registry docker-registry:5000'
При таком раскладе, Docker может обращаться к приватному регистри без явного указания адреса, например вместо:
$ docker pull docker-registry:5000/someimage
можно прописать просто:
$ docker pull someimage

Если же Docker установлен из официального репозитория, то там параметра --add-registry нет и нужно всегда указывать явный адрес приватного регистри.

3. Интересная штука написанная на go: https://github.com/bcicen/ctop
Top для Docker-контейнеров.

4. Добавить алиас к образу:
# docker images
REPOSITORY             TAG      IMAGE ID  CREATED           SIZE
registry:5000/image latest  7cb574e42e5b  25 minutes ago    5.435 GB

# docker tag 7cb574e42e5b image2
# docker images
REPOSITORY             TAG      IMAGE ID  CREATED           SIZE
registry:5000/image latest  7cb574e42e5b  25 minutes ago    5.435 GB
image2              latest  7cb574e42e5b  25 minutes ago    5.435 GB

5. Перенос образа контейнера с одной ноды на другую:
# docker save -o <save image to path> <image name>
# docker load -i <path to image tar file>

6. Скопировать файл с хост-ноды в контейнер и наоборот:
# docker cp foo.txt mycontainer:/foo.txt
# docker cp mycontainer:/foo.txt foo.txt

7. Если используется DeviceMapper и вылезает ошибка "No space left on device", это значит, что образ размером более 10G. Фиксить можно так:
# systemctl stop docker
# rm -rf /var/lib/docker
# vim /etc/systemd/system/multi-user.target.wants/docker.service
...
--storage-opt dm.basesize=25G

# systemctl daemon-reload
# systemctl start docker

вторник, 7 марта 2017 г.

Проблема с разрешением имен в Ubuntu/Mint при использовании VPN

Существует в Ubuntu и дистрибутивах на его основе баг, при котором при использовании OpenVPN с NetworkManager локальный резолвер (dnsmasq) не может разрешить имена.
Проявляется это не во всех случаях.

Решением этой проблемы является выпилить dnsmasq из конфига NetworkManager (или закомментить строчку):
# grep dns /etc/NetworkManager/NetworkManager.conf
#dns=dnsmasq

# /etc/init.d/network-manager restart

Начиная с Ubuntu 17.04 эта проблема не должна проявляться, так как dnsmasq заменили на systemd-resolved.

среда, 1 марта 2017 г.

Мониторинг уязвимостей в используемом ПО из открытых источников

Идея была написать скрипт, который 1-2 раза в сутки ходит в какую-нибудь базу уязвимостей и смотрит появились ли за сегодня уязвимости в списке требуемого ПО.
Один из таких открытых источников является www.cvedetails.com в котором даже есть некое подобие API.

Решил я писать на питоне, просто потому что интересно было что-то на нем написать.
Получилось в принципе нормально, скрипт свою работу делает. Репозиторий тут: https://github.com/Amet13/vulncontrol там же и инструкция как это все запустить.

В случае обнаружения уведомлений скрипт умеет отправлять уведомление в телеграм.
По желанию можно его засунуть в мониторинг, например Nagios/Icinga2 или Zabbix.
Или просто добавить его в крон.

Есть возможность указания своей даты, если нужно например посмотреть какие уязвимости были в определенный день. Также можно фильтровать уязвимости по CVSS.

Статический анализатор кода flake8 немного помог мне оформить правильно код, т.к. на питоне пишу можно сказать впервые.
Также интересно было попробовать как с GitHub работает TravisCI, довольно удобная интересная штука для открытых проектов и не только.