使用以下命令检查服务器的身份验证日志时:

grep sshd.\*Failed /var/log/auth.log | less


我看到成千上万行这样的内容:

    Jan 12 11:27:10 ubuntu-leno1 sshd[8423]: Failed password for invalid user admins from 172.25.1.1 port 44216 ssh2
    Jan 12 11:27:13 ubuntu-leno1 sshd[8425]: Failed password for invalid user phoenix from 172.25.1.1 port 20532 ssh2
    Jan 12 11:27:17 ubuntu-leno1 sshd[8428]: Failed password for invalid user piglet from 172.25.1.1 port 24492 ssh2
    Jan 12 11:27:22 ubuntu-leno1 sshd[8430]: Failed password for invalid user rainbow from 172.25.1.1 port 46591 ssh2
    Jan 12 11:27:25 ubuntu-leno1 sshd[8432]: Failed password for invalid user runner from 172.25.1.1 port 57129 ssh2
    Jan 12 11:27:34 ubuntu-leno1 sshd[8434]: Failed password for invalid user sam from 172.25.1.1 port 11960 ssh2
    Jan 12 11:27:37 ubuntu-leno1 sshd[8437]: Failed password for invalid user abc123 from 172.25.1.1 port 5921 ssh2
    Jan 12 11:27:40 ubuntu-leno1 sshd[8439]: Failed password for invalid user passwd from 172.25.1.1 port 21208 ssh2
    Jan 12 11:27:43 ubuntu-leno1 sshd[8441]: Failed password for invalid user newpass from 172.25.1.1 port 65416 ssh2
    Jan 12 11:27:46 ubuntu-leno1 sshd[8445]: Failed password for invalid user newpass from 172.25.1.1 port 26332 ssh2
    Jan 12 11:27:49 ubuntu-leno1 sshd[8447]: Failed password for invalid user notused from 172.25.1.1 port 51126 ssh2
    Jan 12 11:27:52 ubuntu-leno1 sshd[8449]: Failed password for invalid user Hockey from 172.25.1.1 port 14949 ssh2
    Jan 12 11:27:56 ubuntu-leno1 sshd[8451]: Failed password for invalid user internet from 172.25.1.1 port 35105 ssh2
    Jan 12 11:27:59 ubuntu-leno1 sshd[8453]: Failed password for invalid user asshole from 172.25.1.1 port 7916 ssh2
    Jan 12 11:28:02 ubuntu-leno1 sshd[8456]: Failed password for invalid user Maddock from 172.25.1.1 port 26431 ssh2
    Jan 12 11:28:05 ubuntu-leno1 sshd[8458]: Failed password for invalid user Maddock from 172.25.1.1 port 53406 ssh2
    Jan 12 11:28:09 ubuntu-leno1 sshd[8460]: Failed password for invalid user computer from 172.25.1.1 port 23350 ssh2
    Jan 12 11:28:15 ubuntu-leno1 sshd[8462]: Failed password for invalid user Mickey from 172.25.1.1 port 37232 ssh2
    Jan 12 11:28:19 ubuntu-leno1 sshd[8465]: Failed password for invalid user qwerty from 172.25.1.1 port 16474 ssh2
    Jan 12 11:28:22 ubuntu-leno1 sshd[8467]: Failed password for invalid user fiction from 172.25.1.1 port 29600 ssh2
    Jan 12 11:28:26 ubuntu-leno1 sshd[8469]: Failed password for invalid user orange from 172.25.1.1 port 44845 ssh2
    Jan 12 11:28:30 ubuntu-leno1 sshd[8471]: Failed password for invalid user tigger from 172.25.1.1 port 12038 ssh2
    Jan 12 11:28:33 ubuntu-leno1 sshd[8474]: Failed password for invalid user wheeling from 172.25.1.1 port 49099 ssh2
    Jan 12 11:28:36 ubuntu-leno1 sshd[8476]: Failed password for invalid user mustang from 172.25.1.1 port 29364 ssh2
    Jan 12 11:28:39 ubuntu-leno1 sshd[8478]: Failed password for invalid user admin from 172.25.1.1 port 23734 ssh2
    Jan 12 11:28:42 ubuntu-leno1 sshd[8480]: Failed password for invalid user jennifer from 172.25.1.1 port 15409 ssh2
    Jan 12 11:28:46 ubuntu-leno1 sshd[8483]: Failed password for invalid user admin from 172.25.1.1 port 40680 ssh2
    Jan 12 11:28:48 ubuntu-leno1 sshd[8485]: Failed password for invalid user money from 172.25.1.1 port 27060 ssh2
    Jan 12 11:28:52 ubuntu-leno1 sshd[8487]: Failed password for invalid user Justin from 172.25.1.1 port 17696 ssh2
    Jan 12 11:28:55 ubuntu-leno1 sshd[8489]: Failed password for invalid user admin from 172.25.1.1 port 50546 ssh2
    Jan 12 11:28:58 ubuntu-leno1 sshd[8491]: Failed password for root from 172.25.1.1 port 43559 ssh2
    Jan 12 11:29:01 ubuntu-leno1 sshd[8494]: Failed password for invalid user admin from 172.25.1.1 port 11206 ssh2
    Jan 12 11:29:04 ubuntu-leno1 sshd[8496]: Failed password for invalid user chris from 172.25.1.1 port 63459 ssh2
    Jan 12 11:29:08 ubuntu-leno1 sshd[8498]: Failed password for invalid user david from 172.25.1.1 port 52512 ssh2
    Jan 12 11:29:11 ubuntu-leno1 sshd[8500]: Failed password for invalid user foobar from 172.25.1.1 port 35772 ssh2
    Jan 12 11:29:14 ubuntu-leno1 sshd[8502]: Failed password for invalid user buster from 172.25.1.1 port 18745 ssh2
    Jan 12 11:29:17 ubuntu-leno1 sshd[8505]: Failed password for invalid user harley from 172.25.1.1 port 38893 ssh2
    Jan 12 11:29:20 ubuntu-leno1 sshd[8507]: Failed password for invalid user jordan from 172.25.1.1 port 64367 ssh2
    Jan 12 11:29:24 ubuntu-leno1 sshd[8509]: Failed password for invalid user stupid from 172.25.1.1 port 27740 ssh2
    Jan 12 11:29:27 ubuntu-leno1 sshd[8511]: Failed password for invalid user apple from 172.25.1.1 port 22873 ssh2
    Jan 12 11:29:30 ubuntu-leno1 sshd[8514]: Failed password for invalid user fred from 172.25.1.1 port 54420 ssh2
    Jan 12 11:29:33 ubuntu-leno1 sshd[8516]: Failed password for invalid user admin from 172.25.1.1 port 58507 ssh2
    Jan 12 11:29:42 ubuntu-leno1 sshd[8518]: Failed password for invalid user summer from 172.25.1.1 port 48271 ssh2
    Jan 12 11:29:45 ubuntu-leno1 sshd[8520]: Failed password for invalid user sunshine from 172.25.1.1 port 5645 ssh2
    Jan 12 11:29:53 ubuntu-leno1 sshd[8523]: Failed password for invalid user andrew from 172.25.1.1 port 44522 ssh2


我似乎正在遭受ssh蛮力攻击。
这是常见的情况吗?
我现在应该怎么办?我应该认为攻击成功并采取了措施吗?

-----编辑-------

攻击来自内部IP地址的事实由具有从外部的ssh重定向的此服务器解释。
打开端口后,事情真的很快发生了,是否在野外扫描了每个公共IP,以寻找背后的现有服务器?

评论

我相信172.25.1.1属于私有IP范围(例如无法通过Internet路由),因此很可能是您附近的某人或您附近的机器。

评论不作进一步讨论;此对话已移至聊天。

#1 楼

关于fail2ban的快速注释添加了很多人提到的内容:前端是公司防火墙,后端仅看到来自防火墙的重定向/代理/内部地址。
所以没有,172.25.1.1并非内部计算机受到损害(评论时,答案中的注释以及此处说明它是内部计算机的其他答案都是错误的)。它是防火墙的内部IP地址之一。后端的Fail2ban只会阻止所有一次使用SSH进行扩展的可能性,因为它只能看到172.25.1.1的失败尝试。因此,请继续阅读我的答案。
毫无疑问,正如其他帖子所提到的那样,很明显,您正在遭受蛮力攻击。
但是,这并不意味着您会受到损害以任何方式从您显示给我们的日志中获取信息。 las,如今,ssh暴力攻击非常普遍。在大多数情况下,它们是真正自动化的,并且不一定是针对性的。
作为一个有趣的警告故事,几年前,我在ISP提供程序中设置新服务器的第一天,ssh可以向Internet开放一整夜有200k + ssh扫描探针。
对于“内部IP地址”,您使用的是SNAT或22 / TCP代理重定向,至多,并且源Internet IP不显示(这不是最佳做法),或者最坏的情况是您的路由器/电缆调制解调器受到损害。
如果您确实有SNAT /代理SSH配置,我建议您考虑一下。您想要的是真实IP地址的日志,而不是您的网络的日志。
关于措施,我确实建议一些措施:

不允许使用SSH中的密码;仅使用RSA证书登录;
不要对外开放ssh;将其限制为内部网络;
要从外部访问,请通过VPN访问;请勿将SSH暴露给整个Internet;
从外部限制速率的SYN。

如果您绝对坚持仍将SSH Internet对外开放,请注意,更改默认SSH端口只会带来一种假的安全感,而临时阻塞IP地址只会减慢攻击速度,因为我们经常谈论协作服务器场。僵尸机器。
如果您确实更改了配置以直接接收与您连接的公共IP地址,则可能要看看fail2ban。但是请注意,如果确实有任何外部IP随网关的IP地址一起到达,则您实际上是在使用它来锁定所有外部SSH访问。
还有其他警告;请注意,当今的僵尸/恶意软件将fail2ban考虑在内,并将在默认超时期限后返回,或轮流使用其他IP地址。 (我已经看到了这种情况。)即使您使用强制性RSA证书身份验证,密码攻击仍然会被记录下来,并且会消耗I / O,磁盘空间和CPU周期。
对于VPN,您不会需要专用硬件;在Linux或FreeBSD服务器上配置VPN很简单。
如果您不愿意从头开始设置一个VPN,我建议您使用pfSense虚拟机。对于FreeBSD; strongSwan,用于在Linux服务器上设置VPN。
如果您的前端服务器是Linux,则另一种选择是端口关闭。但是,由于其固有的工作原理,我只推荐用于家庭环境。正如@GroundZero正确指出的那样,“端口关闭是默默无闻的安全措施,攻击者可以主动监视您的网络流量以发现关闭顺序。”
如何在Linux的Ubuntu上使用端口关闭来隐藏SSH守护进程
作为一项附加措施,您还可以对端口22中的防火墙/ iptables规则SYN进行速率限制。这样,您就不会对合法连接进行速率限制,并且linux中的iptables或大多数商用防火墙都允许该配置。我已经看到了令人讨厌的技巧,因为僵尸程序会在安全规则启动之前尽可能快地攻击某些守护程序。但是,我确实相信ssh实际上具有内置的防御功能。
要回答有关猖scanning扫描的问题,的确如此。您有许多不良行为者,僵尸网络和恶意软件不断扫描IP地址空间,以查找具有sshd受损版本,易受攻击/旧sshd版本的服务器,具有默认/错误密码的服务器/已知后门,以及仅使用openssh获得的服务器
在当前工作的堡垒主机中,通过网络钓鱼(在单独的事件中)成功进行了三次网络钓鱼攻击(在单独的事件中)之后,我决定通过暴力攻击或通过网络钓鱼在非特权用户中立足。
通过在sshd_config中要求所有用户提供RSA证书的配置,并且只有内部网络才允许密码身份验证,将其添加到配置文件的末尾,如下所示:
# sshd configuration allowing only RSA certificates
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/24
PasswordAuthentication yes

作为另一个有趣的传闻,之前我更改为强制性RSA证书,其中一个网络钓鱼入侵是在恰好一周内完成的,其中有两个内核更新允许漏洞升级到root用户,如果我没有现场更新,我会已经被彻底破坏。 (如果我的记忆没有让我失望,那就是7月4日左右...黑客们喜欢将那些讨厌的攻击保存在假期中)
关于实时实时实时攻击图,请查看:


Norse项目的图形界面。这非常有教育意义。
DDOS攻击图。


免费查看Checkpoint中央安全监视网络,代理是其客户。

为完成答案:
不,您可能不会受到任何损害。
是,您必须采取措施提高安全级别。我建议从外部到企业VPN服务器的VPN隧道/客户端。这是我实际上正在做的事情。
我还有最后一条重要建议:要确保普通帐户不被盗用,请检查您的/var/log/auth.log身份验证日志,以确保身份验证成功。有多种方法可以使用任何帐户登录opensh,而无需在/var/log/wtmp中注册该帐户,因此该帐户不会出现在last命令中。
不用说,如果常规帐户在没有更新的旧计算机上被盗用,则所有赌注都是关。而且在不幸的情况下,特权提升为root用户,甚至日志也可能遭到破坏。

评论


很好的答案,我确实有ssh重定向,而且您的轶事表明,这种情况在向外界开放后很快发生。

–西尔多
16年1月16日于13:42

通过身份验证日志,您是指/var/log/auth.log吗?那是我找到日志的地方,我不了解wtmp :)

–西尔多
16年1月18日在9:02

是的,它是位于公司防火墙后面的Linux服务器。

–西尔多
16年1月18日在9:03

请注意,端口爆震也是混淆的一种形式,并不能真正增加安全性。但是,它将停止大多数自动程序,并且(在大多数情况下)将要求攻击者主动监控您的网络流量以发现敲除顺序

– BlueCacti
16年1月18日在17:10

我确实同意你@GroundZero。它在家庭环境中可能很有用,但是我在工作和家庭中都使用VPN。

– Rui F Ribeiro
16年1月18日在17:35

#2 楼

是的,看起来您正在遭受蛮力攻击。攻击者位于B类私人地址上,因此很可能是有权访问进行攻击的组织网络的人员。从用户名看来,它们似乎正在通过通用用户名字典运行。

看看“如何停止/防止SSH bruteforce”(Serverfault)和“防止暴力SSH攻击”(Rimu)托管)有关如何采取措施减轻与SSH bruteforce攻击有关的某些风险。

评论


让我想起了:)

–马特·里昂
16年1月15日在10:50

同时,向OP更新您的密码。如果不需要,请禁用PermitRootLogin。更好的是,禁用基于密码的登录(即,仅RSA密钥登录)。

–奥修斯
16年1月15日在14:38

网络(而非用户计算机中的病毒)而不是组织中的实际人员受到威胁的可能性有多大?

– jpmc26
16年1月15日在19:39

@ jpmc26另一台计算机可能已受到攻击,攻击者可能试图通过网络进行数据透视。病毒可能以任何可能的危害发挥作用。但是,这只是一个推测,仍然是许多潜在解释之一。

–TheJulyPlot
16年1月16日在7:40

许多信息要经过!对于我通常的编程而言,这将是一个有趣的星期一。

–西尔多
16年1月16日在13:54

#3 楼

是的,这看起来完全像是蛮力攻击,在搜索了admins phoenix piglet rainbow之后,它看起来像是攻击者正在使用的单词列表:https://github.com/hydrogen18/kojoney/blob/master/fake_users
签出第116行起。单词表的使用顺序完全相同。这似乎是一个通用的单词表,因为它也出现在其他站点上。例如http://src.gnu-darwin.org/ports/net/kojoney/work/kojoney/fake_users

@TheJulyPlot提供了一些有关如何减轻这种攻击的好信息。

评论


您提供的两个链接都指向同一软件,因此它们当然是相同的单词列表。

– Moshe Katz
16 Jan 15 '14:29



这就是为什么我说“这似乎是一个通用的单词列表,因为它也出现在其他站点上。”

– 16b7195abb140a3929bbc322d1c6f1
16年1月16日在1:01

#4 楼

是的,您被强暴了。但是我不认为您应该担心自己检测到的来自互联网的暴力行为。但是,您应该担心来自您自己的网络的暴力攻击。

暴力行为很普遍,只要您不使用SSH密码(或使用良好的密码),攻击就根本不会成功(尤其是每3-4次猜测一次)秒)。

但是,IP(172.25.1.1)与您位于同一网络上。这是真正的问题,您应该尽快检查这台计算机是否受到威胁。

评论


“我不认为您应该担心您检测到来自互联网的任何暴力行为。”安装诸如fail2ban之类的基本安全软件,以防止这些攻击(a)绊倒正确的密码,(b)浪费带宽和(c)填充日志。

–轨道轻赛
16 Jan 17 '16:50



Benoit的意思是,OP不必担心这种特殊的攻击-当从Internet进行攻击时很常见-而是担心攻击者拥有特权升级并且现在正在从内部网络进行攻击,因此可以访问OP的组织的资源和服务器。

–dr_
16 Jan 17 '18:47



我面临着来自不同外部IP的暴力攻击,但除​​此之外;事实是,我也面临来自Web应用程序URL上来自您自己的网络的暴力攻击,并且它消耗了我的所有API配额。我在req.headers ['user-agent']上获得了自己服务器的IP地址。请在这方面帮助我。感谢您!

–动态遥控
18/12/2在17:47

#5 楼

从外观上看,您可以幸免于难。 SSH正在执行应做的事情。但是,请参阅下面的一些步骤,您应尽快采取措施以确保持续生存。

而且,不幸的是,网络内部的系统已受到威胁。这些天太常见了。您应该确定这种明显的内部攻击的性质,但不要假定仅基于此日志文件就破坏了该系统。运行面向网络的SSHD的任何人,多年来,一遍又一遍地看到了这一点。修复此主机上的SSHD安装,然后在172.25.1.1。上研究系统。

遵循SSHD最佳做法,例如这些...

禁用密码身份验证,以支持基于密钥的身份验证:

# grep PasswordAuth sshd_config | grep no
PasswordAuthentication no


如上所述,禁用root登录:

PermitRootLogin no


将允许的用户添加到sshd_config:

AllowUsers myusername the_other_sysop_guy


如果执行最后一个,则日志消息将从“无效用户”更改为“非法用户”。

根据您的业务状况,您还可以考虑对SSHD端口进行防火墙保护(仅允许从授权IP地址进行SSH)或将其更改为使用其他端口(这实际上是出于安全性的考虑,但是这种性质的大多数攻击实际上都是脚本编写的) 。 las,攻击者似乎位于您的局域网内,可能会导致这些攻击者无法提供应有的帮助。

顺便说一句,设备处于1.1的事实使我想知道它们是否已经进入您的路由器了吗? ;-)

评论


除了root用户之外,我还倾向于禁止SSH登录到具有广泛sudo特权的用户,因为如果受到威胁,它们同样很糟糕。在现代系统上,root本身通常甚至根本没有密码。

–德米特里·格里戈里耶夫(Dmitry Grigoryev)
16年1月16日在19:56

通常,这似乎是一个好主意,但是您对需要“广泛”特权的sysop做什么呢?您指的是什么“现代系统”……没有root密码似乎有点违反直觉……除非没有root帐户? :)

– Kevin_Kinsey
16年1月21日在17:43



#6 楼

日志中的标准外观似乎是常见的蛮力攻击,因为日志中列出的名称来自所使用的标准字典。即使是常见的单词列表,也将其视为主要的目标用户名。同样,注入来自私有B类IP。不过,请不要担心,只要您强加的密码足够强大并且您有负载平衡来管理此密码,这对您来说就不是问题。在SSH中寻找保护措施,SSH中的蛮力保护措施。

#7 楼

由于所有到服务器的SSH登录都通过相同的本地IP地址重定向,因此,如果您决定使用fail2ban,我建议您谨慎使用。在与fail2ban相同的服务器上安装sshd将导致IP 172.25.1.1当场被阻止。之后,没有人将无法通过SSH登录到您的服务器。

如果您可以在重定向SSH流量的服务器上安装fail2ban,请执行此操作。我在公共SSH服务器上使用fail2ban,它在限制攻击者在10分钟内进行3次尝试方面做得很好。孩子们使用的大多数“破解”脚本在这3次尝试之后都会超时,并且不会再困扰我几天了。

评论


fail2ban会查看失败的身份验证日志,这确实是不可思议的,前端服务器也不会拥有这些日志。

– Rui F Ribeiro
16 Jan 17'在10:37

(因此将其放置在重定向服务的前端服务器上将无法正常工作,因为fail2ban不会处理后端中的合法或失败尝试,因此绝对没有想法)

– Rui F Ribeiro
16年1月17日在21:46



#8 楼

您还可以相当轻松地降低密码猜测攻击者的速度。

在文件/etc/pam.d/sshd中,您可以添加如下代码:

auth     optional   pam_faildelay.so   delay=7000000


在每次失败的sshd登录尝试中,PAM模块将等待7秒。您可能希望增加或减少延迟,因为如果您用自己的手指乱输入密码,则需要等待7秒钟才能得到另一个提示。我可能会猜到,大多数SSH密码猜测程序过于复杂,以至于等待新提示时没有超时,但是很长的延迟很可能会导致更好的猜测程序在某个时刻超时。 br />

评论


这似乎是一个有趣的想法,而我却没有意识到这个晦涩的花絮。

– Rui F Ribeiro
16年1月19日在14:05

我不知道投票最多的答案有什么错误的答案,这个答案不值得关注。可惜我不能投票超过一次。

– Rui F Ribeiro
18年2月23日在4:36