SSH(安全外壳)是一种协议,它使您能够创建经过身份验证的私有连接并使用加密密钥保护通道以在另一台计算机上启动远程外壳。使用此连接,您可以执行远程命令、启动安全文件传输、转发套接字、显示和服务等。在SSH之前,大多数远程管理都是通过telnet完成的,可以公平地说,一旦您可以建立远程会话,您就可以做几乎任何您需要做的事情。这个协议的问题是通信是纯文本的,没有加密。使用流量嗅探器可以轻松查看会话中的所有数据包,包括那些包含用户名和密码的数据包。使用SSH,参与设备之间的会话由于使用非对称密钥而被加密。如今,它比以往任何时候都更有意义,因为所有云服务器都由分布在世界各地的人管理。3配置SSH的技巧SSH协议最常见的实现是OpenSSH,它由OpenBSD项目开发,可用于大多数Linux和类Unix操作系统。安装此软件包后,您将拥有一个名为sshd_config的文件,该文件控制服务的大部分行为。它的默认设置通常非常保守,但我倾向于进行一些调整以优化我的SSH体验并保护我的服务器免受未经授权的访问。1.更改默认端口这是一个不是所有管理员都记得的问题。任何拥有端口扫描器的人都可以找到SSH端口,即使您之后将其移动到不同的端口,因此您很难摆脱危险,但它会有效地避免对您的数百次攻击用于服务器扫描的半生不熟的脚本。这是一种省心的操作,可以消除日志中的大量噪音。在撰写本文时,我在默认端口TCP22的云服务提供商上设置了SSH服务器,平均每分钟被攻击24次。将端口更改为更高的数字TCP45678后,平均每天有两个连接并猜测各种用户名或密码。要更改SSH的默认端口,请在您喜欢的文本编辑器中打开/etc/ssh/sshd_config并将端口值从22更改为大于1024的某个数字。这一行可能已被注释,因为22是默认值(因此无需在配置中明确说明),因此在保存之前取消注释。Port22122AddressFamilyanyListenAddress0.0.0.0ListenAddress::更改端口并保存文件后,重新启动SSH服务器:$sudosystemctlrestartsshd2.不要使用密码停止使用密码作为一种手段已成为一种普遍趋势在身份验证方面,双因素身份验证等方法越来越受欢迎。OpenSSH可以使用非对称密钥进行身份验证,因此无需记住复杂的密码、每隔几个月轮换一次密码,或者在建立远程会话时担心有人“偷看”。使用SSH密钥可以让您快速安全地登录到您的远程设备。这通常意味着花在错误用户名和密码上的时间更少。登录非常简单。没有钥匙时,没有输入,甚至没有提示。要使用此功能,您必须同时配置客户端(您面前的计算机)和服务器(远程计算机)。在客户端计算机上,您必须生成SSH密钥对。这包括公钥和私钥。顾名思义,一个公钥是供您分发到您要登录的服务器,另一个是私钥,不能与任何人共享。使用ssh-keygen命令创建一个新的密钥对,并使用-t选项指定一个好的、最新的加密库,例如ed25519:$ssh-keygen-ted25519生成公共/私有ed25519密钥对。输入保存密钥的文件(~/.ssh/id_ed25519):在密钥创建过程中,系统将提示您命名文件。您可以按Enter接受默认值。如果你以后创建更多的键,你可以给每个键一个自定义名称,但是有多个键意味着你必须指定每次交互使用哪个键,所以现在接受默认值就可以了。您也可以给您的密钥一个密码。这确保即使其他人设法获得您的私钥(这本身不应该发生),如果没有您的密码,他们将无法使用它。这对某些密钥是有用的保护措施,但对其他密钥(尤其是用于脚本编写的密钥)则不是。按Enter键留下没有密码的密钥,或者创建一个(如果您愿意)。要将密钥复制到服务器,请使用ssh-copy-id命令。例如,如果我有一个名为example.com的服务器,那么我可以使用以下命令将我的公钥复制到它上面:$ssh-copy-idjgarrido@example.com这将在服务器的.ssh目录中创建或修改下的authorized_keys文件,其中包含您的公钥。一旦您确认ssh-copy-id命令完成了它所做的工作,请尝试从您的计算机登录以验证您是否可以在没有密码的情况下登录(或者如果您选择使用密钥的密码,请输入密钥密码).在不使用服务器帐户密码登录到服务器后,编辑服务器的sshd_config并将PasswordAuthentication设置为no。PasswordAuthenticationno重新启动SSH服务以加载新配置:$sudosystemctlrestartsshd3.决定谁可以登录提升权限。这可以防止明显而痛苦的目标(root)受到简单而常见的脚本攻击。同样,OpenSSH的一个简单而强大的特性是能够确定哪些用户可以登录到一台机器。要设置哪些用户被授予SSH访问权限,请在您喜欢的文本编辑器中打开sshd_config文件并添加以下行:AllowUsersjgarridojanetux重新启动SSH服务以加载新的配置选项。这只允许三个用户(jgarrido、jane和tux)登录或在远程计算机上执行任何操作。总结您可以使用OpenSSH来实现强大而健壮的SSH服务器。这些只是加固系统的三个有用选项。尽管如此,仍有大量功能和选项可以在sshd_config文件中打开或关闭,并且有许多很棒的应用程序(如Fail2ban)可用于进一步保护SSH服务。
