我的服务器不断受到攻击[关闭]


32

我对系统管理界来说还很陌生。我最近一直在研究一个应用程序,当我检查应用程序服务器日志时,我不断得到各种IP地址,试图通过蛮力将其SSH到服务器中。这是我的服务器日志的示例:

Feb 14 04:07:20 foodwiz3 sshd[1264]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:07:21 foodwiz3 sshd[1264]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:07:21 foodwiz3 sshd[1264]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:07:23 foodwiz3 sshd[1264]: Failed password for root from 23.249.167.223 port 32997 ssh2
Feb 14 04:07:23 foodwiz3 sshd[1264]: Received disconnect from 23.249.167.223: 11: Bye Bye [preauth]
Feb 14 04:13:04 foodwiz3 sshd[1289]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:13:05 foodwiz3 sshd[1289]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:13:05 foodwiz3 sshd[1289]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:13:07 foodwiz3 sshd[1289]: Failed password for root from 23.249.167.223 port 41562 ssh2

这是相当正常的事情吗,还是我应该为此担心/做些什么?


3
尝试更改端口号,看看它是否仍然存在。如果他们没有专门针对您,则可能不会。
goldilocks 2015年

13
最好的解决方案是禁用SSH上的密码身份验证,因为这肯定会阻止暴力攻击!
威廉2015年


3
@Willem-不,禁用密码身份验证不会停止攻击。只会使它们失败(攻击者不会意识到密码认证已被禁用,并将继续尝试)。
Martin Vegter 2015年

Answers:


59

欢迎来到互联网的美好世界...您有:

但是真正的答案是:是的,这很正常:BotNet Maffia总是可以使用一些额外的受严重保护的服务器...


1
我更喜欢在狂野的Internet中没有SSH。+1
Rui F Ribeiro

2
除了更改ssh的默认端口外,我们还具有端口敲除功能
巴勃罗A

15

具有足够的登录测试信息来创建泛洪日志是很正常的。

更改SSH端口更像是一种“默默无闻的安全性”类型的解决方案,但它可以帮助解决洪水泛滥。我强调这不是很优雅;出于实际原因,有事实上的服务端口。

由于默认情况下应处于打开状态,但请确保您不能以root用户身份通过​​SSH进入服务器。服务器之间的用户名相当一致,因此是密码暴力登录尝试的主要目标。在中的以下行强制执行设置sshd_config

PermitRootLogin no

另外,还要检查fail2ban那些监视sshd日志的重复违规者。例如,某个IP在3分钟内登录失败5次,该IP将被阻止10分钟。我将该禁令时间延长到24小时,以进一步减少日志垃圾邮件-成功。:)


1
apt-get install fail2ban将使您基本覆盖
Willem

7
“我将禁止时间增加到24小时,以进一步减少垃圾邮件”。相信我。除非您可以物理访问服务器,否则有一天您将深表遗憾。;)
丹尼尔(Daniel

8

我建议您做一些事情:

  1. 更改ssh侦听的端口(远高于1024),并确保不使用协议的版本1:

/ etc / ssh / sshd_config

# What ports, IPs and protocols we listen for
Port 50022
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
  1. 安装fail2ban-它监视日志文件,并通过更新现有的防火墙规则(iptables)暂时或永久禁止容易出现故障的地址。

  2. 确保将您的受信任位置列入白名单。


7

是的,请担心。您可能永远不会被烧死,但是您应该遵循IT最佳实践。安全胜过遗憾。

我是医院的网络管理员。将盒子直接连接到互联网总是一个主意。您所看到的是成千上万的自动扫描程序,它们扫描互联网上的漏洞。我在ID框上看到了各种软件(ssh,telnet,f​​tp等)的各种信息(端口扫描,各种已知的漏洞测试),
您的计算机应位于防火墙/ NAT解决方案的后面,端口将所需的端口转发到Internet(80、443等)。这是相对容易做到的。
拥有可以用于管理(SSH telnet)的东西是面对互联网的一个坏主意,因为如果(无论出于何种原因)该服务器上的SSH / telnet软件中存在错误,自动机器人将在检测到的情况下检测到它你会被搞砸的 软件中的错误始终存在,并且可能需要一段时间才能发布补丁或使您记住要对其进行补丁。

如果需要远程管理,请考虑设置类似VPN解决方案的内容,或者如果使用Windows,则可以设置用于远程桌面的终端服务网关。我知道如果您只是一家小商店,则可以使用带有2个NIC的单独Linux或Windows盒来设置VPN和NAT的路由和远程访问。否则,像Cisco这样的供应商将拥有硬件防火墙/ NAT解决方案(Cisco ASA)。

总之,将您的计算机置于NAT之后。仅端口转发运行该服务所需的端口。不要将用于管理的服务转发到Internet,而应将其用于VPN以进行远程管理。

PS更改SSH端口可能有助于增加日志量,但实际上并不能阻止对SSH的访问。数千个自动漏洞发现程序中的任何一个都可以并且将进行端口扫描,以查看哪些端口正在侦听哪些服务。您可以使用名为nmap的工具自己进行操作。


7
实际上,VPN解决方案并不比SSH服务器安全得多。它们都依赖于正确实施的加密协议和正确配置的服务。通过不同的方式,我会说它们提供了完全相同的安全级别。然后,如果我对您的了解很好,则可以将SSH 放在 VPN 后面,那么可以,那就是一级安全。
lgeorget 2015年

是的,你是正确的,是我的意思,使用VPN来获得通过防火墙/ NAT则SSH到服务器

1
大多数VPN设置都经过多层客户端身份验证,并提供单点外部流量可以到达内部网络。与有许多节点。与可能容纳该sshd实例的服务器相比,VPN集中器本身本身通常也不是有趣的目标。ssh jumpbox 可以像大多数VPN配置一样安全,但是总的来说,它不是这样工作的。
布拉奇利

5

您可以通过iptables配置内核的内部防火墙。这样一来,只有几台计算机可以通过SSH传送到您的服务器,并丢弃其他IP软件包。请参阅man iptables以获取更多信息。

例如,如果ssh主机是192.168.1.67,则在服务器上键入:

sudo iptables -A INPUT -p tcp --dport ssh -s 192.168.1.67 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j DROP
sudo iptables-save

2
请注意,如果唯一的选择是远程管理,那么您会陷入困境。大多数IP都是半永久性的。更换硬件,您将被淘汰。
2015年

3

您真的需要互联网上的服务器吗?如果您真的想在互联网上使用它,请先确保它的安全性,然后再将其放置在互联网上。

更改端口只是默默无闻的安全措施。如果您的攻击者比仅运行脚本更复杂,那将无济于事。

已经提到的几件事我也建议:

  1. 我同意Fail2Ban的观点,并对其进行正确配置,可以阻止脚本和最复杂的黑客。
  2. 必须将PermitRootLogin设置为no。
  3. 配置防火墙。我通常只编辑iptables规则,但是类似UFW或firehol的东西也可以工作。

我刚加入这个社区是因为我认为有两件事没有得到适当解决。

  • 在防火墙配置中,绝对禁止/禁用所有不完全必要的功能。在打开任何端口之前,请先问自己:“我真的需要互联网提供此服务吗?” 您打开的每个端口/服务都可能成为某人可能利用的另一个潜在媒介。如果该服务中存在一个错误,使他们能够获得对服务器的root访问权限,则他们可能能够访问服务器上的所有内容。您的安全性仅与最弱的链接一样强。
  • 现在是最后一件事,而且可以说是最重要的。您看到的尝试访问ssh的脚本可能会随着时间的推移猜测您的密码。Fail2Ban将使它们的运行速度大大降低,但他们仍可能会猜测到它。如果这样做,则需要对可访问服务进行2因子身份验证。为此,我建议使用Duo Security免费帐户。https://www.duosecurity.com/docs/duounix

1
更改端口的优点是可以清理日志文件:由于脚本小子大多不会攻击非默认端口,因此您知道任何日志条目都构成了严重的威胁。
2015年

更改端口也不是真正抵御威胁的零用武之地。减速带虽然不算什么障碍,但仍然是减速带,您可以通过多种方法将其变成更大的减速带。同样,虽然在可能的情况下(并且应该几乎总是可能的)使用2因子身份验证当然是一个好主意,但存在一些极端情况。如果有特定的最短时间,您可以确定Fail2Ban将延迟它们的时间,然后只需更频繁地更改密码即可,这将迫使它们反复重新启动并且永远不会完成。
马修·纳杰蒙

2

如果您打算禁止SSH服务器上的任何后续“重试”,则@cff答案的另一个示例:

sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --update --seconds 600 --hitcount 4 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
sudo iptables-save

这个“标记”了连接尝试,如果在600秒(1000万)中发生了4次以上,则表示源被“禁止”。使用它代替@cff解决方案,因为它更安全(如果您将自己锁定在外,请等待1000万并重试)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.