VPS 会遭受大量 ssh 攻击。这些攻击有多种来源端口:
sshd[76661]: Invalid user ts3server from 76.103.161.19 port 33062
sshd[76661]: Received disconnect from 76.103.161.19 port 33062:11: Bye Bye [preauth]
sshd[76661]: Disconnected from invalid user ts3server 76.103.161.19 port 33062 [preauth]
sshguard[61313]: Attack from "76.103.161.19" on service SSH with danger 10.
sshguard[61313]: Blocking "76.103.161.19/24" for 86400 secs (1 attacks in 0 secs, after 1 abuses over 0 secs.)
sshd[76821]: Invalid user tibaldi from 140.143.206.216 port 33936
sshd[76821]: Received disconnect from 140.143.206.216 port 33936:11: Bye Bye [preauth]
sshd[76821]: Disconnected from invalid user tibaldi 140.143.206.216 port 33936 [preauth]
sshguard[61313]: Attack from "140.143.206.216" on service SSH with danger 10.
sshguard[61313]: Blocking "140.143.206.216/24" for 86400 secs (1 attacks in 0 secs, after 1 abuses over 0 secs.)
如您所见,我目前使用被动方法(sshguard)以积极的方式阻止和限制这些攻击。(此外,不允许使用密码 ssh 登录。)但是,攻击仍然太多,以至于我的日志被淹没了。从日志中可以清楚地看出,所有这些攻击都来自高编号的随机端口。我想要做的是在防火墙级别阻止所有流量,这样它就不会污染我的日志。
我控制客户端并可以选择/定义它将使用哪个源端口。
所以,如何阻止来自预定义端口(或范围)以外的源端口的(ssh)流量?
我使用firewalld作为防火墙管理软件,因此如果您能提供基于firewalld的解决方案,那将非常有帮助。但是,也欢迎使用其他解决方案。
答案1
虽然目的地SSH 连接的端口通常为 22,来源端口 (几乎) 没有规则。这意味着来自的连接140.143.206.216 port 33936
本身并不可疑。
因为我知道这个问题(10G 服务器上的峰值每秒超过一百万次攻击)我建议您使用fail2ban
- 这确实有效。
编辑
经过讨论,我明白你控制了客户。在这种情况下,你可以做一些类似的事情
iptables -A INPUT -m tcp -p tcp --dport 22 '!' --sport 1000 -j DROP
(对于远程端口 1000)就可以了