ssh 一分钟被打 1000 次, fail2ban 有用吗?
Apr 20 23:40:03 debian99 sshd[2443]: Failed password for invalid user liyanjun from 134.209.229.252 port 44720 ssh2
Apr 20 23:40:03 debian99 sshd[2450]: Failed password for invalid user liyaocheng from 134.209.229.252 port 44948 ssh2
Apr 20 23:40:03 debian99 sshd[2453]: Failed password for invalid user liyifei from 134.209.229.252 port 45180 ssh2
Apr 20 23:40:03 debian99 sshd[2431]: Failed password for invalid user lixy from 134.209.229.252 port 43946 ssh2
Apr 20 23:40:03 debian99 sshd[2415]: Failed password for invalid user lixiang from 134.209.229.252 port 43168 ssh2
Apr 20 23:40:03 debian99 sshd[2459]: Failed password for invalid user liyongmin from 134.209.229.252 port 45918 ssh2
Apr 20 23:40:03 debian99 sshd[2441]: Failed password for invalid user liyanhao from 134.209.229.252 port 44636 ssh2
Apr 20 23:40:03 debian99 sshd[2446]: Failed password for invalid user liyanjun from 134.209.229.252 port 44794 ssh2
@:~$ sudo cat /var/log/auth.log | grep 134.209.229.252 | grep invalid | wc -l
948
@:~$
暂时没用 fail2ban ,自己写个脚本,每一分钟扫一次 auth.log,大于 10 次就 ban ,但是有的 ip 一分钟就能尝试 1000 次,太凶残了,能限制 ssh 并发个数吗,超过 10 个,就不要管了。
禁用密码登录就好了
f2b 当然有用了,就是为了防这种情况的。这一点并发问题不大,没必要自己写。
如果是自己的机器,把用 geoip 把国外的 ip 全给禁了会好很多
我自己的服务器都是直接把端口封了,需要的时候再从控制台里开。
主要是也没什么需要经常 SSH 上去的工作,甚至有的时候直接用网页的就够了。
禁用密码登陆吧
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name sshuser --set
iptables -A INPUT -m recent --update --name sshuser --seconds 3600 --hitcount 5 -j DROP
随便抄了个 IPTables 规则,一小时内只能连接 5 次,超过则阻断。
顺便一提 f2b 其实也差不多……
我的都是密钥登录 + 更换高位端口
fail2ban + Google 动态口令
我看 f2b 原理也是定期扫 log ,1 分钟是最低间隔了,如果不能限制访问频率,那和我这个脚本效果一样啊,1 分钟疯狂跑字典,从 di 跑到 li 了
复杂点用 iptables ,简单点 ufw limit ,外加改 ssh 端口,禁止密码登陆
能限制 ssh 并发个数吗,超过 10 个,就不要管了。
那别人一直打,你正常登陆不也登陆不了?
我一般都是改 sshd 端口+f2b 的,但就现有日志来看,就算不加 f2b 也一样。所以建议你还是直接改 ssh 端口吧
禁用密码登录,让他扫
使用防火墙,平常不用的时候关闭所有目标访问,自己用的时候,允许自己 ip 访问就好了。
我一般情况都不怎么登录 ssh ,只有发布程序的时候登录,感觉还行。
这不是被打,而是有人在暴力破解 ssh 的账号。改端口也没啥用,很快就能再次连过来。最有效的办法还是建立 iptables ssh 端口的白名单规则。
这个没限 ip ,被打了自己也上不了吧?
我家里路由器也是。。天天被扫
Fri Apr 22 08:56:40 2022 auth.info sshd[12203]: Invalid user demo from 93.95.230.165 port 54250
Fri Apr 22 08:56:40 2022 auth.info sshd[12203]: Connection closed by invalid user demo 93.95.230.165 port 54250 [preauth]
Fri Apr 22 08:57:09 2022 auth.info sshd[12316]: Invalid user demo from 93.95.230.165 port 54478
Fri Apr 22 08:57:10 2022 auth.info sshd[12316]: Connection closed by invalid user demo 93.95.230.165 port 54478 [preauth]
Fri Apr 22 08:57:39 2022 auth.info sshd[12487]: Invalid user demo from 93.95.230.165 port 54702
Fri Apr 22 08:57:40 2022 auth.info sshd[12487]: Connection closed by invalid user demo 93.95.230.165 port 54702 [preauth]
已经是高位端口了。
就是普通家宽,看来只能禁止密码登录了事。
先把密码登陆关了.
我印象中是可以用白名单的吧? ssh 只放行自己常用的机器的 ip. 当然如果没有公网 ip 、全是动态的, 那可能有点难办
我的做法
- 禁用 root 登录,更改默认 22 端口
- 服务器防火墙开放 SSH ,云防火墙关闭 SSH
- 安装 ZeroTier
平时通过 Zerotier 连过去,要是连不上或连接缓慢,直接开放云防火墙,用完再关
怎么会没用呢。
攻击者的 IP 是有限的,封一个少一个,一段时间就清净了
但是 fail2ban 的默认封禁时间是 10 分钟,记得调成一周或一月,还有扫描时间范围设成 1 天
开个 cockpit 用算了,sshd 都不开
修改以下设置减少 99%攻击
生成密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N '' -q
把密钥保存到本地
#/etc/ssh/sshd_config
Port 23456 #修改 SSH 端口
PermitRootLogin prohibit-password #root 禁止密码和交互登录
PasswordAuthentication no #禁止密码登录
修改前记得开启防火墙端口. 重启 ssh 服务
你可能搜索的是 端口敲门
从来不折腾这种,只要起个合理长度的密码或禁密码就可以了
#9 我记得 Fail2ban 用的是 inotify 吧?
上周好像有个新闻。美国对中国网络发起攻击。提权了就会当肉鸡攻击俄罗斯、白俄罗斯。
端口改了没....?
没改端口的话,改个端口能屏蔽 95%
ssh 用高位端口,加上 iptables 防端口扫描就可以
github.com/EtherDream/anti-portscan
我还在想,端口怎么防扫描,原来是下陷阱,真有创意。
如果对自己的用户名密码有自信,f2b 也够用了,即使再凶残被探测到了就 ban 了,就 1 分钟的事
关闭密码登录就不管了,我刚才去看了下每天 10w 条扫描日志,不管他就行了。
指定允许登录的 IP ,白名单。
可以设置连续超过多少次就 ban 掉 ip 的吧
就用 fail2ban 限制,很快的
正确姿势:换端口,只允许密钥登录
fail2ban 没有性能问题,只要你姿势正确。它扫描日志有个 inotify ( pyinotify )后端,可以随日志变化来增量扫描,就像 tail -f 一样
禁用密码登陆+证书登陆+改 sshd 端口
我都是用安全组里的限制 IP 访问 22 端口,不知道有用没。反正我不写自己的 IP ,我打不开 SSH 都!~
改成很長+複雜密碼
例如: ZZ&7A:[email protected]]mM2I#[email protected]?N8jmg~`q|0!M%Zi-|e-8vsD?|9l]llg2!6~q6zkb
可以试试新出来的工具~
CrowdSec
你自己给你自己的 IP 开白名单啊,有啥困难的?不就是在前面加一条 ACCEPT 的事情?另外不知道为啥你不设这个但是我 22 端口是不用密码的……
fail2ban 的搜索时间可以说是近实时,基本上 1s 左右可以检测到 login failed 存在并输出到 fail2ban.log
直接 ban c 段 ip 啊。
有用,已经 ban 了几个 W 的 ip 了 ,每个都封 1 个月 爱打就打吧 累了
禁掉密码登录换密钥登录,瞬间清净了
这其实非常简单。
攻击者,会先扫描 tcp 22 端口,如果扫不出来,才去扫高位端口。
所以,你在服务器上,先把 ssh 改为高位端口,然后做个脚本:
只要有 IP 连接 tcp 22 ,直接永久封掉它的 IP 。
从来不开放 22 端口
从来不使用密码登录
当时端口默认,也是一堆脚本小子扫。后来端口改成 6w+以上,每次登录的 banner 就很清爽了。
😃 加个 2fa 就屏蔽了大部分了..
是个办法,但是不能轮询,要用中断。
22 端口只对 ipv6 开放不就行了,如果是服务器域名不要直接解析到机器上
想扫你无异于大海捞针
搜索一下 iptables recent hacker/ipset ,实现一点不输 fail2ban 。制造陷阱,动态封锁。
直接改 fail2ban 的代码就是轮询,改 iptables 代码就是中断。看你怎么用。我喜欢后者。
除开 Web 80 443 这种端口不方便改之外,其他服务改非常用端口 + IP 白名单段(不要给我说动态 IP ,或者说么有公网啥的,我要说在现有大 NAT 环境下,都不难统计出来),能解决大部分安全问题!
如果要远程管理还得开着 sshd 。。
敲端口很好,
自己设置几个不特定端口顺序,
能杜绝一切 ssh 登录的尝试… …
host.deny 禁 22 host.allow 再允许国内的 ip 段,比如我就 allow 我这个省份,最后一道防线是定时处理日志找出 ip 用 iptable 禁用
换端口啊!!!!!!把 22 端口封了
换端口,或者上个 zerotier/tinc/wg ,22 只对 sdlan 服务
换端口+key 登陆+防火墙白名单。
看了你的贴,我才想起我有 2 台 vps ,买了几年一直都是默认的,上去看了下日志,幸好我密码够长字符种类够多,没被破解。赶紧改了端口,禁止密码登陆,日志干净多了。
sshd 整个白名单,只加自己常用的 IP 段,一般都能安静了
不需要往系统里安软件,如果自己发起访问的 IP 是固定的,在虚拟防火墙开启白名单,只允许制定 IP 进行 ssh ,其他的会自动被虚拟防火墙拦截,系统内无开支压力。 系统内安软件,量大的时候,系统就浪费一部分资源。
这种不是用 aws 的 security group 吗
我服务端防火墙是关闭状态 就把 ssh 端口 禁止 root 登录 脚本遍历 secure 一分钟超过三次拉入 hosts.deny
举个例子,我实现了一个过滤出字符串中所有数字的功能,函数名为filter_number,我想要附加到 str 对象上,这样调用函数可以写成"abc123abc".filter_…
无意中看了下浏览器资源占用情况,好家伙,2GB 多。 之后对比了下扩展全关下,Firefox 、Chrome 、Edge 、IE 的资源占用,只能说,该加内存了。 哦。 …
事情起因:群里前端说有个问题,就是输入框在输入中文时,如果做了长度限制,那么此时输入中文拼音,正常情况下会导致拼音无法正常输入,因为 web 上的文本框里,输入法打的字都会先以…