一篇不算太正规的入侵检测

起因是这样的,刚入职一家小公司,发现部门同事和负责人有点不太对劲。

因为入职时开的工资比他们高,但是从事的工作内容也和同事不一样,主要就是Linux服务器方面,包括安全问题,而且这家公司的服务器安全问题比较重要。所以问题来了,同事都是做硬件实施的,跟服务器基本不搭边,而且他们也都不懂Linux,然后呢,他们就会各种偷窥屏幕之类,部门负责人的态度也不明确,而且他也有点想让周围同事从我这里学东西的意思。所以呢,我在做工作的时候,就稍微的留了些手段,毕竟出来混嘛,害人之心不可有,防人之心不可无。万一遇到卸磨杀驴的人了呢,你说是吧。

问题服务器是一台CentOS6.9,因为被黑了,所以被机房拔线了。根据负责人提供的信息,判断应该是中了挖矿病毒。到了现场后,插上显示器键盘,随便一看,就发现CPU占用100%,一个奇怪的进程占满了CPU资源,名字叫bash,二话不说,干掉。用这个名字也太low了点。

然后一分钟后进程又来了,哈哈,不杀了,看看宿主,一个根本不会用到的用户,su过去,找到程序位置,打包,scp走,删之。

查看定时任务,嗯,确实是在这里,删。

回到ROOT下,清掉证书登陆。这时候又发现一个奇怪的进程,叫imap,哈哈,看来还有。不过没关系,我把之前删掉文件中的几个域名全BAN掉,让你下不了病毒回来。

然后去看了下那几个病毒文件,居然有xhide,这个鼎鼎大名的东西,哈哈,那么系统里肯定还有隐藏的东西,但是呢,我也不去深挖了,扔那。

随手看了下登陆日志,我去,一堆爆破信息,当然也记录了第一次成功登陆的信息,期间因为把这事跟销售随口提了一下,销售就要我提供完整的资料,美其名曰写报告,我就呵呵了,这种套路,谁不明白呢,给了你信息你就转给我同事了。

好了,既然你们这么爱玩套路,那就别怪我留一手啦。隐患不排除,留着,哈哈。

debian fail2ban配置

因为黑色自由后台很多SSH尝试登陆的日志,所以就干脆加了一套安全机制,把那些爆破的IP全给封掉。这里用到的就是fail2ban。

安装很简单,apt install fail2ban iptables

这里要提一下,debian 11好像默认是不带iptables的,导致我配置好以后无法生效,查看fail2ban日志才发现原来没有iptables命令,真的是尴尬。

/etc/fail2ban/jail.conf拷贝一份,名为jail.local。这里直接修改jail.local文件,因为网上说更新后会覆盖掉jail.conf文件。

vi jail.local

bantime = 10m 这个是ban掉IP的时效,单位是分钟,为负数是永久封禁,但不建议这样,因为有些网络运营商用的是共享IP,永久封禁后这个IP后的所有人都连不上了。

findtime = 10m 这个是尝试访问的时限,这是我个人的理解,就是说在10分钟内访问。

maxretry = 5 这个是最大访问次数,和上面一条配置在一起就是在10分钟内最大访问次数是5,超过5次就会封禁。

然后找到[sshd]段,加上:

enabled = true

这就可以了,其它的一些ignoreip之类看你个人情况,有固定IP就填上,表示这个IP在安全策略以外。

jenkins ssh发布时提示nohup: failed to run command `java’: No such file or directory

新环境的jar包通过jenkins ssh发布,结果jar包推送到服务器上以后,提示nohup: failed to run command `java’: No such file or directory。这可让我有点意外。

本来在/etc/profile里都已经写好了java的路径,这怎么会提示找不到java命令呢?

随后,又在jenkins ssh发布账号的个人profile里编辑了一下,添加上java的路径,后来想了一下,干脆省事点,直接source一下算了,最后还是在启动脚本里添加了source /etc/profile,这个是比较简单粗暴的。

网上还有一种方法,是直接给java做一个链接,到你真实的java路径,这个就算了,不想去修改了,如果你的启动脚本比较多,还是可以使用这种方法的,毕竟是一劳永逸,方法如下:

ln -s /your_java_path/bin/java /usr/bin/java

Centos 7 使用key登陆SSH

首先,你要新建一个用户,权限可以最小,用来ssh登陆系统。

useradd

1、ssh-keygen -t rsa

使用新建的用户执行这条命令。

会让你输入密码,根据个人需要,我是没填密码,因为使用方便。

然后会在你当前用户的home目录下生成.ssh,里面有id_rsa,id_rsa.pub,id_rsa.pub就是公钥:

2、cat id_rsa.pub >> authorized_keys

因为ssh默认是会去读取authorized_keys里面的数据。

id_rsa是私钥,拖回本地来。

3、修改/etc/ssh/sshd_config

PermitRootLogin no

PubkeyAuthentication yes

PasswordAuthentication no

systemctl restart sshd

4、vi /etc/sudoers

在%wheel ALL=(ALL) NOPASSWD: ALL这一行上添加:

youruser ALL=(ALL) NOPASSWD:ALL

至此,就可以用新建的用户加id_rsa来登陆系统了。需要root权限直接sudo -s就可以。

PS:在实施过程中因为偷懒,直接使用ssh-copy-id来把key分发到其它服务器上,其中一台始终无法登陆,提示:

Authentication refused: bad ownership or modes

后来发现是.ssh目录权限问题,直接给700,问题解决。

ubuntu16.04配置openvpn服务器

首先声明,这是一篇转载,原作者写的很清晰,为了防止原作者关站,我就给转载过来了,原地址如下:

https://www.jzfu.cc/2018/09/04/Ubuntu16-04%E6%90%AD%E5%BB%BAOpenVPN/

因为原作者是把客户端配置文件放在WEB目录下,这里我就不贴出来了,毕竟每个人的NGINX配置不一样,感兴趣的可以去原作者处查看。

前提条件
拥于公网固定IP地址的Ubuntu 16.04服务器。具有sudo权限的非root用户,当然如果你就是root更好。达到这些条件之后,用你的sudo用户登录到你的Ubuntu服务器,然后继续按照以下步骤进行。

阅读更多

kettle7 新建数据库连接灰色

在windows server 2012上装的kettle7.1,用来跑公司的业务数据,结果kettle7.1打开后根本无法连接数据库,新建数据库连接是灰色,资源库连接也是灰色。

网上一顿搜,在使用了修改配置文件乱码,开启资源库连接提示的情况下,新建数据库连接仍然是灰色。

刚好就顺手去自己增加个连接,发现kettle7.1报错了:

org.pentaho.ui.xul.XulException: org.pentaho.ui.xul.XulException: java.lang.reflect.InvocationTargetException

在老外那里看到了解决方法,把你的jdk降到8。因为这边是新装的windows server 2012,所以jdk使用的是最新版,降到8后就正常了,资源库和新建数据库连接就都有了。

MinIO集群CPU占用太高

之前搭建的MinIO集群,用来测试公司的业务图片。今天登陆上去一看,发现集群的CPU占用很高,被Minio全占完了,100%。

因为集群平时不做其它事情,负载也完全很低,出现CPU 100%的情况非常异常。检查了一圈也没啥可疑的,唯有CPU一直处于100%。

无奈只能更换MinIO了,去他们官网上又重新下了一份回来,当前版本为:minio version RELEASE.2020-10-28T08-16-50Z,重新启动集群后,CPU立马降下来了。

之前在他们的github上看到也有人提出CPU占用问题,官方回复都予以修复,看来之前也确实出现过同样问题,只是时间节点跟我的情况对不上,所以干脆重新下载了一份新的回来,没想到问题就解决了。