====== Oxidized установка и настройка ======
Сайт: https://github.com/ytti/oxidized/
Небольшая но очень полезная программа для централизованного резервного копирования конфигурационных файлов сетевого оборудования. Так же, что очень полезно, умеет отображать изменения в настройках - это позволяет быстро понять что именно изменялось.
В данном примере показана настройка для бэкапа Mikrotik, но вообще Oxidized поддерживает более 130 типов устройств.
===== Установка =====
Установка на Ubuntu 18.04
Убедимся что репозиторий universe подключен:
add-apt-repository universe
Устанавливаем зависимости:
apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev libicu-dev zlib1g-dev g++
Устанавливаем gems (если не нужно ставить какие-то части, отредактируйте строку):
gem install oxidized oxidized-script oxidized-web
Лучше всего хранить конфигурации в Git, поэтому ставим его:
apt install git
===== Создаем пользователя =====
Процесс желательно запускать под отдельным пользователем, создаем его:
useradd -m oxidized
Настраиваем git:
git config --global user.name "oxidized"
git config --global user.email "oxidized@MYDOMAIN.ru"
git init oxidized.git
Из-под пользователя запускаем программу первый раз чтобы создались необходимые каталоги и файл конфигурации:
su - oxidized
oxidized
Прерываем работу нажатием Ctrl+c
===== Настраиваем конфигурационный файл =====
Пример файла конфигурации, находится в /home/oxidized/.config/oxidized/:
---
username: oxidized
password: $ecretP@$$Word
model: routeros
resolve_dns: true
interval: 3600
use_syslog: false
debug: false
threads: 30
timeout: 140
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 127.0.0.1:8888
next_adds_job: false
remove_secret: true
vars: {}
groups: {}
models: {}
pid: "/home/oxidized/.config/oxidized/pid"
log: "/home/oxidized/.config/oxidized/log"
crash:
directory: "/home/oxidized/.config/oxidized/crashes"
hostnames: false
stats:
history_size: 10
input:
default: ssh
debug: false
ssh:
secure: false
ftp:
passive: true
utf8_encoded: true
output:
default: git
git:
user: oxidized
email: oxidized@MYDOMAIN.ru
repo: "/home/oxidized/.config/oxidized/devices.git"
source:
default: csv
csv:
file: "/home/oxidized/.config/oxidized/router.db"
delimiter: !ruby/regexp /:/
map:
name: 0
model: 1
ip: 2
port: 3
username: 4
password: 5
gpg: false
model_map:
juniper: junos
cisco: ios
Описание наиболее важных переменных:
* username: oxidized - имя пользователя по умолчанию, под которым Oxidized бует подключаться к устройствам
* password: $ecretP@$$Word - пароль по умолчанию
* model: routeros - модель устройства по умолчнию
* interval: 3600 - интервал создания бэкапов в секундах
* timeout: 140 - тайм-аут подключения (по умолчанию 20), если есть задержки в сети - лучше увеличить
* remove_secret: true - удаляет секреты (ключи, пароли и прочее), подробнее для каждой из железок тут: https://github.com/ytti/oxidized/tree/master/lib/oxidized/model
* rest: 127.0.0.1:8888 - адрес и порт веб-сервиса, желательно так и оставить
* в секции input: значение default: ssh лучше исправить убрав telnet, т.к. это небезопасно
* в секции output: сохраняем все в git -> default: git
* в секции source: файл с данными о оборудовании default: csv и далее путь до него, разделитель, назначение полей
Подробности директив можно найти тут: https://www.rubydoc.info/gems/oxidized/0.28.0 (проверьте версию программы!)
И тут много полезной информации: https://github.com/ytti/oxidized/blob/master/docs/Configuration.md
===== Файл с оборудованием =====
Создаем и редактируем файл: /home/oxidized/.config/oxidized/router.db
mikrotik01:routeros:10.10.10.1
mikrotik02:routeros:10.10.10.10:22:test:$ecretP@$$word
первая строка - наименование, тип оборудования, IP-адрес
вторая строка - наименование, тип оборудования, IP-адрес, порт, логин, пароль
Для первого устройства будут использоваться логин и пароль по умолчанию, прописанные в файле config
===== Настройка службы =====
Облегчим жизнь копированием файла управлением службы и включением автозапуска:
sudo cp /var/lib/gems/2.5.0/gems/oxidized-0.28.0/extra/oxidized.service /lib/systemd/system/
sudo cp /var/lib/gems/2.5.0/gems/oxidized-0.28.0/extra/oxidized.init.d /etc/init.d/oxidized
sudo systemctl enable oxidized.service
sudo systemctl start oxidized
Готово, можно запускать службу, проверить ее работу
===== Авторизация в браузере =====
По умолчанию Oxidized не имеет никакой авторизации, что позволяет подключаться к нему всем желающим.
Исправить это можно с помощью Reverse-proxy
==== Nginx ====
Устанавливаем:
apt install nginx
Копируем файл настроек:
sudo cp /var/lib/gems/2.5.0/gems/oxidized-0.28.0/extra/oxidized.nginx /etc/nginx/sites-available/oxidized
Его содержимое:
server {
listen 80;
listen [::]:80;
server_name oxidized.example.com;
location / {
proxy_pass http://127.0.0.1:8888/;
}
access_log /var/log/nginx/access_oxidized.log;
error_log /var/log/nginx/error_oxidized.log;
}
и добавляем строки:
auth_basic “Username and Password Required”;
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8888/;}
Создаем файл с паролем:
sudo htpasswd /etc/nginx/.htpasswd username
==== Apache ====
Включаем модули:
a2enmod proxy
a2enmod proxy_http
Добавляем в ports.conf, где 10.10.10.1 - IP веб-сервера
# Oxidized port
Listen 10.10.10.1:8888
Создаем файл конфигурации /etc/apache2/sites-available/oxidized.conf:
ServerAdmin admin@MYDOMAIN.ru
ServerName oxidized.MYDOMAIN.ru
ServerAlias oxidized
AuthType Basic
AuthName "Username and Password Required"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
ProxyPass / http://127.0.0.1:8888/
ProxyPassReverse / http://127.0.0.1:8888/
ErrorLog /var/log/apache2/oxidized_error.log
CustomLog /var/log/apache2/oxidized_access.log combined
Включаем сайт:
a2ensite oxidized.conf
Создаем файл с паролем:
sudo htpasswd /etc/apache2/.htpasswd username
Перезапускаем apache2
===== Настройка Mikrotik =====
Осталось настроить наши устройства Mikrotik:
* Создать пользователя под которым будет подключаться Oxidized: System -> Users, права дать только "Read"
* Проверить работает ли сервис SSH (IP -> Services и включить ssh)
* Открыть доступ к порту 22 в IP -> Firewall -> Filter Rules
Крайне желательно ограничить доступ по порту 22 (если вы его не используете для работы) и IP-адресу сервера с установленным Oxidized
{{tag>oxidized mikrotik backup configuration бэкап_конфигурации}}