介绍
SSH 是通过命令行连接到远程 Linux 和 Unix 类型的服务器的主要方式,它提供了一个安全的连接,您可以使用它来运行命令,与系统进行交互,甚至隧道无关的流量。
大多数用户都知道 如何启动并连接到远程服务器的基本知识用这样的命令:
ssh username@remote_server
然而,您在配置您的 SSH 示威者方面还有更多的选项可以帮助增加安全性,管理用户连接等,我们将讨论一些可供您使用的选项,以便对您的 SSH 访问有更精确的控制。
我们将在 Ubuntu 12.04 VPS 实例上演示这些概念,但任何现代的 Linux 发行版都应该以类似的方式运作。
浏览 SSHD 配置文件
SSH DAEMON 的主要配置来源是 /etc/ssh/sshd_config
文件,请注意,这与 ssh_config
文件不同,它指定了客户端的默认值。
现在用管理权限打开文件:
1sudo nano /etc/ssh/sshd_config
您将看到一个文件,有很多选项,希望(取决于您的分布),很多评论. 虽然大多数分布在建立合理的默认值方面做得相当好,但还有改进和定制的余地。
让我们来看看 Ubuntu 12.04 上已在我们的文件中设置的一些选项:
港口和协议
- ** 端口 22**:这指定了 SSH 端口,该端口将寻找连接。默认情况下,大多数客户端和服务器都运行在端口 22 上,但将该端口更改到另一个端口可能会减少恶意用户
驱动
的 SSH 登录尝试数量。
钥匙与分离
- HostKey /etc/ssh/ssh__host_...:这些行指定了服务器的主机密钥。这些密钥用于识别服务器连接的客户端。如果客户端在过去已经与服务器进行通信,他们可以使用这个密钥来验证新的连接。
- UsePrivilegeSeparation是:此选项允许SSH生成只具有其任务所需的特权的孩子流程。这是一个安全功能,用于在安全漏洞的情况下隔离流程。
- KeyRegenerationInterval和 ServerKeyBits:这些选项会影响为SSH协议创建的服务器密钥。
木材和限制
- ** 系统功能和逻辑级**: 这些选项指定如何记录活动。 第一个选项是记录信件的设施代码,第二个选项是告诉日志级别,或详细程度,以记录.
- ** LoginGrace时间 页:1 这决定了服务器在没有成功登录的情况下在断开客户端之前等待的秒数.
- ** 佩米特 Root Login 对**: 此选项允许或否认 SSH 使用根账户的能力 。 由于"根"账户是攻击者知道在服务器上存在的一个账户,并且由于它提供了不受限制的对机器的访问,所以它常常是一个高度有针对性的账户. 一旦您配置了具有sudo权限的正则用户账户, 则建议将此设置为
否
。 - ** 策略模式是** : 这告诉SSH忽略任何没有正确权限的用户级配置文件. 如果一个用户设置其配置文件为可被世界读取,这会产生安全影响. 拒绝进入比较安全,
- ** 无知的宿主和宿主RSA认证**: 它们指定了 rhost 样式认证是否会被接受 。 这是不适用于协议的 1 语法 2.
*** 热源认证 无**: 此为上述第2号协议版本. 基本上,这允许基于连接客户端的主机进行认证. 这通常只能被隔离的环境所接受,因为有可能对源信息进行渗透. 您可以在
/etc/ssh/shosts.equiv
文件中或/etc/hosts.equiv
文件中指定主机信息。 这不属于本指南的范围。 - ** 许可证字 无**: 此选项限制在允许密码认证时没有密码的账户的 SSH 访问 。 这可能是一个巨大的安全风险 你几乎不应该改变它。 *** 挑战反应**: 此行启用或禁用一个可以通过PAM配置的挑战响应认证类型. 这不属于本指南的范围。 (英语)
展出
- X11Forwarding是的:这允许您将X11图形用户界面传输到客户端机上的服务器上的应用程序。这意味着您可以在服务器上启动图形程序,并在客户端上进行交互。客户端必须有一个X窗口系统可用。您可以在OS X上安装这些,任何桌面Linux都将具有此功能。
- X11DisplayOffset 10:这是一种对X11传输的sshd显示号的抵消。这种抵消允许SSH生成X11窗口以避免与现有的X服务器发生冲突。
- PrintMotd no:这说明SSH的戴蒙本身不应该阅读和显示当天文件的消息。这有时是由壳本身读取的,所以您可能需要
连接与环境
- TCPKeepAlive 是的:这说明是否将 TCP keepalive 消息发送到客户端机器。这可以帮助服务器识别出现问题,而连接将被杀死。如果此选项被禁用,则在网络出现短暂的问题时,连接不会被杀死,这可能是好的,但这也意味着用户可以脱离连接并继续锁定资源。
- AcceptEnv LANG LC_*:此选项允许您接受客户端机器的某些环境变量。在这种特殊情况下,我们正在接受语言变量,这可以帮助客户端正确显示壳会话。
- Subsystem sftpus /lib/opens/shens/sftp-server:此选项可配置可以与 SSH 使用的外部子系统。
这将处理我们 Ubuntu 12.04 机器上的默认启用选项,接下来,让我们谈谈一些其他可能有助于您设置或修改的选项。
SSHD 其他选项
有幾個其他選項,我們可以設定我們的SSH大衛. 其中一些可能立即對你有用,而其他可能只在特定情況下有用。
用户和组过滤
有些选项允许您准确控制哪些用户将能够通过SSH登录,这些选项应该被视为相互排斥,例如允许用户
选项意味着所有其他用户都被拒绝访问。
- AllowGroups:此选项允许您在服务器上指定群组的名称。只有这些群组成员的用户才能够登录。这构建了应该访问的群组的白名单。
- AllowUsers:这与上面的选项类似,但它指定了允许登录的特定用户。本列表中的任何用户都无法登录。这作为用户白名单运作。
- DenyGroups:此选项设置了不允许登录到系统的群组的黑名单。属于这些群组的用户将不会被允许登录。
- DenyUsers:这是用户的黑名单。它具体说明哪些用户不应该被允许登录通过SSH。
此外,还有一些其他限制选项可用,这些选项可以与上述任何选项一起使用:
- 匹配:此选项允许对谁可以在什么情况下进行身份验证的更精细的控制。它指定了在特定用户或组连接时应该使用的不同选项集。我们将在稍后进一步讨论此问题。
- RevokedKeys:这允许您指定被撤销的公共密钥列表。
混淆的选择
有几种选项,我们可以用来配置SSH大象将注意哪些网络流量:
- AddressFamily:此选项指定了您将接受的连接的地址类型。默认情况下,该值为
任何
,但您可以为 IPv4 地址设置net
或为 IPv6 地址设置inet6
。 - ListenAddress:此选项允许您告诉 SSH 示威者在特定地址和端口上聆听。
其他可用的选项类型包括用于设置 基于证书的身份验证,连接限制选项,如ClientAliveCountMax
和ClientAliveInterval
,以及选项,如ChrootDirectory
,可用于将登录的用户锁定到特定的预配置的root环境。
限制用户登录
我们上面提到了一些工具,你必须限制访问用户和群组。
使用这些最基本的语法是这样的东西:
1AllowUsers demouser fakeuser madeupuser
正如您所看到的,我们可以在这些指令中指定多个空间分离的用户。
例如,如果我们想允许除了用户John
之外的所有人登录,我们可以尝试这样的东西:
1AllowUsers * !john
这个具体的例子可能会更好地用一个DenyUsers
行来表达:
1DenyUsers john
我们也可以使用一个 ?
字符来匹配一个字符,例如,我们可以使用:
1AllowUsers ?im
这将允许来自tim
,jim
或vim
等帐户的登录。
然而,我们可以得到更具体的内容。在用户规格中,我们可以使用user@hostname
表格来限制登录到特定客户端源位置。
1AllowUsers [email protected] fakeuser
这将允许假用户
从任何地方登录,但只允许演示器
从特定主机登录。
我们还可以通过TCP包装来限制在sshd_config
文件之外的主机对主机的访问,这是通过/etc/hosts.allow
和/etc/hosts.deny
文件进行配置的。
例如,我们可以根据SSH流量来限制访问,将这样的行添加到hosts.allow
文件中:
1sshd: .example.com
假设我们在hosts.deny
文件中有一个伴侣行,它看起来像这样:
1sshd: ALL
这将限制登录仅来自example.com
或子域的登录。
使用匹配选项添加例外
我们可以通过使用匹配
选项来进一步控制我们的选项。
我们通过使用匹配
选项开始匹配,然后指定标准的关键值对。 可用的键是用户
,组
,主机
和地址
。 我们可以将标准与空间分开,并将模式(用户1,用户2)与符号分开。
1Match User !demouser,!fakeuser Group sshusers Host *.example.com
上面的行只会匹配,如果用户不是Demouser
或fakeuser
,如果用户是sshusers
组的成员,如果他们正在从example.com
或子域连接。
地址
的标准可以使用 CIDR netmask notation。
遵循匹配
规格的选项是条件应用的。这些条件选项的范围是直到文件的末尾或到下一个匹配规格为止。
由于这种条件块,匹配下的选项通常被标注为表明它们仅适用于上述匹配,例如,上述条件可能有这样的块:
1Match User !demouser,!fakeuser Group sshusers Host *.example.com
2 AuthorizedKeysFile /sshusers/keys/%u
3 PasswordAuthentication yes
4 X11Forwarding
5 X11DisplayOffset 15
当您处理匹配规格时,您只能访问一小组选项. 若要查看完整列表,请参阅sshd_config
男人页面:
1man sshd_config
搜索匹配
部分,查看可用的选项列表。
结论
正如您所看到的,您可以调整 SSH 服务器侧的许多值,这将影响用户登录的能力和体验的质量. 请确保在大规模实施之前仔细测试您的更改,以捕捉错误,并确保您的限制不会意外影响太少或太多的用户。
熟悉您的 /etc/ssh/sshd_config
文件是了解如何仔细控制访问您的服务器的第一步,这是任何 Linux 系统管理员的重要技能。