Oxidized 0.28.0 测试环境使用 CentOS 7.6 系统 ,缺点是 CentOS 7 系统集成的软件版本太低。Oxidized 需运行在 ruby 2.3 或更高版本,CentOS 7 系统集成 Ruby2.0 ,而 ubuntu 20.04 LTS 系统集成 ruby 2.7.0。使用低版本的软件显然不是我的 style 。过去部署 zabbix,elk ,JumpServer 和 OPNsense 等应用一直使用 RHEL/CentOS 系统做为基础支撑,对 ubuntu 系统操作很陌生。ubuntu 20.04 LTS 版本 2020.4 发布,于是大胆决定 Oxidized 生产环境使用 ubuntu 20.04 LTS 版本作为基础支撑。
干货开始之前先欣赏下 ubuntu 绚丽的桌面,后面的操作在命令行下进行哦!
Ubuntu 系统版本
ubuntu@ecv-node1:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focal
更新软件包
sudo apt-get update
sudo apt-get upgrade
启用 universe 发行版组件
对所有源启用 "universe" 发行版组件
sudo add-apt-repository universe
安装依赖软件包
sudo apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev libicu-dev zlib1g-dev g++ git
Oxidized
安装 Oxidized
sudo gem install oxidized
sudo gem install oxidized-script oxidized-web
查看 Oxidized 版本
ubuntu@ecv-node1:~$ oxidized -v
0.28.0
启动 Oxidized(首次运行 Oxidized,会提示去编辑配置文件)
ubuntu@ecv-node1:~$ oxidized
edit ~/.config/oxidized/config
Oxidized 配置文件
ubuntu@ecv-node1:/$ cat /home/ubuntu/.config/oxidized/config
---
username: username
password: password
model: junos
resolve_dns: true
interval: 3600
#log: /home/ubuntu/.config/oxidized/logs/oxidized.log
use_syslog: false
debug: false
threads: 30
timeout: 20
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 192.168.99.52:8888
next_adds_job: false
vars: {}
groups: {}
models: {}
pid: "/home/ubuntu/.config/oxidized/pid"
crash:
directory: "/home/ubuntu/.config/oxidized/crashes"
hostnames: false
stats:
history_size: 10
input:
default: ssh, telnet
debug: false
ssh:
secure: false
ftp:
passive: true
utf8_encoded: true
output:
default: file
file:
directory: "/home/ubuntu/.config/oxidized/configs"
source:
default: csv
csv:
file: "/home/ubuntu/.config/oxidized/router.db"
delimiter: !ruby/regexp /:/
map:
name: 0
model: 1
username: 2
password: 3
group: 4
gpg: false
model_map:
juniper: junos
cisco: ios
创建 router.db 文件
格式:
ip:os:username:password:group
ubuntu@ecv-node1:~/.config/oxidized$ pwd
/home/ubuntu/.config/oxidized
ubuntu@ecv-node1:~/.config/oxidized$ cat router.db
192.168.99.112:comware:admin:password:group1
192.168.99.113:comware:admin:password:group1
192.168.99.254:comware:admin:password:group2
192.168.99.21:vrp:admin:password:group2
Oxidized 文件目录
创建设备配置存储目录
ubuntu@ecv-node1:~/.config/oxidized$ pwd
/home/ubuntu/.config/oxidized
ubuntu@ecv-node1:~/.config/oxidized$ sudo mkdir -p configs
Oxidized 文件文件默认存储在 ~/.config/oxidized/ 目录下
config : Oxidized 主配置文件;
crash : Oxidized 所有的原始模块路径;
logs : Oxidized 日志存储;
configs : 设备配置文件存储目录;
router.db 被管网络设备详细信息;
启动 Oxidized
前台运行
systemctl 管理 Oxidized
查找 oxidized.service
ubuntu@ecv-node1:/$ sudo find / -name oxidized.service
/var/lib/gems/2.7.0/gems/oxidized-0.28.0/extra/oxidized.service
sudo cp /var/lib/gems/2.7.0/gems/oxidized-0.28.0/extra/oxidized.service /lib/systemd/system
oxidized.service 文件(使用 ubuntu 用户启动)
sudo vim /lib/systemd/system/oxidized.service
Oxidized 服务启动、停止、重启、开机启动、状态
systemctl start oxidized.service
systemctl stop oxidized.service
systemctl restart oxidized.service
systemctl enable oxidized.service
systemctl status oxidized.service
查看 oxidized.service 服务状态
查看设备备份文件
Oxidized Web
Last Status: 绿色(备份正常), 蓝色(正在备份), 红色(备份失败)
Last Update: 上一次备份的时间(配置文件里面默认1个小时 自定义修改interval的值即可)
Last Changed: 配置文件发生改变的时间
action: 点击第一个图标就能看到设备备份文件内容,第二个图标为配置文件比对, 第三个图标为手动强制备份.
Nginx 反向代理认证
Oxidized Web 默认不提供任何安全认证,为保证系统安全性使用 Nginx 反向代理进行 Web 登录认证。
安装 Nginx 和 apache2-utils
sudo apt-get install nginx
sudo apt-get install apache2-utils
生成用户名密码文件
htpasswd 来创建和生成加密的用户用于基础认证(Basic Authentication)
ubuntu@ecv-node1:/$sudo htpasswd -c /etc/nginx/.htpasswd oxidized
Nginx 配置文件
sudo vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name 192.168.99.52;
root /usr/share/nginx/html;
auth_basic "oxidized auth access";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:8888/;
}
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log error;
}
Oxidized 默认选项是使其只能从本地系统(127.0.0.1)在端口 8888 上访问
检查Nginx 配置文件
nginx -t
启动服务
systemctl restart nginx && systemctl enable nginx
Oxidized Web 身份认证
Oxidized Web Last Update 使用 UTC 时间,和 CST 时间差8个小时
查找 oxidized.js 文件
ubuntu@ecv-node1:/$ sudo find / -name oxidized.js
/var/lib/gems/2.7.0/gems/oxidized-web-0.13.1/lib/oxidized/web/public/scripts/oxidized.js
修改 oxidized.js 文件
重启 oxidized 服务
systemctl restart oxidized.service
Oxidized Web UI