Typecho被getshell之反思
人的一生啊就是这么不可预料,一个人的命运,当然要靠自己奋斗,但是也要考虑历史的进程。所以对我来说这可能就是“历史的钦定”吧!当然这些都是后话了,关于最近Typecho爆出的两个漏洞,我不幸中枪。这其中主因在于自己,毕竟那台腾讯云一只在吃灰,日常也疏于维护,基本上是看都不看的状态,所以这次,关于这“历史的抉择”,我还是有必要好好记录一下!!
0x00 背景
Typecho是国内的一个经典、轻巧的开源博客系统。在10月底新版发布之前,已发布的正式版已经是很久没更新了,但就国内博客圈的使用率来说算是很有分量的一款程序,所以对此废话不多说。最近Typecho接连爆出2个严重漏洞!!使得很多站点受到影响,包括我也是(服务器都被日成筛子了!)
由于这次漏洞影响比较大,网上出现了不少关于漏洞的分析,其中也有一些阴谋论的推测(后来被证实是想多了,个人认为该文章作者并不是恶意揣测开发团队的意图,仅仅是沟通问题)。
0x01 发现与分析确认
因为我日常也不怎么管理腾讯云主机,基本上就是吃灰状态,偶尔续续费什么的。直到某天我续费的时候提示说服务器被传木马了,在Typecho网站目录下多了一个zz.php。如此明显,初步分析是技术爱好者的“友情检测”,非勒索/恶意入侵。
于是,首先查看服务器的安全策略,我记得上一次设置这个好像在买这台主机时候做的,之后就没再管过。结果看了一眼:
- 内心OS:妈耶!!开放全部端口访问!!这TM的不明摆着要被日吗???!!
于是乎,马上删掉了安全策略,只留下开放22端口。随后,用winscp连接服务器,通过查询最后修改日期,发现网站根目录下有一个zz.php的一句话木马,而phpmyadmin目录下有一个cgi-149.php是被修改过。虽然数据库还在,但是很有可能已经被脱裤了,万幸的是我那个吃灰站点也没什么数据价值,对个人来说影响不大
不过接下来我担心的就是这个大马的提权程度,是否已经拿下Linux下的更高权限呢??我从腾讯云的控制台查看操作记录,显示:没有!!这就说明一定是被删记录了!!用putty连接到主机,查看最后执行命令,发现2个令人可悲的记录:
1 | cat default.pass |
emmmm看来很有可能被脱裤了,因为在成功进行Linux提权之后一般是可以直接通过webshell来执行命令的,接下来要检查的是主机有没有异常登录:命令查看了以下日志:
- /var/log/message
- /var/log/secure
发现在最后修改日期之前的记录完全没有!!这说明是被清理痕迹了!!也解释了为什么腾讯云后台记录没有日志。由此可以判定:已经被提权,并且是较高权限,数据库被脱裤的可能性极大!!
但是即使这样也没办法确认入侵者到底有没有拿下服务器密码(比如新增一个用户并且给予root权限,这样所获得的权限等同于拿下root账户和密码)
但是通过命令
1 | last -f /var/log/wtmp |
发现之前没有异常登录!由于这个日志理论上是永久性记录的,所以可信度极高。又输入
1 | cat /etc/group |
发现也没有异常的用户/用户组,所以可以确定:对方只是成功提权,删了webshell之后他就没有权限了!而关于数据库的问题,反正没什么重要数据何况密码什么的都是程序自己生成的那些!所以并无太大影响!!
0x02 处理
这还能怎么处理?后话再说,这里就只做了应急处理!即:
- 删除webshell
- 重新配置服务器端口的安全策略
关于要不要开蜜罐这个问题,我觉得人家都那么明显的去提示你留下木马了,也仅仅是个友情检测,并非深仇大恨不至于开个蜜罐故意抓人。但这一次的经历是要当作教训的!!
0x03 后话
经历了这次被黑得最惨的“入侵”,基本上对动态网站无爱了,考虑到这台腾讯云主机的实际使用情况,计划直接重装然后拿来做测试和展示平台,也会搭建一些环境用于程序/漏洞测试,但为了在学校那边装个样子,应该会建个ghost站点作为展示站点。
关于这次经历,一方面感谢国内各大安全团队提供漏洞分析与解决建议,另一方面则是对Typecho开发团队及时提供解决方案表示感谢,毕竟这个圈子的维护,眼下也是越来越难了。
而对我自己来说,完全就像回到过去一样,这大概就是命运的“钦定”,让我回归一个纯粹的技术爱好者,涉足开发与运维,也要尝试一下CTF。
系统重置与hexo迁移
因为win10坑爹的自动更新忘关了!所以在不知不觉当中它就给我更新了,然而每次系统盘更新都很恶心,日常eclipse因为JDK环境(安装在C盘)迷之缺失不能用还好说,毕竟我不是Java开发者,但是这次竟然让Node.js环境给和谐了!!所以我相当于数据完全丢失!!!本来想关机过几天再搞,却发现这个系统有问题不能关机!!或者说关不了机!!那就呵呵了,利用win10唯一一个比较人性化的设置——重置电脑来实现近似重装系统(效果上完全一样)
就这样,我翘了一节课,花了10小时时间成功重置电脑,并且又花了4小时去清理磁盘(200G的旧文件),让电脑变得“崭新”,就关了win10自动更新,依次去装那些常用软件,这些就不具体说了,下面讲一下重头戏:
新电脑上hexo的迁移
首先!!安装Node.js环境并且
1 | npm install -g hexo |
这个过程可能会非常漫长,并且会“报错”:
1 | npm WARN deprecated swig@1.4.2: This package is no longer maintained |
实际上是网速太慢,仍然在自动安装!等就行了!一定要等待!一定要等待!一定要等待!直到提示安装成功!!当然如果速度真的受不了,可以改npm源为淘宝源,具体怎么做这里就不具体说了。
下一步,Git bash 进入你存放hexo的目录,提前将备份好的这几个文件粘贴到里面!!注意仅仅要这几个!其他都!不!要!
1 | _config.yml |
之后
1 | npm install |
这里也只要等待!!接下来就可以按照之前使用hexo的方式来使用了,相当于迁移成功!!但是,这个时候部署,Git 会要求确认你的身份!这里按照GitHub上的信息来写就行了,命令如下:
1 | git config --global user.email "you@example.com" |
之后
1 | hexo deploy |
会弹出一个GitHub的登录窗口,登录即可!因为这时你并没有之前的残余文档,即public文件夹,所以直接部署即可。
之后,去验证一下是否部署成功,如果网站更新正常,即认为hexo迁移成功!!
注意!!!如果再次出现node命令无法使用,重新配置系统环境变量即可!!
最后再给出2个hexo插件:hexo-tag-aplayer、hexo-tag-dplayer
TERMUX上ssh、vim和渗透环境配置
关于termux就不用多说了,安卓上少有的神器,对于运维党来说算是必备品!!但是要注意这玩意儿的安装目录就是系统根目录!!所以会有很严重的权限限制!!对于一些操作要谨慎!!不然就只能清除数据了!!
- 设备:Yoga Book
每次启动建议先更新源,同时升级软件包
1 | apt update |
或直接
1 | apt update && apt upgrade |
其他常用命令如下:
1 | apt install <package> 安装软件包 |
为了一次性直接装了所有要安装的包,如安装package1~3这3个包,可以用这个命令,就是并列之后加-y:
1 | apt install <package1> <package2> <package3> -y |
由于是Linux模拟终端,完全按Linux的套路来就行,国内网慢可以改用清华的源,大部分使用方法在termux官网上都有教程(英文),所以具体的这里就不多说了。演示日常装逼,使用cmatrix命令(前提是你装好了这个命令)
1 | apt install cmatrix |
同样的,装逼还有一个命令sl,怎么安装和运行完全同上。至于美化可以用zsh,但是我这个平板就比较方便,不需要这个了。感兴趣可以具体参考zsh的wiki
配置ssh
为什么要配置ssh?因为yoga book作为我的主力平板(实际上是嫌15.6的Acer太重了),在日常当中一直充当超级本(即使它是Android系统,但是超薄超轻真的方便太多!!)用于技术演示和应急维护,作为运维的一员,自然不必说ssh的重要性,配置ssh所实现的功能有2个:
- 使用yoga book上的termux连接到服务器终端
- 使用其他终端连接到termux终端
先说第一个,以阿里云/腾讯云为例,可以在官网的控制台查看外网ip,当然我绑定域名之后直接ping一下域名更方便
1 | ping -c 1 https://liefeng.github.io |
这样获取返回的外网ip,可以使用termux通过ssh连接主机终端。首先,termux安装sshd
1 | apt install sshd |
之后像使用putty一样连接主机终端就可以了,如以root账户连接ip为127.0.0.1的主机终端:
1 | sshd 127.0.0.1 -lroot |
这样的好处是对于我这种只能带着安卓平板(yoga book)到处跑的人来说,随时可以连接到主机进行配置/维护,同时也意味着远程连接着一台真·Linux主机,在某些时候能弥补Android平台限制的技术问题。
关于第二个,实际上对我来说没啥用。为了方便其他终端也能管理termux终端(实际上是因为安卓手机编程太蛋疼了!),在安装openssh之后使用JuiceSSH连接termux终端,电脑端可以用xshell连接(可以本地连接本地,毕竟Android手机用这个很麻烦,当然我yoga book自带灵光键盘不存在这个问题哦!),之后使用JuiceSSH提取密钥,毕竟termux不支持账户密码验证!!当然连接时注意端口!termux的ssh端口默认是8022,当然可以先自己查看一下!
安装openssh:
1 | apt install openssh |
查看sshd服务端口:
1 | netstat -ntlp |grep sshd |
当然openssh也是支持通过ssh连接其他终端的,语法为:
1 | ssh 用户名@主机地址 |
配置vim
关于这里就完全是Linux配置vim的套路了,所以我真的不想写些什么了,毕竟用Google搜索任一“Linux+vim配置”的文章都比我写得好,写得全面!何况相对于vim本身,配置开发环境更为重要!毕竟vim配置的目的还是作为IDE来用。这里,说一下termux上所集成的语言包和其他必要包:
1 | python 默认安装的是Python3 |
总之,有什么需要的直接输入
1 | apt list |
就可以了,对着列表安装自己所需要的。回到VIM配置的问题,如果你需要配置vim,只需在Home目录创建一个~/.vimrc文件即可以配置vim了,然而termux的vim自带该文件,就是配置写入有点问题(实际上还是权限问题!何况我是x86!!)所以既然对我来说足够用,那么就不多说了,具体建议参考这篇文章:
https://github.com/yangyangwithgnu/use_vim_as_ide
配置渗透环境
这里为了图方便,直接把所有基础包直接安装,大小约122MB。如果你的termux是第一次使用,可以直接复制我的安装命令:
1 | apt install git wget vim nano tar less nmap openssh hydra python2 -y |
nmap,openssh,hydra算是环境的一部分,具体怎么用问Google。之后就是安装其他的环境包:BBScan,subDomainsBrute,RouterSploit,whatportis和sqlmap,具体怎么用依然问Google,总之安装玩就算环境搭建成功,用法问Google!!!
安装sqlmap,BBScan,subDomainsBrute和RouterSploit;提示缺失python扩展包,直接用
1 | pip2 install <对应扩展包> |
1 | git clone https://github.com/sqlmapproject/sqlmap.git |
再安装whatportis
1 | pip2 install whatportis |
这样一个基础的渗透环境就配置好了,起码比N年前那种所谓Android渗透包(基本上都要root才能用)要好!!至于用法有不会的就Google!!有不会的就Google!有不会的就Google!重要的事情说三遍!!总之熟能生巧!!!
Linux下机器学习开发环境的配置
关于这个环境,我是准备拿来做计算的,毕竟搞工业仿真,如果一直在本机上测试那么我电脑直接捐了算了!!何况让服务器一直吃灰成何体统!!毕竟是已经续费到毕业的!不得不用!!
- 设备:阿里云ECS
- 执行终端:YogaBook(基于termux模拟终端)、Windows10
首先去下载Anaconda2,因为我的ECS是在青岛机房,而众所周知的一些原因,从官网上下载会导致速度特别特别慢,这个时候推荐从清华大学的镜像源下载。由于使用python2.7,就下载对应的Anaconda2-5.0.1。
如果你不确定选择什么版本,可以先查看一下系统信息
1 | uname -a |
我选择Anaconda2-5.0.1-Linux-x86_64.sh。并且创建一个Anaconda目录用于存放下载和安装,当然你也可以下载到根目录。
cd 到Anaconda目录,执行下载,不得不说国内的源下载速度是非常快的!!35mb/s
1 | wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda2-5.0.1-Linux-x86_64.sh |
下载好之后执行安装,整个过程就是按几下Enter,输入几次yes。如果你的命令行卡在下载命令上了,记得先退出再安装!
1 | bash Anaconda2-5.0.1-Linux-x86_64.sh |
安装完之后记得添加环境变量!实际上安装过程中会自己问,可以选择yes
之后就是检测一下能不能用,输入python看是否能返回python。但是输入conda、jupyter一类的却返回command not found,解决方法是把anaconda2/bin这个目录添加到环境变量就好了(具体操作看安装目录,默认安装目录是在~下)
1 | echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc |
更新path以立即生效
1 | source ~/.bashrc |
这时再输入那些命令就可以执行了!因为深度学习环境需要一些开源模块,尤其是依托于Scikit-Learn,这时候就需要自己手动去安装了,可以使用pip或者conda。当然Numpy ,Scipy ,Matplotlib这些包也是必须的!!剩下的包就随用随加。
1 | conda install scipy |
但是还有一个问题是Anaconda官网因为众所周知的原因国内访问慢的要死,这个时候还是改用国内的源更方便一些!!
添加Anaconda的TUNA镜像
1 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ |
设置搜索时显示通道地址
1 | conda config --set show_channel_urls yes |
这个时候可以考虑配置jupyter了,首先要测试一下环境
1 | jupyter notebook |
环境没问题就先来配置ipython,输入:
1 | ipython profile create |
然后
1 | cd ~/.ipython/profile_default/ |
对生成的2个文件进行编辑,使用方法是先键入
1 | c = get_config() |
再查找到c.InteractiveShellApp.exec_lines语句,在[]里键入常用的模块,我以自己的为例
1 | "import pandas as pd","import numpy as np","import scipy.stats as spstats", "import scipy as sp" |
因为过多的导入会影响ipython的开启速度,这里就自己斟酌吧。
接下来,为了能够远程访问我这台ECS上的jupyter notebook,要进行最恶心的设置了。首先,为了保证能够完美设置,确认写入path环境之后重启ECS,之后,输入
1 | jupyter notebook --generate-config |
而root会报错,要求加入-allow-root再执行,所以
1 | jupyter notebook --generate-config --allow-config |
执行成功会显示:
1 | Writing default config to: /root/.jupyter/jupyter_notebook_config.py |
反之报错,重复上述步骤直至成功,一般重启服务器即可。既然生成了配置文件,接下来设置个密码,为了方便起见建议用ipython手动设置!!即先输入
1 | ipython |
进入ipython,然后配置自己的密码
1 | In [1]: from notebook.auth import passwd |
回车,之后会返回一串密文,即Out[2]:那个。这个时候配置jupyter_notebook_config.py
1 | vim jupyter_notebook_config.py |
找到,去掉注释#,然后按自己情况编辑
1 | c.NotebookApp.ip='*' |
因为这个文件大概600+行代码,建议用:?keyword 来查找。之后在非隐藏目录,启动jupyter notebook
1 | jupyter notebook |
若是root用户,则执行
1 | jupyter notebook --allow-root |
然后ip:端口号即可使用jupyter,实际上域名:端口号也可以。记得在安全组的公网入方向添加这个端口
但是这样又爆出了一个严峻问题,就是我是用root用户的,而jupyter是整个服务器的目录都能读取并且按照操作用户的权限来执行,所以一旦密码被破解我的服务器就会被日!!!因此要考虑一下安全问题:
- 不到用的时候不要开启jupyter
- 设置超级复杂的密码
- 第三方安全软件监视端口
浅谈暴力web攻击
关于这个傻逼问题还是和阿里云有关。因为web应用防火墙,后台总是会看到一些“奇奇怪怪”的攻击记录,其中最多的就是脚本木马、上传漏洞类型的暴力攻击。
- 首先看一下我的服务器安全组配置:公网出全部端口,公网入21/22/80/443端口
- 其次,统计一下请求方式:POST、PUT、GET
- 没有发现有CSRF攻击的记录
从上面的信息可以看出端口限制基本上是死的,对于80端口入侵,可行性最高的就是跑GCI,使用比较无脑的GCI扫描器进行穷举。对于21/22端口入侵,FTP就算了,我服务器上FTP服务是死的。而22端口,除非拿下我的账户密码直接ssh,否则入侵成功的几率是不存在的!443就算了。
那么从HTTP协议来看,实际的安全性如何:
- GET (选择):从服务器上获取一个具体的资源或者一个资源列表。
- POST (创建): 在服务器上创建一个新的资源。
- PUT (更新):以整体的方式更新服务器上的一个资源。
关于具体的就不说了,实际应用当中都是一些嗅探手段,用于垃圾扫描。毕竟当下做SQL注入也是特别难的。从日志里看,这类请求无非是检测是否存在某目录文件。但是这一引出了一个大的问题——漏洞利用。HTTP协议,win10下可以使用telnet命令(在系统中手动开启这个命令才能用)。更具体的说明详见从入侵者的眼中去理解 http 协议
如上所述,从注入角度看基本上是攻不进来的,但是一旦自身内部有问题,存在漏洞就不好说了。关于漏洞影响这里不多说,而且给出的建议也很简单却很难做好:
- 合理配置服务/端口与权限
- 关注安全信息,及时更新软件,打补丁
- 使用第三方高效的服务器安全软件
搭建本地git仓库
centos搭git仓库很别扭,而且….虽然是为了技术验证,但讲道理这个不如QQ群的群共享好用(如果是短期项目的话)
- 设备:阿里云ECS(吃灰中)
首先通过yum源下载安装git
1 | yum install -y git |
安装之后会在/home/目录下生成一个git目录,但相关操作之后再说。首先添加个用户(这里用户名为git),并且为之设置密码
1 | adduser git |
下一步,我们在/home/git/目录下建立一个子目录,作为git仓库目录。因为是给美赛准备的,我这里就是mcm
1 | mkdir /home/git/mcm |
接下来给予用户组和775权限:
1 | sudo chown git:git /home/git/mcm |
到这一步,基本上就配置完了,接下来切换到git用户组,在mcm目录下创建仓库即可
1 | su git |
这里我建立一个仓库名为mcm的仓库
1 | git init --bare mcm.git |
至此,git仓库搭建与配置结束(结束了??是我懒得搞那些没用的权限设置,尤其是我习惯用shell!!何况用ssh来使用对我的队友极其不方便!!),马上打开git bash验证一下:
1 | git clone git@ECS的ip:/home/git/mcm/mcm.git |
输入yes之后,返回
1 | warning: You appear to have cloned an empty repository. |
到这里一切都ok了,虽然感觉使用起来然并卵。关于上传项目参考git上传仓库(感觉这样给队友用只会给她们增加压力XD)。当然,如果你是作大型的自建仓库使用,建议用Gogs或者GITLAB,当然我这里自用就用不着这么上纲上线的程序了。
win10 更新后WIFI无法链接的解决办法
一般来说都说win10强制更新导致的,首先先手动关闭自动更新(虽然然并卵):
- win+R,输入services.msc,找到Windows Update,手动关闭。
之后,打开控制面板,网络和Internet-查看网络状态和任务-更改适配器设置-WLAN-右键,属性-Microsoft网络客户端-配置-驱动程序-更新驱动程序-浏览计算机以查找驱动软件-从计算机的设备驱动程序列表中选取-Qualcomm Atheros AR9485 无线网络适配器-下一步
以上,解决问题。
git无法部署hexo的解决办法
最近部署hexo会报错
1 | fatal: HttpRequestException encountered. |
提示连接不到GitHub,Google了一下,据说是因为Github最近停用了TLS 1.0和v 1.1导致的,但是呢感觉是慢性发作….
解决方法也很简单,把_comfig.yml中的repo由
1 | https://github.com/examplename/examplename.github.io.git |
改为
1 | git@github.com:examplename/examplename.github.io.git |
之后重新部署即可!!
WIN10内存占用过高的解决办法
首先对于WIN10真的是没法吐槽,系统原因导致很吃机械硬盘,再加上本来电脑配置就差,所以硬盘经常卡我也能接受,虽然配置差,但是内存经常占用过高我就实在是不能忍了,大概折腾了一下,可以这样解决:
先放电脑配置:
硬盘:西数 1T 机械硬盘,5400转
内存:4GB DDR3,什么牌子的不知道
CPU: i5-4210m,2.6GHZ
4GB的内存的确是寒酸了点,看任务管理器,主要是chrome占用比较高,网页运载大。所以把默认浏览器改换edge之后好了很多,内存占用大概是chrome的2/3
其次,考虑内存不足就去设置虚拟内存,在虚拟内存设置页面,对非系统盘都设置为无分页文件,仅对系统盘设置自定义大小,初始值和最大值都设置为推荐值。设置好之后重新启动。内存占用的确就能降下来了,之前大概剩余300MB左右,优化之后剩余稳定在1GB左右。
当然最好的方法还是加内存条,但是对于这台配置很烂的机器就算啦。等毕业了买matebook13还不是美滋滋!
给GITHUB PAGES绑定域名
阿里云(万网)的ink域名很便宜,我就注册了一个….
ping一下自己的github仓库地址,然后将IP做A、CNAME解析,并在github上补充自己的域名,在仓库目录下增加只含新域名的CNAME文件即可。
又回归独立域名了!!!
基于MKDocs建立个人Wiki
实际上这个东西是从冉酱那里发现的,然后我思考了一下现实需求,就决定也弄一个。
可以满足的需求如下:
可以作为博客替代品,语言为英文(提供姿势水平)。
仅用来写学习笔记,科目是数学、物理学、材料科学、计算机科学,语言为英文。
如同作业一样强制自己做学习笔记,有利于留学生活的高效性。
因此,这个基于Python并可以部署到GitHub pages的Wiki程序还是很适合留学生用的,缺点是三栏式主题只有一个。
搭建
MKDocs的官方教程写得很详细,可以从官网上看:https://www.mkdocs.org
它支持多个版本的python,仅仅使用pip模块来安装即可。所以在CMD(建议管理员权限打开)下检查一下已安装的版本和pip,就能执行安装了:
1 | python --version |
注意这里只要显示有较新版本pip即可,除非安装失败否则不要按照官网教程更新pip!!容易误删!!我的python版本是python3.7,pip版本是pip19.2.1。所以直接开始安装,并查看版本。
1 | pip install mkdocs |
安装成功,显示mkdocs版本为1.0.4,匹配python3.7。注意安装目录是python安装目录下\lib\site-packages\mkdocs,所以写文章之前,要先在你想要的目录下创建项目,以方便后期备份!!我习惯放到D盘里了,名字就是my-project。因此
1 | D: |
之后安装material主题
1 | pip install mkdocs-material |
然后在配置yml文件之前,先考虑一下如何建立这个可以web访问的网站?它可以放到GitHub Pages上,这意味着可以绑定域名并且开启https。而一个github账户只能开一个个人Github Pages,下属无数个项目GitHub Pages,所以首先要建立项目GitHub Pages。这里我参考了:https://segmentfault.com/a/1190000003946969
实际操作没文章里说的那么难,无非是:
随意建立一个repo,名字随意,在setting里直接拉到GitHub Pages,Source选择master branch,Custom domain设置为自己的二级域名(当然你可以绑其他域名,无所谓一二级)。勾选Enforce HTTPS从而强制开启https。这个时候会自动生成一个CNAME文件,里面是二级域名,不带https的那种!!如wiki.chnliefeng.ink。
打开域名服务商,如阿里云,在域名解析里开启二级域名,是CNAME记录。我的设置是CNAME主机记录为wiki,记录值为liefeng.github.io。然后解析,过一会儿即可访问 https://wiki.chnliefeng.ink
然后这个时候参考官方指南来配置mkdocs.yml。注意pages要用nav描述。
部署
先git clone那个repo,记得更改branch为gh-pages,然后把my-project里面所有东西放到repo目录下,之后
1 | mkdocs gh-deploy |
这样就部署好了
Mkdocs支持markdown数学公式
最近要用来写物理/数学的学习笔记,就研究了一下。实际上这个设置非常简单。安装pymdown-extensions然后配置mkdoc.yml文件即可,
首先安装插件
1 | pip install pymdown-extensions |
然后在mkdocs的根目录下的docs文件夹中新建一个mathjax-config.js文件,该文件是辅助配置MathJax,里面代码为
1 | /* mathjax-loader.js file */ |
之后在mkdocs.yml文件中添加以下代码即可
1 | markdown_extensions: |
之后部署带有markdown数学公式的文档,查看网页效果即可。
Zabbix 监控系统的搭建与应用(未完待续)
这是来自乌海市某物联网科技公司的需要,也是我的的第一单。
使用资源:
- JAIST Cloud Service 提供Centos7桌面环境
- Zabbix
- 自己组装的电脑主机,装Centos7,作为Zabbix的总服务器端
- 计算机网络集群,windows7,200台构成
由于这个公司某无法无天的技术员利用公司计算机集群挖矿,对公司造成重大经济损失,而他掌握公司技术命脉,且所有技术设置都是黑箱操作,因此我们建立zabbix系统的目的是:
- 实现对计算机集群的实时检测,以确定运行情况,打破黑箱操作的现状。
- 在监控之后,使用teamviewer进行远程维护,同时进行逆向技术破解计算机集群设置,实现技术夺权。
Zabbix简述
Zabbix是开源软件,是一个企业级分布式开源监控解决方案。其官网有中文版说明书。对Zabbix的概述中,官方说明中有这样2个需要注意的描述:
Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。
Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。
Zabbix agents 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
所以,如果我们想构建一个Zabbix监控网络,假设要监控M台主机构成的网络,可以使用1台设备作为server端,其他主机节点作为agents,但是会很吃server的计算性能,导致单个server终端负载过大。如果在这个网络中的主机节点分为N个组,每组配置一台proxy,之后总的sever只要采集每一组当中那台proxy的数据,并进行整理即可实现对整个主机网络的监控。这里很明显M远大于N,从硬件的运行性能上看,对于大型网络集群配置并使用proxy是很有必要的。
针对这一点,官方说明中有提到:
- 另外,回过头来整体的了解下 Zabbix 内部的数据流对Zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
举个例子:网路由A,B,C3个地区的计算机集群组成,不同集群当中主机数量不同,施工技术方案与质量不同,网络运营质量不同,因此如果单个server同时监控A,B,C3个地区的计算机集群,其负载可能过大导致运行可靠性不稳定。而如果A,B,C3个地区各配置一台proxy,这样server的实际负载只有3个proxy,而单个proxy的负载也仅为该地区的计算机集群。这种网络体系对后期的增改很有利,且更具稳定性。
Zabbix的安装与部署
我从学校获得了一个Centos的云主机,但是没有root权限,不过只能用有限的资源来做技术验证了,具体信息如下:
1 | 使用主机:JAIST Could |
首先要搭建LAMP环境,安装包一类的在JAIST仓库里有很多,所以不用愁资源的问题,网上也有很多LAMP环境的搭建教程。而普通用户没有root权限,这就意味着不能使用yum命令来配置/安装服务,但是wget命令来搭建和配置简直灾难。所以我的解决办法是使用yumdownloader命令,但是在此之前要先检查仓库里有没有所需的服务包,命令格式如下:
1 | yum list '安装包(rpm包)名称*' |
如果显示有,则可以直接下载安装rpm包
1 | yumdownloader rpm包 |
解压rpm包
1 | rpm2cpio rpm包 |cpio -idvm |
添加PATH,如果在HOME目录下,可以如下
1 | vim ~/.bashrc |
重新登录 或者 source 一下.bashrc文件即可使用这个程序。
后来由于JAIST Could 是分出来的目录权限,不是云主机也不是VPS那种类型,而是类似N年前流行的那种虚拟空间。给学生的账号也没有root权限,能用的服务也很少。但是学校的docker我还没测试,因此就直接转战虚拟机了。
CentOS的安装与配置
总结一下步骤:
- 系统的版本选择与USB系统盘的制作
- 系统安装与网络及其他设置
关于Centos要注意一下它的版本问题,针对不同版本的Linux主要以下2个命令:
1 | uname -a |
这里要说明一下Centos的发行版本之间的区别(机翻自readme文档):
1 | List of images in this directory |
未完待续….
戴尔服务器出现 cpu0000 cpu2 internal error 的解决办法
研究室有一台二手的DELL PowerEdge T620,源自江东林课题组,不过目前被我改来做计算设备,具体配置如下:
1 | Workstation: |
由于是双路CPU,并且这个电脑有段时间没使用了,虽然调试结果看是能够基本正常使用,但总是出现系统错误导致win10强制重启。根据这里(https://jingyan.baidu.com/article/fec7a1e5487f905190b4e7ee.html),从系统的高级选项卡设置里取消了系统失败时自动重启的设定。但是不久就开始闪黄灯了,提示硬件设置有问题。根据面板显示是cpu0000 cpu2 internal error (IERR) contact support。本来就是用来跑计算的,也不止一次因为设备不稳定导致运行中断而损失惨重,因此就先暂停任务,解决这个硬件设置问题。
我参考这里(https://www.jianshu.com/p/572fddcd9450)来进行解决。
这个错误是因为开启了CPU节能设置,需要在BIOS中关闭该设置即可恢复。解决方法是:
①服务器按住电源键15秒后到关机状态,并拔掉电源,再按住电源30秒放一下静电,然后静待1分钟;
②接通电源,会自动开机;不行的话就手动开机。
③开机后再dell图标出来的时候按下F2还是F11来着,进入BIOS设置;(我的系统提示是F11,但一般应该是F2)。
④system Setup - System BIOS ,选择 system profile Settings,进入后将右边的 Performance Per Watt(DAPC)改为 Custom;然后将 CIE 和 C States 选项改成 Disabled。
⑤保存设置并重启设备
至此,错误解决。重启之后设备再没闪黄灯,也没有出现莫名其妙的设备中断事故。果然很久没使用的老设备都要先好好调试才行….
- 本文链接:https://www.northarea.tech/2020/04/12/0x001/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
所以如果是重要的评论,建议跳转 GitHub Issues 发表。
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues