Показать страницуИстория страницыСсылки сюдаЭкспорт в PDFНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Oxidized установка и настройка ====== Сайт: https://github.com/ytti/oxidized/ Небольшая но очень полезная программа для централизованного резервного копирования конфигурационных файлов сетевого оборудования. Так же, что очень полезно, умеет отображать изменения в настройках - это позволяет быстро понять что именно изменялось. В данном примере показана настройка для бэкапа Mikrotik, но вообще Oxidized поддерживает более 130 типов устройств. ===== Установка ===== Установка на Ubuntu 18.04 Убедимся что репозиторий universe подключен: <code> add-apt-repository universe </code> Устанавливаем зависимости: <code> apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev libicu-dev zlib1g-dev g++ </code> Устанавливаем gems (если не нужно ставить какие-то части, отредактируйте строку): <code> gem install oxidized oxidized-script oxidized-web </code> Лучше всего хранить конфигурации в Git, поэтому ставим его: <code> apt install git </code> ===== Создаем пользователя ===== Процесс желательно запускать под отдельным пользователем, создаем его: <code> useradd -m oxidized </code> Настраиваем git: <code> git config --global user.name "oxidized" git config --global user.email "oxidized@MYDOMAIN.ru" git init oxidized.git </code> Из-под пользователя запускаем программу первый раз чтобы создались необходимые каталоги и файл конфигурации: <code> su - oxidized oxidized </code> Прерываем работу нажатием <key>Ctrl</key>+<key>c</key> ===== Настраиваем конфигурационный файл ===== Пример файла конфигурации, находится в /home/oxidized/.config/oxidized/: <code> --- 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 </code> Описание наиболее важных переменных: * 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 <code> mikrotik01:routeros:10.10.10.1 mikrotik02:routeros:10.10.10.10:22:test:$ecretP@$$word </code> первая строка - наименование, тип оборудования, IP-адрес вторая строка - наименование, тип оборудования, IP-адрес, порт, логин, пароль Для первого устройства будут использоваться логин и пароль по умолчанию, прописанные в файле config ===== Настройка службы ===== Облегчим жизнь копированием файла управлением службы и включением автозапуска: <code> 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 </code> Готово, можно запускать службу, проверить ее работу ===== Авторизация в браузере ===== По умолчанию Oxidized не имеет никакой авторизации, что позволяет подключаться к нему всем желающим. Исправить это можно с помощью Reverse-proxy ==== Nginx ==== Устанавливаем: <code> apt install nginx </code> Копируем файл настроек: <code> sudo cp /var/lib/gems/2.5.0/gems/oxidized-0.28.0/extra/oxidized.nginx /etc/nginx/sites-available/oxidized </code> Его содержимое: <code> 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; } </code> и добавляем строки: <code> 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/;} </code> Создаем файл с паролем: <code> sudo htpasswd /etc/nginx/.htpasswd username </code> ==== Apache ==== Включаем модули: <code> a2enmod proxy a2enmod proxy_http </code> Добавляем в ports.conf, где 10.10.10.1 - IP веб-сервера <code> # Oxidized port Listen 10.10.10.1:8888 </code> Создаем файл конфигурации /etc/apache2/sites-available/oxidized.conf: <code> <VirtualHost *:8888> ServerAdmin admin@MYDOMAIN.ru ServerName oxidized.MYDOMAIN.ru ServerAlias oxidized <Location /> AuthType Basic AuthName "Username and Password Required" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Location> 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 </VirtualHost> </code> Включаем сайт: <code> a2ensite oxidized.conf </code> Создаем файл с паролем: <code> sudo htpasswd /etc/apache2/.htpasswd username </code> Перезапускаем apache2 ===== Настройка Mikrotik ===== Осталось настроить наши устройства Mikrotik: * Создать пользователя под которым будет подключаться Oxidized: System -> Users, права дать только "Read" * Проверить работает ли сервис SSH (IP -> Services и включить ssh) * Открыть доступ к порту 22 в IP -> Firewall -> Filter Rules Крайне желательно ограничить доступ по порту 22 (если вы его не используете для работы) и IP-адресу сервера с установленным Oxidized {{tag>oxidized mikrotik backup configuration бэкап_конфигурации}} software/oxidized/oxidized-setup.txt Последнее изменение: 2020/07/28 02:11 — 127.0.0.1