作者归档:Jason long

[已解决]Windows 2012 忘记|重设|破解域管理员密码

1个月之前在Krypt的服务器上部署了公司的Exchange2016服务器,用来作为临时的邮件服务器。几番折腾部署完成之后就再也没上去过服务器系统。结果一个多月之后,突然发现忘记了服务器的管理员密码。当然还有其他的原因,导致必须要重新设置管理员密码。

于是第一时间给Krypt提交了工单叫帮忙协助重置密码,结果被对方回怼:”服务器文件损坏,无法使用Windows光盘进行重置密码,建议进行增盘,重装系统,再恢复业务。”

得到这个消息我也理解,前前后后Krypt搞了2天没搞定。

最后还是自行百度和谷歌,找了很多方式:

1.破解NDST.dit 提取密码  – 【无效】

2.Windows光盘启动,进行修复再重置 – 【无效】

3.新装系统,将旧Exchange数据库迁移到新的Exchange Z【部署就一个月,还未来得及备份,无法迁移,无效】

最后在51cto上看到了一个大哥的解决方案,真是简单,亲测可用。总结过程如下:

服务器正在运行的操作系统: Windows Server 2012 Standard 64 Bit

联系机房挂载安装盘: Windows Server 2012 Standard 64 Bit.iso

IPMI设置从安装盘启动

查看到安装欢迎界面时点击”下一步“,点击左下角“修复”,找到“命令行工具”打开

在命令行中切换到待修复系统的安装盘(自己试: c:   d:  e:  f:  g:  h: ),切换后可以用“dir”命令查看文件名字就知道是否是windows系统盘。

切换到“Windows\System32”目录

将辅助程序”osk.exe”命名为“osk02.exe”作为备份;将原本的“cmd.exe”命名为“osk.exe”,完了这一步待会儿重启就可以在登陆界面执行命令。

重新修改引导顺序,启动本地待修复的系统,到达登陆页面,点击左下角辅助程序图标即可打开cmd.exe命令行窗口

通过命令成功修改管理员账户密码。

修改后再次修改引导安装盘,将”osk.exe“改为“cmd.exe”,将“osk02.exe”改为“osk.exe”。(你无法在本地系统上修改这两个文件名字,只能在安装盘启动情况下进行修改)

再次修改引导启动本地系统,即可使用新密码进行登陆。

( 图片是原文2008系统的,但是不影响理解。Cover: sinycn  )

zabbix监控日志文件 MySQL日志为例(95)

一般情况下,日志最先反映出应用当前的问题,在海量日志里面找到我们异常记录,然后记录下来,并且根据情况报警,大家可以监控系统日志、nginx、Apache、业务日志。这边我拿常见的MySQL日志做监控,大家看演示。

监控日志key

首先要了解key,

log[ file  ,<regexp>,<encoding>,<maxlines>,<mode>,<output>]

file:文件名,写绝对路径

regexp:要匹配内容的正则表达式,或者直接写你要检索的内容也可以,例如我想检索带ERROR关键词的记录

encoding:编码相关,留空即可

maxlines:一次性最多提交多少行,这个参数覆盖配置文件zabbxi_agentd.conf中的’MaxLinesPerSecond’,我们也可以留空

mode:默认是all,也可以是skip,skip会跳过老数据

output:输出给zabbix server的数据。可以是\1、\2一直\9,\1表示第一个正则表达式匹配出得内容,\2表示第二个正则表达式匹配错的内容。

备注:我极力推荐大家使用第二个参数,看到网上一些zabbix监控日志的教程,几乎只有第一个参数,这样将会导致日志文件里的内容统统丢给zabbix_server记录,我想,这一定不是大家想看到的。

日志文件权限配置

给日志文件加上读取权限,为了演示方便,我直接给777

如果权限给的不到位,zabbix agent日志有类似如下报错:

zabbix配置

Host>>目标主机>>item>>create item,如下:

logrt

zabbix日志监控

说明:

1. type必须选择zabbix agent(active),因为数据是zabbix被监控的主动提交给server

2. key:log[/data/mydata/mydata_3306/li220-237.err,ERROR,,,,],我不多说了,细心的人会说,还有一个叫logrt得key,有什么区别,等会儿讲.

3. log time format:yyMMddphh:mm:ss,对应日志的行头150311 11:47:09,y表示年、M表示月、d表示日、p和:一个占位符,h表示小时,m表示分钟,s表示秒。

zabbix监控MySQL日志查看

切换到最新日志里面,找到相应数据,如下是我的监控截图

logrt

zabbix监控MySQL日志

接下来便是触发器,大家可以根据自己的情况来创建触发器,例如日志中包含某个字符串等等,如上图,我们可以触发执行mysql表修复。

logrt介绍

如果仔细看可以发现,第一个参数不一样,logrt的第一个参数可以使用正则表达式。针对日志回滚用得,例如我们每天都切割nginx日志,日志名位www.ttlsa.com_2017-01-01.log、www.ttlsa.com_2017-01-02.log等等,使用log肯定不合适,如果文件名使用正则,那么新增的日志文件会立即加入监控。

备注:不管新日志、老日志,只要他们有变更,zabbix都会监控。

 

 

Received empty response from Zabbix Agent问题解决(94)

刚接触zabbix新手少部分会出现如下错误:

Received empty response from Zabbix Agent at [192.168.1.2]. Assuming that agent dropped connection because of access permission

大概意思是说没有权限访问agent端口10050,解决方法如下:

如果你的server有多个IP地址,使用逗号分隔多个IP地址。

 

 

java struts2 远程执行任意java代码漏洞

最近网络上爆发大规模的struts2远程代码执行漏洞。

漏洞说明

漏洞危害

漏洞可以远程执行任意Java代码

危险等级

高危

受影响版本

Struts 2.3.20 – Struts 2.3.28 (2.3.20.2 和 2.3.24.2 除外)

CVE

CVE-2016-3081

漏洞前提

开启动态方法调用, struts.xml配置

<constant name=”struts.enable.DynamicMethodInvocation” value=”true” />

沙盒绕过

通过ognl表达式静态调用获取ognl.OgnlContext的DEFAULT_MEMBER_ACCESS属性,并将获取的结果覆盖_memberAccess属性,这样就可以绕过SecurityMemberAccess的限制。

漏洞详情

https://struts.apache.org/docs/s2-032.html

http://www.freebuf.com/vuls/102836.html

临时解决方案

1. 检查是否使用struts2

2. 检查是否开启动态方法调用

3. 在struts前端nginx配置正则拦截攻击请求

正则:if($args ~ @ognl.OgnlContext@DEFAULT_MEMBER_ACCESS) { return 404;}

升级Struts 2至Struts 2.3.20.2, Struts 2.3.24.2 或者 Struts 2.3.28.1,以便彻底解决此问题。

Nagios太阳(pnp)安装配置

Nagios太阳(pnp)安装配置

一.安装rrdtool

RRDTOOL将nagios采集的数据绘制成图表。

 

二.安装pnp

 

三.配置nagios

 

四.验证

http://ip/nagios/pnp/

zabbix加载扩展模块 第三方库支持(92)

zabbix从2.2版本开始增加了使用动态库来扩展zabbix功能。loadable modules实际上和我们前面提到的用户自定义key是一样的功能,不同的是,他用加载lib库的方式,并且zabbix不需要fork一个新的进程,性能更好。目前类似的功能包含user parameters 、 external checks 、 system.run[] ,如果这些脚本逻辑过于复杂、耗时太长会出现比较严重的问题。

工作中,我们可以使用c开发一些适用于我们自己生产环境的模块。当然你也可以将它分享给出来,而不需要公布你的源代码,如果你对自己写的代码不自信的话。当agentd、server、proxy启动的时候同时将模块加载进来,退出的时候也会释放。

zabbix模块API

zabbix代码中有提供api所需的头文件.h,目前模块有两类接口需要实现,一类是必须实现的,一类是可选的。

必须实现的接口

两个接口: zbx_module_api_version()、zbx_module_init()

用于返回API版本,必须实现,默认返回常量ZBX_MODULE_API_VERSION_ONE(数值1)

模块必要的一些初始化,初始化成功返回ZBX_MODULE_OK,否则返回ZBX_MODULE_FAIL。

可选接口

可选接口有zbx_module_item_list()、 zbx_module_item_timeout()、 zbx_module_uninit()

返回模块内定义的item列表,包含key,如:agent.ping、agent.version,每个item都使用结构体ZBX_METRIC

超时时间设置,秒为单位

释放资源,如:文件描述等

定义item结构体

key:item key名称,例如agent.ping、mysql.version等

flags:CF_HAVEPARAMS 或者0

function:将要调用的函数

test_param:参数列表

示例

在定义function需要接收两个参数AGENT_REQUEST 、AGENT_RESULT ,如下

编译模块

编译准备

zabbix提供了一份用于测试的模块源码,在zabbix源码目录下

请一定记住所有的源代码最好放到modules目录下来编译,因为他需要一些接口都在源码中。例如include/module.h、include/sysinc.h、 include/config.h,前面两个.h文件解压就存在,而config.h需要在源码根目录下执行./configure(不能带参数,否则会报错)。

开始编译

加载模块

拷贝so文件到zabbix目录下

修改配置文件

测试模块

重启zabbix_agentd

# killall zabbix_agentd

# /usr/local/zabbix-2.4.3/sbin/zabbix_agentd

测试key

可以看到定义好的三个key都成功了。学好linux c开发自己的zabbix模块吧。

 

 

 

zabbix监控惠普打印机(91)

假设公司有多个楼层或者分布在不同楼,打印机自然分布很广泛,打印机缺少油墨或者卡纸了,都需要员工找IT部门。我们使用zabbix对打印机进行监控,一旦缺少油墨,zabbix发出报警,it人员能够及时更换,让打印机一直处在不间断的工作状态。如果卡纸也能第一时间赶赴现场,迅速解决问题。

我们今天监控的主要项目是油墨,卡纸这块请根据对应的snmp来做

开启打印机SNMP

登陆打印机web地址:http://192.168.1.20/(我当前的),网络>>SNMP>>勾选”启用 SNMP v1/v2 只读访问(将 ‘public’ 用于获取社区名称)”

hp

 

油墨剩余量OID

可以看出,我们当前油墨剩余量是30%,与web管理后台的剩余量一致

hp

创建主机

configuration>>HOST>>create host,type选择SNMPv2 agent,key其实意义不大,OID:.1.3.6.1.2.1.43.11.1.1.9.1.1,更新时间大家自己发挥,其他都用默认,想了解更多关于zabbix使用snmp监控,请回头看ttlsa相关文章。

hp

 

创建触发器

当油墨小于10%,trigger触发warnning。出现warnning之后,接下来的便是邮件报警了。

hp

当油墨不足时,trigger报警如下

hp

邮件报警

邮件报警请参考《zabbix邮件报警

 

更多相关文章

1. zabbix snmp类型 无需安装agent也能监控(51)

2. snmp安装配置 zabbix snmp监控准备(52)

3. snmp v3的安全配置 snmp认证与加密配置(53)

4. SNMP OID列表 监控需要用到的OID

5. zabbix单位符号Unit symbols(32)

打印机OID:http://www.oidview.com/mibs/0/Printer-MIB.html

OpenTSDB Nagios 实现监控报警

OpenTSDB 非常强大,但是没有一个完整的监控平台。现在,OpenTSDB上有一系列的metric,当这些值超过临界值时,发送报警。在OpenTSDB源码tools目录下有一个Python工具check_tsd。该脚本查询OpenTSDB并返回兼容Nagios的输出OK/WARNING/CRITICAL状态格式。

check_tsd 解释

参数说明

添加Nagios命令

将check_tsd脚本放在Nagios服务器/usr/local/nagios/libexec目录里。

编辑/usr/local/nagios/etc/objects/commands.cnf文件,添加下面的命令:

添加监控项

nagios

OpenTSDB 部署

有关 OpenTSDB 介绍可以参见之前的文章。

OpenTSDB架构

OpenTSDB三大块,收集,加载/存储和查询数据。这种架构的主要目的是写入和读取数据点到HBase的。 有很多种方法来收集数据。我们可以使用tcollector,也可以自定义客户端程序收集。架构图如下:

HBase

所需条件

  • A Linux system
  • Java Development Kit 1.6 or later
  • GnuPlot 4.2 or later
  • Autotools
  • Make
  • Python
  • Git
  • An Internet connection

安装jdk

为了处理大量的数据使用的HBase作为底层数据库。在安装OpenTSDB前,需要先安装并运行HBase。本文将部署简单单一的HBase环境,如果你需要可扩展高可用性,就需要部署完全的HBase集群。

Oracle下载jdk安装包。

设置环境变量

部署单一的HBase实例

配置HBase

启动HBase实例

安装Gnuplot

安装OpenTSDB

下载地址:https://github.com/OpenTSDB/opentsdb/releases

可以下载RPM包安装或通过源码安装。通过源码编译安装需要连接到Google code下载jar包。

创建表

COMPRESSION可以有NONE/LZO/GZIP/SNAPPY。 推荐使用LZO,压缩率高,会节省空间。 将创建4张表:tsdb、tsdb-uid、tsdb-tree、tsdb-meta。

配置OpenTSDB

要能正常启动tsdb服务,需要配置以下四个参数:

  • Port: 监听的端口,默认 4242
  • Staticroot: 指定web静态文件根目录
  • Cachedir: 创建一个临时目录来存储缓
  • Zkquorum: 指定Zookeeper服务器ip和端口

Cachedir目录会缓存大量的临时过期文件,需要定期清理。源码目录下有提供一个脚本来定期清理该目录。可以设置为cron任务。

启动tsdb服务:

采集数据

收集的数据格式如下:

put tsd.hbase.latency_90pct 1408958117 18 method=scan host=tsdb class=TsdbQuery
put tsd.hbase.latency_95pct 1408958117 18 method=scan host=tsdb class=TsdbQuery
put tsd.hbase.root_lookups 1408958117 0 host=tsdb
put tsd.hbase.meta_lookups 1408958117 2 type=uncontended host=tsdb
put tsd.hbase.meta_lookups 1408958117 0 type=contended host=tsdb
put tsd.hbase.rpcs 1408958117 0 type=increment host=tsdb
put tsd.hbase.rpcs 1408958117 312 type=delete host=tsdb
put tsd.hbase.rpcs 1408958117 601 type=get host=tsdb
put tsd.hbase.rpcs 1408958117 14543 type=put host=tsdb
put tsd.hbase.rpcs 1408958117 0 type=rowLock host=tsdb
put tsd.hbase.rpcs 1408958117 102 type=openScanner host=tsdb
put tsd.hbase.rpcs 1408958117 102 type=scan host=tsdb
put tsd.hbase.rpcs.batched 1408958117 739 host=tsdb
put tsd.hbase.flushes 1408958117 0 host=tsdb
put tsd.hbase.connections.created 1408958117 1 host=tsdb
put tsd.hbase.nsre 1408958117 0 host=tsdb
put tsd.hbase.nsre.rpcs_delayed 1408958117 0 host=tsdb
put tsd.compaction.count 1408958117 379 type=trivial host=tsdb
put tsd.compaction.count 1408958117 32 type=complex host=tsdb

这个这是简单的测试。收集OpenTSDB的信息的。 可以使用Tcollector来收集数据。有关Tcollector内容参见之前的文章。

OpenTSDB内置的可视化界面

通过http://IP:4242来访问

 

HBase

zabbix开启报警声音 网页也可以有声音(49)

用过nagios的兄弟应该用过 Nagios Checker,当nagios有异常监控,他可以发出报警声音,不过他是浏览器的一个扩展。而zabbix直接自带了这个功能。

zabbix右上角的profile(配置)–>messaging–>Frontend messaging勾上。可以选择你需要发出声音的故障的严重性类型。下回有报警便能发出声音了。上图吧,一看就知道~

Linux

zabbix报警声音

 

参考

Nagios Checker:https://addons.mozilla.org/zh-CN/firefox/addon/nagios-checker/