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 、全是动态的, 那可能有点难办

我的做法

  1. 禁用 root 登录,更改默认 22 端口
  2. 服务器防火墙开放 SSH ,云防火墙关闭 SSH
  3. 安装 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