保护你的ssh

背景:我的第五次建站遭遇的攻击就是ssh的cve漏洞,好在我有备份的习惯。仅此记录保护过程并警示后人。

明招:

1.改端口

1
nano /etc/ssh/sshd_config

将文件中port后的22改成你想要的端口

2.开启密钥登陆

建议查看openssh官方文档

3.限制密码错误次数

4.只允许白名单ip登陆

不推荐家里是动态ip的小伙伴使用

奇怪的方法:

嘿嘿,我最喜欢的部分来咯

首先,假设我要攻击别人的ssh,我会怎么下手?肯定是首选漏洞!

像我这种小弱鸡利用漏的不可能自己发现,所以我会先查ssh版本号,再查该版本的漏洞。

1.篡改版本号

比如OpenSSH 7.7前存在一个用户名枚举漏洞,通过该漏洞,攻击者可以判断某个用户名是否存在于目标主机中。

现在,将ssh升级到最新版,并修改版本号为7.4,可以浪费攻击者时间,让别人不知道你的真实版本。

首先备份sshd文件

1
cp/usr/sbin/sshd/usr/sbin/sshd.bak

查找版本号

1
strings /usr/bin/ssh |grep OpenSSH

修改版本号

1
sed-i's/OpenSSH_8.8p1/OpenSSH_7.4p1/g'/usr/sbin/sshd

2.修改banner

当ssh暴露在公网时,大量的bot会来尝试爆破你的服务器,如果你使用的是弱口令,很抱歉,你的服务器可能没了…
如果输错密码,服务器便会返回Permission denied,扫描器就是通过检测服务器返回的信息来判断是否登录成功的。有些不太聪明的bot会识别banner为Permission denied时认为这个密码是错的。

打开sshd_config, 在末尾添加

1
Banner [txt文件路径]

然后创建txt文件,在文件中写入Access denied或其他任意文本。重启ssh

3.开一个ssh蜜獾

这个也只能做做安全审计啥的,看看谁扫了你的假ssh,并记录他输入的命令(不会执行),可以使用sshsame

warn:一个封闭的端口比一个开放的服务好。

4.使用knockd

比较复杂,比较安全。

例如一次击中端口52996,一次击中端口2008,两次击中端口54088,这相当于敲一个关闭的门。用一种特殊的暗码来被konckd识别,konckd将打开一个端口。例如ssh端口,直到超时后或再次敲门ssh端口被knockd关掉。

5.使用代理

这个自行谷歌

6.用iptables重定向22端口到你仇人服务器上的ssh

这个不好说,大家看看就行


剩下那几个压箱底的就不说了,以免服务器被破。doge


保护你的ssh
https://carbon-wolf.github.io/posts/60b1ae39.html
作者
carbon-wolf
发布于
2023年1月6日
许可协议