专家专栏 | Zabbix5.2安全特性-机密信息外部存储
1758
2022-05-29
vim /etc/zabbix/zabbix_proxy.conf
开启主动模式
ProxyMode=0
zabbix-server端IP
Server=10.206.230.146
zabbix-server端口
ServerPort=10051
填写本机的主机名称或者ip,在zabbix web添加保持一致
Hostname=10.217.37.188
#HostnameItem=10.217.37.188
proxy端监听端口,也就是proxy对server访问用的端口
ListenPort=10051
代理使用本地的数据库进行存储
DBHost=10.217.37.188
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=xxxx
DBPort=3306
ProxyLocalBuffer数据保留的时间,小时为单位
ProxyLocalBuffer=12
ProxyOfflineBuffer连不上Server数据要保留多久,小时为单位
ProxyOfflineBuffer=1
预分配子进程数量。数量越多服务端吞吐能力越强,系统资源消耗越大,zabbix proxy的进程数server端拉取agent端的items
StartPollers=500
系统初始化时,预分配的使用ipmi协议获取主机硬件状态的进程数量。StartIPMIPollers=10
预处理程序启动数目
StartPreprocessors=3
对不可达主机拉取数据
StartPollersUnreachable=20
陷阱机制,即对于中途加入的主机主动发送的数据进行保存
StartTrappers=15
使用ICMP协议的ping对网络中主机进行在线状态检测
StartPingers=20
对网络中的主机主动扫描发现,对中途加入的主机进行上线。注意:主动发现很消耗带宽系统初始化时,预分配的自动发现主机的线程数量。若单台代理所管理机器超过500台,可以考虑加大此数值(仅适用于AGENT场景)
StartDiscoverers=50
分配多少共享内存用于存储配置信息,HOST,ITEM,TRIGGER数据,视监控主机数量和监控项调整,因为代理和数据库在一台设备上,数据库配置了6G,总内存8G
CacheSize=4G
数据库同步实例数将采集数据从CACHE同步到数据库线程数量,视数据库服务器I/O繁忙情况,和数据库写能力调整。数值越大,写能力越强。对数据库服务器I/O压力越大
StartDBSyncers=10
设置划分多少共享内存用于存储采集的历史数据,此数值越大,数据库读压力越小HistoryCacheSize=512M
历史数据索引缓存
HistoryIndexCacheSize=128M
与AGNET、SNMP设备和其它外部设备通信超时设置,单位为秒;若采集数据不完整或网络繁忙,或从管理页面发现客户端状态变化频繁,可以考虑加大此数值。
Timeout=30
定义主机不可达的超时时间
UnreachablePeriod=180
在主机不可用期间,定期检查主机的时间
UnavailableDelay=60
zabbix proxy从zabbix server取得配置数据的频率
ConfigFrequency=3600
代理将每N秒将收集的数据发送到服务器。 对于被动模式下的代理,该参数将被忽略
DataSenderFrequency=1
systemctl restart zabbix-proxy
vim /etc/zabbix/zabbix_agentd.conf
填写zabbix-proxy的IP
Server=10.217.37.188
ServerActive是指定Agentd收集的数据往哪里发送,发送到本机的代理
ServerActive=10.217.37.188
ListenPort=10050
Hostname=10.217.37.188
#HostnameItem=10.217.37.188
是否使用自定义脚本监控1是开启
UnsafeUserParameters=1
systemctl restart zabbix-agent.service
systemctl enable zabbix-agent.service
五. zabbix web配置
http://10.206.230.146/zabbix/
默认用户名 Admin 默认密码 zabbix
因为使用时序数据库进行了分区,数据库定期清理数据,关闭zabbix提供的
给代理服务器创建个组进行一些监控
Zabbix有自带的模板,把刚创建的组进行绑定,也可以自己定义
添加proxy
六.添加Zabbix监控
首先添加主机群组,为了日后主机更好的分类
主机群组—创建主机群组—填写名称
这里先介绍宏和正则表达式是因为我们后续创建模板的时候需要使用,进行过滤和引用
管理---一般---宏
添加了snmp的团体变量{$SNMP_COMMUNITY} 赋值读的团体
{$IF.UTIL.MAX}变量是用来带宽告警设置的阈值,我们这里配置的60,也就是接口带宽超过百分之60就告警
管理---一般---正则表达式
这里是过滤交换机的接口类型使用的,因为监控交换机接口会发现非常多,但是我只需要物理接口的.
配置---模板 创建名称和添加主机群组
这里展示的是模板单独的宏和调用全局的宏变量
下图是我们添加icmp的连通性 丢包率 延迟
ICMP丢包率添加
ICMP延迟添加,默认单位是秒,我们这里改成ms,更新时间改为30s,进程增加自动变量1000,这样我们在图形展示的时候就会看到ms为单位的抖动情况
触发器使用了zabbix自带的
因为网络里有太多的网络设备,我们没有必要对全部的接口进行监控,我们更关心的是网络设备之前互联的接口,对于数据中心的交换机,网络模型非常标准,我们可以根据接口名称过滤,或者通过lldp的方式进行过滤,但是园区网不标准,我的网络里认为所有的trunk口就是网络设备互联接口.下面的示例是对trunk口进行添加流量监控
这里非常重要的是键值,我定义了一个变量trunk,1.3.6.1.4.1.25506.8.35.5.1.3.1.1用来识别是否为trunk口,这个oid是个私有属性,我们后续要给zabbix加mib库
discovery[{#IFOPERSTATUS},1.3.6.1.2.1.2.2.1.8,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7,{#IFNAME},1.3.6.1.2.1.2.2.1.2,{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFTYPE},1.3.6.1.2.1.2.2.1.3,{#TRUNK},1.3.6.1.4.1.25506.8.35.5.1.3.1.1]
过滤器,我监控H3C物理接口
添加接口流量,键值的变量使用trunk,因为我只监控trunk口流量,oid使用默认即可,在新的应用集加上Liuliang这个名称,这是为了单独把接口流量独立成一个应用集,图形展示的时候方便。监控接口流量的oid必须用64位的,32位的超过4G会出现图像断层
到H3C官网下载mib库文件解压,里面有.txt文件
把文件导入到zabbix-server的cd /usr/share/snmp/mibs目录下
重启zabbix-server进程
systemctl restart zabbix-server
这个案例的动作没有自动加模板,因为目前笔者的模板做的并不是很好,所以省去着一步,笔者目前会根据不同的型号,不同的区域,不同的角色来手工批量加模板
一共两个方式:一共是使用公司的smtp,一个是需要自己搭建smtp,我们这里只介绍使用公司已有的.SMTP HELO一般是根域名,写成和SMTP服务器一样就行
我们这里使用一个第三方的工具expect结合shell使用
安装交互式工具
yum install expect
创建备份目录switchbackup 赋予权限
mkdir –p var/lib/switchbackup/
chmod 777 var/lib/switchbackup/
下面是shell脚本调用expect工具,进行配置备份
添加linux脚本的定时任务,每天夜里22点30分开始执行
cd /var/lib/switchbackup
根据实际情况填写
vim crontab-Backup-Switch.txt
#backup-Switch
30 22 * * * /var/lib/switchbackup/backup.sh
新创建的定时任务生效,查看定时任务,保证服务器重启后任务可以自动启动
crontab crontab-Backup-Switch.txt
crontab -l
systemctl start crond.service
systemctl enable crond.service
service crond status
linux登录一些设备报错,因为交换机是server,openssh版本太老了,Linux验证不进行支持了
老版本交换机开启sshv1
h3c交换机命令
ssh server compatible-ssh1x enable
修改linux client配置文件,支持sshv1
vim /etc/ssh/ssh_config
rm -rf ./root/.ssh/known_hosts
七.Grafana平台安装进行展示
wget https://dl.grafana.com/oss/release/grafana-6.2.1-1.x86_64.rpm
yum localinstall grafana-6.2.1-1.x86_64.rpm -y
systemctl enable grafana-server
systemctl start grafana-server
grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server
http://10.206.230.146:3000/login
默认用户名密码 admin admin 需要先进行修改
点击进行enable
增加数据源zabbix,Trends必须勾选读取历史数据可以加速
八.维护
yum -y install net-snmp-utils
snmpwalk -v 2c -c 团体 OID
失败查看日志
tail -f /var/log/zabbix/zabbix_server.log
tail -f /var/log/zabbix/zabbix_proxy.log
tail -f /var/log/zabbix/zabbix_agentd.log
修改配置文件
vim /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agentd.
vim /etc/zabbix/zabbix_server.conf
systemctl restart zabbix-server
vim /etc/zabbix/zabbix_proxy.conf
systemctl restart zabbix-proxy
ELK系统搭建
Elasticsearch 是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。详细可参考Elasticsearch权威指南
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
Beats在这里是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。
一.ELK集群安装
服务器使用4核16G内存500G硬盘Centos 7 ELK 7.3.0,这个版本有破解的白金会员
可以使用全功能的ELK.
ELK7.4.0版本logstash不支持netflow了,必须用filebeat,但是filebeat对asa的日志识别异常,官网提示产品bug
我们这次使用到的集群是两台设备,要先搞集群,之后每台node点都要破解x-pack,在主节点进行x-pack设置会自动同步到其他节点
关闭火墙并增加实体数为655360
vim /etc/sysctl.conf
SELINUX=disable
vm.max_map_count=655360
安装jave8 jdk1.8版本
yum install –y jdk
查看java进程
jps
安装elasticsearch kibana logstash 7.3.2到中文社区下载rpm包
https://elasticsearch.cn/download/
cd var/lib
mkdir elk
cd elk
rpm –hiv elasticsearch-7.3.2-x86_64.rpm
rpm –hiv kibana-7.3.2-x86_64.rpm
rpm –hiv logstash-7.3.2.rpm
rpm –hiv filebeat-7.3.2-x86_64.rpm
安装完成后进行两台elasticsearch配置文件修改,内容基本相同,设置参数如下:
vim /etc/elasticsearch/elasticsearch.yml
同一个集群的集群名称必须一致
cluster.name: ELK
集群成员的名称
node.name: ELK-1
配置是否可以竞选master设备
node.master: true
配置是否可以作为数据节点
node.data: true
配置数据存储路径
path.data: /var/lib/elasticsearch
配置日志存储路径
path.logs: /var/log/elasticsearch
配置监听IP为本机所有IP
network.host: 0.0.0.0
配置监听端口号
http.port: 9200
配置单播方式进行集群
discovery.zen.ping.unicast.hosts: ["10.143.202.79:9300", "10.174.221.227:9300"]
需要最少几台设备同意该设备为master节点
cluster.initial_master_nodes: ["10.143.202.79","10.174.221.227"]
配置允许跨域,当有多个集群需要互通的时候,允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
控制集群在达到多少个节点之后才会开始数据恢复,通过这个设置可以避免集群自动相互发现的初期,shard分片不全的问题,假如es集群内一共有5个节点,就可以设置为5,那么这个集群必须有5个节点启动后才会开始数据分片,如果设置为3,就有可能另外两个节点没存储数据分片
gateway.recover_after_nodes: 2
这个设置使删除只限于特定名称指向的数据,而不允许通过指定 _all 或通配符来删除指定索引库
action.destructive_requires_name: true
因为要破解xpack,所以我们先关闭xpack安全功能
xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false
启动elasticsearch
systemctl start elasticsearch
systemctl enable elasticsearch
验证启动成功
curl -X GET "10.143.202.79:9200"
curl -X GET "10.174.221.227:9200"
安装调试插件,在chrome扩展插件中直接拖拽安装
星号代表Master
二.ELK白金会员破解使用x-pack全功能
停止两台node的elasticsearch程序,分别开始破解x-pack插件,下面的操作完全一致
systemctl stop elasticsearch
找到x-pack-core-7.3.0.jar路径
/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-7.3.0.jar
找个路径创建一个文件夹,我这里找的下面的路径,文件夹名字我起的xpack
/var/lib/elk/xpack
复制x-pack-core-7.3.0.jar到/var/lib/elk/xpack
cp x-pack-core-7.3.0.jar /var/lib/elk/xpack
在/var/lib/elk/xpack解压缩 x-pack并删除
jar -xvf x-pack-core-7.3.0.jar
rm -rf x-pack-core-7.3.0.jar
用已经破解好的文件,并覆盖到原文件
LicenseVerifier.class 路径在 /org/elasticsearch/license/LicenseVerifier.class
XPackBuild.class 路径在 /org/elasticsearch/xpack/core/XPackBuild.class
/var/lib/elk/xpack目录下重新打包x-pack
jar cvf x-pack-core-7.3.0.jar *
用新生成的x-pack覆盖源路径下的文件
原路径 /usr/share/elasticsearch/modules/x-pack-core/x-pack-core-7.3.0.jar
启动elasticsearch
systemctl start elasticsearch
在cd var/lib/elk/xpack/目录下上传破解后的license,并在当前目录进行导入,密码不用写
出现true就是破解成功
curl -XPUT -u elastic 'http://127.0.0.1:9200/_xpack/license' -H "Content-Type: application/json" -d @license.json
查看破解后的license
curl -XGET -u elastic:tWbWZc7NE3wYqS6DvSu4 http://127.0.0.1:9200/_license
三.ELK开启安全防护
使用SSL证书,使ES内部交互更加安全,在master节点生成证书,停止全部node
Systemctl stop elasticsearch
cd /usr/share/elasticsearch/
文件目录下执行,创建ca证书,第一个回车,第二个设置密码123456
bin/elasticsearch-certutil ca
文件目录下执行,创建客户端证书,第一个密码123456,第二个回车,第三个设置密码123456
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
执行下面命令并输入第一步输入的密码123456
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
执行下面命令并输入第一步输入的密码123456
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
将生成的elastic-certificates.p12和elastic-stack-ca.p12放在master节点的/etc/elasticsearch目录下
把master节点的/etc/elasticsearch目录下的elastic-certificates.p12和elastic-stack-ca.p12和elasticsearch.keystore传递到其他node的/etc/elasticsearch下
所有node的elasticsearch.yml修改,最后重启
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/elastic-certificates.p12
systemctl restart elasticsearch
所有node完成集群后,在master上配置用户密码,我设置的都一样123456
cd /usr/share/elasticsearch/
./bin/elasticsearch-setup-passwords interactive
修改kibana配置文件
vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://10.143.202.79:9200"]
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
systemctl start kibana
systemctl enable kibana
systemctl status kibana
netstat -nltp|grep 5601
四. ELK syslog分析
因为要收集syslog,开启udp514监控并创建elasticsearch索引
配置里我们对h3c cisco junier的日志进行格式标准化和分级
创建/etc/logstash/syslog/conf.d目录,修改pipelines.yml配置
cd /etc/logstash
修改logstash启动账户为root,默认账户是logstash,因为udp514用默认账户无法开启
vim /etc/systemd/system/logstash.service
User=root
Group=root
配置本地服务器的日志吐到logstash上测试
vim etc/rsyslog.conf
*.* @@10.143.202.79:514
systemctl restart rsyslog
配置后台运行
nohup /usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog-network.conf &
验证logstash的syslog的索引是否在elasticsearch生效
curl
http://10.143.202.79:9200/_cat/indices
删除索引的命令,不用操作
curl -XDELETE 'http://10.143.202.79:9200/syslog-2020.03.15'
五.ELK sflow大数据分析
我们使用sflowtool进行sflow转换转成netflow,之后用logstash进行调用
/var/lib/elk
mkdir sflowtool
cd sflowtool
yum whatprovides autoconf automake
yum install automake
yum install git
git clone https://github.com/sflow/sflowtool
cd sflowtool/
./boot.sh
./configure
make
sudo make install
cd /var/lib/elk/sflowtool/sflowtool/src
nohup ./sflowtool -p 6543 -c 10.143.202.79 -d 6542 -S &
tcpdump -i lo port 6542
设置java的内存,ElastiFlow利用了许多Logstash插件中可用的缓存和排队功能
cd etc/logstash/
vim jvm.options
-Xms4g
-Xmx4g
安装logstash插件
/usr/share/logstash/bin/logstash-plugin install logstash-codec-sflow
/usr/share/logstash/bin/logstash-plugin install logstash-codec-netflow
/usr/share/logstash/bin/logstash-plugin install logstash-input-udp
/usr/share/logstash/bin/logstash-plugin install logstash-input-tcp
/usr/share/logstash/bin/logstash-plugin install logstash-filter-dns
创建/etc/logstash/netflow/conf.d目录,修改pipelines.yml配置
cd /etc/logstash
下面基于ELK6.7.2是第三方插件SFLOW的安装方法
下载elastiflow3.4.2版本和ELK的6.7.2对应
https://github.com/robcowart/elastiflow
unzip elastiflow-master.zip
cd /etc/logstash/elastiflow-master/logstash
cp -a elastiflow/ /etc/logstash/
配置环境变量,没用的选项都注释掉,保留全局配置和netflow配置,注意修改监听端口号
cp -a /etc/logstash/elastiflow-master/logstash.service.d /etc/systemd/system
cd /etc/systemd/system/logstash.service.d
vim elastiflow.conf
请记住,要使更改生效,必须发出systemctl daemon-reload命令
启动日志判断是否正常
cd /var/log/logstash/
六.ELK Grafana监控ES sflow
如果grafana要访问ES需要在elasticsearch.yml增加允许.
http.cors.enabled: true
http.cors.allow-origin: "*"
当grafana需要读取大量数据的时候,elasticsearch有个聚合查询限制默认是10000,超过1wElasticsearch就会挂死,在elasticsearch.yml增加聚合桶,(这个参数对后面监控有作用)
search.max_buckets: 50000
在grafana添加数据源
添加筛选项,过滤sflow的交换机
附件: ELK+Zabbix+TimesacleDB+Grafana.docx 4.53MB 下载次数:7次
Zabbix 数据库
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。