开启SFTP日志记录

因为工作需要,需要调试sftp,设备的一系列操作日志都要,所以就有了这篇。PS:公司采购定制设备,猫腻是真多,乙方供货商态度真的是差的一批,程序逻辑半天都说不清楚,每次说的还都不一样,我都想去翻他代码了。

vi /etc/ssh/sshd_config

Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO -f local5
LogLevel INFO

INFO只是默认情况下的详细信息之一,它提供有关文件传输,权限更改等的详细信息。如果您需要更多信息,则可以相应地调整日志级别。各个级别(按详细顺序)是:QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3
VERBOSE上的所有内容可能都比您想要的要多,但它可能很有用。

vi /etc/rsyslog.conf
在最后添加:
auth,authpriv.,local5. /var/log/sftp.log

service rsyslog restart
service sshd restart

可以去/var/log/查看日志了。一切都将在这里显形。:)

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

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

因为入职时开的工资比他们高,但是从事的工作内容也和同事不一样,主要就是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在安全策略以外。

终于,还是给黑色自由加上了https

原本黑色自由一直都是不带https的,懒得操作,也懒得操心。

起因是某天凌晨,在手机上打开黑色自由的时候,发现页面下方被加了一条广告。本来是习以为常的事情,但出现在了这里,就顿时觉得不爽,电信运营商猥琐这事早几年就知道,但没想到的是居然轮到了黑色自由的头上,无奈就只能套个https在上面了,加了ssl,总比裸http强吧。

操作方法就很简单,使用let’s encrypt的证书,certbot安装,它会自动帮你找到nginx配置文件里的站点,全程提问式,几分钟就搞定,然后自己写个crontab隔一个月跑一次自动更新一下就行,操作方法我就不写出来了,给个地址自己去看好了:

https://certbot.eff.org/lets-encrypt/debianbuster-nginx

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服务器,然后继续按照以下步骤进行。

阅读详细 »