保护ssh服务器的最佳方法

保护Linux系统的SSH连接以保护系统和数据。系统管理员和家庭用户都需要加固和保护面向互联网的计算机,但SSH可能很复杂。这里有十个简单的快速胜利来帮助保护您的SSH服务器。...

保护Linux系统的SSH连接以保护系统和数据。系统管理员和家庭用户都需要加固和保护面向互联网的计算机,但SSH可能很复杂。这里有十个简单的快速胜利来帮助保护您的SSH服务器。

ssh安全基础

SSH代表Secure Shell。“SSH”这个名称可以互换地表示SSH协议本身或允许系统管理员和用户使用该协议与远程计算机进行安全连接的软件工具。

SSH协议是一种加密协议,用于在不安全的网络(如internet)上提供安全连接。Linux中的SSH构建在OpenSSH项目的可移植版本上。它是在一个经典的客户机-服务器模型中实现的,SSH服务器接受来自SSH客户机的连接。客户端用于连接到服务器并向远程用户显示会话。服务器接受连接并执行会话。

在缺省配置中,SSH服务器将侦听传输控制协议(TCP)端口22上的传入连接。因为这是一个标准化的、众所周知的端口,所以它是威胁参与者和恶意机器人的目标。

威胁参与者会启动机器人程序,扫描一系列IP地址,寻找开放的端口。然后探测端口以查看是否存在可利用的漏洞。认为“我很安全,坏人瞄准的目标比我更大更好”是错误的推理。机器人并不是根据任何优点来选择目标,而是有条不紊地寻找能够突破的系统。

如果你还没有保护好你的系统,你就把自己列为受害者。

安全摩擦

安全摩擦是指当您实施安全措施时,用户和其他人将经历的任何程度的恼怒。我们有很长的记忆,还记得把新用户介绍给计算机系统,听到他们用可怕的声音问他们是否真的必须在每次登录主机时输入密码。对他们来说是安全摩擦。

(顺便说一句,密码的发明归功于费尔南多·J·科尔巴托,他是计算机科学家万神殿中的另一位人物,他的共同工作促成了Unix的诞生。)

引入安全措施通常会给某人带来某种形式的摩擦。企业主必须为此付出代价。计算机用户可能需要改变他们熟悉的做法,或者记住另一组身份验证细节,或者添加额外的步骤才能成功连接。系统管理员将有额外的工作要做,以实施和维护新的安全措施。

加固和锁定一个Linux或Unix类操作系统可能会非常复杂,非常迅速。我们在这里介绍的是一组易于实现的步骤,这些步骤将提高您的计算机的安全性,而无需第三方应用程序,也无需挖掘防火墙。

这些步骤并不是SSH安全性的最终决定,但它们将使您远离默认设置,而且不会有太多摩擦。

使用ssh协议版本2

2006年,SSH协议从版本1更新到版本2。这是一次重大的升级。有太多的变化和改进,特别是在加密和安全性方面,版本2与版本1不向后兼容。要防止来自版本1客户端的连接,可以规定您的计算机只接受来自版本2客户端的连接。

为此,请编辑/etc/ssh/sshd\u配置文件。在这篇文章中我们将经常这样做。无论何时需要编辑此文件,都要使用以下命令:

sudo gedit /etc/ssh/sshd_config

保护ssh服务器的最佳方法

添加行:

Protocol 2

保护ssh服务器的最佳方法

然后保存文件。我们将重新启动SSH守护进程。同样,在本文中,我们将经常这样做。这是在每种情况下使用的命令:

sudo systemctl restart sshd

保护ssh服务器的最佳方法

让我们检查一下我们的新设置是否有效。我们将跳到另一台机器,并尝试SSH到我们的测试机器上。我们将使用-1(protocol1)选项强制ssh命令使用protocolversion1。

ssh -1 [email protected]

保护ssh服务器的最佳方法

太好了,我们的连接请求被拒绝了。让我们确保我们仍然可以连接到协议2。我们将使用-2(协议2)选项来证明这个事实。

ssh -2 [email protected]

保护ssh服务器的最佳方法

SSH服务器正在请求我们的密码这一事实是一个积极的迹象,表明已经建立了连接,并且您正在与服务器进行交互。实际上,因为现代SSH客户机将默认使用协议2,所以只要客户机是最新的,我们就不需要指定协议2。

ssh [email protected]

保护ssh服务器的最佳方法

我们的联系被接受了。因此,只有较弱和不太安全的协议1连接被拒绝。

避开端口22

端口22是SSH连接的标准端口。如果您使用不同的端口,它会通过对系统的模糊性增加一点安全性。默默无闻的安全性从来都不是一种真正的安全措施,我在其他文章中对此进行了抨击。事实上,一些更聪明的攻击机器人会探测所有打开的端口并确定它们携带的是哪种服务,而不是依赖于一个简单的端口查找列表并假设它们提供通常的服务。但使用非标准端口有助于降低22端口的噪音和不良流量。

要配置非标准端口,请编辑SSH配置文件:

sudo gedit /etc/ssh/sshd_config

保护ssh服务器的最佳方法

删除“Port”行开头的散列,并用您选择的端口号替换“22”。保存配置文件并重新启动SSH守护程序:

sudo systemctl restart sshd

让我们看看有什么影响。在另一台计算机上,我们将使用ssh命令连接到服务器。ssh命令默认使用端口22:

ssh [email protected]

保护ssh服务器的最佳方法

我们的联系被拒绝了。让我们使用-p(port)选项重试并指定端口470:

ssh -p 479 [email protected]

保护ssh服务器的最佳方法

我们的联系被接受了。

使用tcp包装器筛选连接

TCP Wrappers是一个易于理解的访问控制列表。它允许您根据连接请求的特征(如IP地址或主机名)排除和允许连接。TCP包装器应该与正确配置的防火墙结合使用,而不是代替防火墙。在我们的特定场景中,我们可以通过使用TCP包装器来相当程度地收紧内容。

TCP包装器已经安装在用于研究本文的ubuntu18.04lts机器上。它必须安装在Manjaro18.10和Fedora30上。

要在Fedora上安装,请使用以下命令:

sudo yum install tcp_wrappers

保护ssh服务器的最佳方法

要在Manjaro上安装,请使用以下命令:

sudo pacman -Syu tcp-wrappers

保护ssh服务器的最佳方法

涉及两个文件。一个持有允许列表,另一个持有拒绝列表。使用以下命令编辑拒绝列表:

sudo gedit /etc/hosts.deny

保护ssh服务器的最佳方法

这将打开gedit编辑器,其中加载了deny文件。

保护ssh服务器的最佳方法

您需要添加行:

ALL : ALL

然后保存文件。阻止所有未经授权的访问。我们现在需要授权您希望接受的连接。为此,您需要编辑允许文件:

sudo gedit /etc/hosts.allow

保护ssh服务器的最佳方法

这将打开gedit编辑器,其中加载了allow文件。

保护ssh服务器的最佳方法

我们已经添加了SSH守护程序名称SSHD,以及允许建立连接的计算机的IP地址。保存文件,看看限制和权限是否有效。

首先,我们将尝试从不在主机.允许文件:

保护ssh服务器的最佳方法

连接被拒绝。我们现在将尝试从IP地址为192.168.4.23的计算机进行连接:

保护ssh服务器的最佳方法

我们的联系被接受了。

我们这里的例子有点残酷,只有一台计算机可以连接。TCP包装器非常通用,而且比这更灵活。它支持主机名、通配符和子网掩码以接受来自IP地址范围的连接。我们鼓励您查看手册页。

拒绝没有密码的连接请求

虽然这是一种不好的做法,但是Linux系统管理员可以创建一个没有密码的用户帐户。这意味着来自该帐户的远程连接请求将没有密码可供检查。这些连接将被接受,但未经验证。

SSH的默认设置接受不带密码的连接请求。我们可以很容易地更改它,并确保所有连接都经过身份验证。

我们需要编辑您的SSH配置文件:

sudo gedit /etc/ssh/sshd_config

保护ssh服务器的最佳方法

滚动文件,直到看到带有“#permittentypasswords no.”的行。从行的开头删除哈希并保存文件。重新启动SSH守护程序:

sudo systemctl restart sshd

使用ssh密钥而不是密码

SSH密钥提供了登录SSH服务器的安全方法。密码可以猜测,破解,或暴力强迫。SSH密钥不会受到此类攻击。

生成SSH密钥时,需要创建一对密钥。一个是公钥,另一个是私钥。公钥已安装在要连接的服务器上。私钥,顾名思义,在您自己的计算机上是安全的。

SSH密钥允许您在没有密码的情况下建立连接,而密码与使用密码身份验证的连接相比更安全。

当您发出连接请求时,远程计算机将使用其公钥副本创建一条加密消息,并将其发送回您的计算机。因为它是用您的公钥加密的,所以您的计算机可以用您的私钥解除加密。

然后,您的计算机从消息中提取一些信息,特别是会话ID,对其进行加密,并将其发送回服务器。如果服务器可以用您的公钥副本对其进行解密,并且如果消息中的信息与服务器发送给您的信息匹配,则确认您的连接来自您。

这里,一个拥有SSH密钥的用户正在连接192.168.4.11的服务器。请注意,不会提示他们输入密码。

ssh [email protected]

保护ssh服务器的最佳方法

SSH密钥本身值得一篇文章。很方便,我们有一个给你。下面介绍如何创建和安装SSH密钥。

相关:如何从Linux Shell创建和安装SSH密钥

完全禁用密码验证

当然,使用SSH密钥的逻辑扩展是,如果所有远程用户都被迫采用它们,则可以完全关闭密码验证。

我们需要编辑您的SSH配置文件:

sudo gedit /etc/ssh/sshd_config

保护ssh服务器的最佳方法

滚动文件,直到看到以“#PasswordAuthentication yes”开头的行。删除行开头的哈希,将“yes”更改为“no”,然后保存文件。重新启动SSH守护程序:

sudo systemctl restart sshd

禁用x11转发

X11转发允许远程用户通过SSH会话从服务器运行图形应用程序。在威胁参与者或恶意用户手中,GUI界面可以使他们的恶意目的更容易实现。

网络安全的一个标准咒语是,如果你没有真正的理由打开它,就把它关掉。我们将通过编辑您的SSH配置文件来完成此操作:

sudo gedit /etc/ssh/sshd_config

保护ssh服务器的最佳方法

滚动文件,直到看到以“#X11Forwarding no.”开头的行。从行的开头删除散列并保存文件。重新启动SSH守护程序:

sudo systemctl restart sshd

设置空闲超时值

如果有一个已建立的SSH连接到您的计算机,并且在一段时间内没有任何活动,则可能会带来安全风险。用户有可能离开了办公桌,正在其他地方忙碌。任何经过他们办公桌的人都可以坐下来开始使用他们的计算机,并通过SSH使用您的计算机。

设置超时限制要安全得多。如果非活动时段与时间限制匹配,SSH连接将被丢弃。我们将再次编辑您的SSH配置文件:

sudo gedit /etc/ssh/sshd_config

保护ssh服务器的最佳方法

滚动文件,直到看到以“#ClientAliveInterval 0”开头的行。从行的开头删除散列,将数字0更改为所需的值。我们用了300秒,也就是5分钟。保存文件,然后重新启动SSH守护程序:

sudo systemctl restart sshd

设置密码尝试的限制

定义身份验证尝试次数的限制有助于阻止密码猜测和暴力攻击。在指定的身份验证请求数之后,用户将从SSH服务器断开连接。默认情况下,没有限制。但这很快就得到了纠正。

同样,我们需要编辑您的SSH配置文件:

sudo gedit /etc/ssh/sshd_config

保护ssh服务器的最佳方法

滚动文件,直到看到以“#maxauthries 0”开头的行。删除行开头的散列#,将数字0更改为所需的值。我们这里用了3个。进行更改时保存文件并重新启动SSH守护程序:

sudo systemctl重启sshd

我们可以通过尝试连接并故意输入错误的密码来测试这一点。

保护ssh服务器的最佳方法

请注意,MaxAuthTries number似乎比用户允许的尝试次数多了一次。在两次错误的尝试之后,我们的测试用户断开了连接。maxauthries设置为3。

禁用根登录

在Linux计算机上以root用户身份登录是不好的做法。您应该以普通用户身份登录,并使用sudo执行需要root权限的操作。更重要的是,您不应该允许root登录到SSH服务器。只允许普通用户连接。如果他们需要执行管理任务,他们也应该使用sudo。如果您被迫允许root用户登录,您至少可以强制他们使用SSH密钥。

最后一次,我们必须编辑您的SSH配置文件:

sudo gedit /etc/ssh/sshd_config

保护ssh服务器的最佳方法

在文件中滚动,直到看到以“#permitrotlogin prohibite password”开头的行。从行的开头删除哈希。

  • 如果要阻止root用户登录,请将“禁止密码”替换为“否”。
  • 如果您要允许root用户登录,但强制他们使用SSH密钥,请保留“禁止密码”。

保存更改并重新启动SSH守护程序:

sudo systemctl restart sshd

最后一步

当然,如果您根本不需要在您的计算机上运行SSH,请确保它已被禁用。

sudo systemctl stop sshd sudo systemctl disable sshd

如果你不打开窗户,没人能爬进去。

  • 发表于 2021-04-03 01:55
  • 阅读 ( 351 )
  • 分类:互联网

你可能感兴趣的文章

用堡垒主机保护您的网络只需3个步骤

... 安装SSH后,请确保将SSH服务器设置为使用密钥而不是密码进行身份验证。确保您的堡垒主机的IP与上面的端口转发规则中设置的IP相同。 ...

  • 发布于 2021-03-12 01:44
  • 阅读 ( 339 )

在linux上保护隐私的10大技巧

... 1密码保护您的帐户 ...

  • 发布于 2021-03-13 08:16
  • 阅读 ( 430 )

ssh和vpn的区别是什么?哪个更安全?

...通过向任何人**VPN接入来赚钱。他们经常在许多国家建立服务器。人们被吸引到这些服务是因为各种各样的原因,这些原因与连接到雇主的基础设施无关。 ...

  • 发布于 2021-03-14 04:40
  • 阅读 ( 415 )

如何将数据从raspberry pi复制到pc:5种方法

...的方法来复制数据到计算机和从计算机。它可以运行网络服务器,媒体服务器,复古游戏机等等。 ...

  • 发布于 2021-03-15 10:48
  • 阅读 ( 358 )

如何用ssh远程管理linux服务器

服务器管理仍然是一项必要的任务,有时也很麻烦。使用远程服务器或无头服务器尤其困难。谢天谢地,有了安全Shell(SSH)。secureshell是一种网络协议,允许网络服务在不安全的网络上运行。 ...

  • 发布于 2021-03-15 17:05
  • 阅读 ( 497 )

哪种文件传输方法最适合您的家庭网络?

当您创建自己的文件服务器或网络连接存储时,您可能会惊讶地发现,您需要花多少心思来移动文件。 ...

  • 发布于 2021-03-19 07:34
  • 阅读 ( 299 )

ssh是什么?它代表什么?

... SSH使用上述两种加密类型在客户机-服务器模型中创建安全连接。当客户机试图创建与服务器的连接时,每一方都会通信其加密协议。 ...

  • 发布于 2021-03-28 08:50
  • 阅读 ( 327 )

针对初学者系统管理员的10个linux强化提示

... SSH协议是Linux远程通信的推荐方法。确保您的OpenSSH服务器(sshd)配置安全。您可以在这里了解有关设置SSH服务器的更多信息。 ...

  • 发布于 2021-03-28 14:39
  • 阅读 ( 249 )

如何使用fail2ban保护您的linux服务器

...请求,例如Secure Shell(SSH)连接,或者充当web或电子邮件服务器,则需要保护它免受暴力攻击和密码猜测。 为此,您需要监视无法进入帐户的连接请求。如果他们在短时间内多次未能通过身份验证,则应禁止他们进一步尝试。 ...

  • 发布于 2021-04-02 03:13
  • 阅读 ( 176 )

如何从linux shell创建和安装ssh密钥

...戴夫@howtogeek。 相关:如何从Windows、macOS或Linux连接到SSH服务器 创建一对ssh密钥 这些指令在Linux的Ubuntu、Fedora和Manjaro发行版上进行了测试。在所有情况下,过程都是相同的,并且不需要在任何测试机器上安装任**软件。 要生成SSH...

  • 发布于 2021-04-03 11:45
  • 阅读 ( 239 )
莓酝
莓酝

0 篇文章

相关推荐