这是一个公网服务器ssh登录保护的实践,我自己的博客是在京东云,开放了公网ssh登录的端口,原来是22,总有黑客在不断地扫,每天lastb一堆,非常烦人。
fail2ban
然后我启用了fail2ban:
|
|
编辑配置文件:
|
|
我只能说,有效但是我不喜欢
,这种事后治理的黑名单模式,别人还是能扫到。对于有洁癖的我来说是不可接受的,改了ssh端口,只能说有改善,但是不大。也曾想过关了密码验证用证书验证,但是我自己的场景不适合。
白名单模式
没办法了,自己写代码实现吧,大概的逻辑就是我自己实现一个http服务器,这个http server需要实现一个接口,这个接口负责监听一个承担放行ssh端口的路由。
-
当调用这个接口的时候 -> 会要求你做认证 -> 如果认证通过 -> 那我就把你的IP加到白名单中。
你就可以ssh远程了
-
当调用这个接口的时候 -> 会要求你做认证 -> 如果认证不通过 -> 后台开始计数 -> 同一客户端多次错误访问触发尝试限值 -> 获得了12小时冷静期 -> 再访问的话直接返回400。
其中获取IP有几个优先级,分别是:
-
用户在header中自定义的(这个优先级最高)
-
x-fowarded-for
-
x-real-ip
-
上一级的remote_addr
代码我就不贴了,怕人搞事情。总之改完以后世界非常清净,如果你也有一样的烦恼,提供一个思路啦。