secureshell或以其最广为人知的名称SSH是一种为远程安全地连接IT系统而开发的协议。SSH按照预期的客户机-服务器体系结构工作。在本文中,我们将研究SSH守护程序服务或sshd的各种与安全相关的配置选项。 关于客户端ssh配置的教程可以在下面的链接中找到。
SSH服务器配置文件
Ssh通常作为服务或守护进程工作。此服务从读取有关该服务的一些配置文件开始。此配置文件位于 /etc/ssh/sshd_config
. 在大多数Linux发行版中,该文件用作启动配置。为了修改配置文件,我们需要root权限。
$ head /etc/ssh/sshd_config

SSH服务器配置文件注释
有些规则需要对其进行评论。注释是用# 线。注释对SSH配置没有影响。
#This is just a comment.
重新启动SSH服务以应用配置更改
ssh配置文件更改后,应重新启动ssh服务或守护程序以使新配置生效。重启ssh服务有不同的方法,但重启ssh守护程序的最通用方法是使用 systemctl
命令如下。
$ sudo systemctl restart sshd
停止SSH服务
如果没有使用ssh,并且我们可以直接访问系统,那么停止ssh服务是一个更安全的选择。我们将停止ssh服务 systemctl
命令。
$ sudo systemctl stop sshd
检查SSH服务状态
在配置更改之后,我们重新启动ssh服务,但是如何才能确保它工作正常。有不同的方法,但最合适的方法是使用systemctl 获取服务的状态。此命令还提供有关服务的最后日志,这些日志可以提供有关配置错误或类似事件的提示。
$ sudo systemctl status sshd

指定SSH协议版本
SSH有两个版本。正如我们所期望的,版本1是旧的和不安全的版本。它在很久以前就被放弃了,但是一些ssh配置可能包含启用的这个版本。我们将仅使用以下行启用版本2。
Protocol 2
允许的用户
默认情况下,系统上创建的所有用户都可以远程登录。启用所有用户的远程登录机会不是一个好的安全实践。我们可以像下面这样限制指定用户的登录。在这个例子中,我们只允许用户i smail
使用ssh远程登录。
AllowUsers ismail
拒绝的用户
另一种限制用户登录的方法是指定一个没有使用ssh远程登录权限的用户帐户。指定用户以外的所有其他用户都将具有远程访问权限。在本例中,我们拒绝用户的远程访问 root
. 拒绝root访问是一种很好的安全实践。
DenyUser root
指定要运行的SSH服务或端口IP地址和接口
默认情况下,当ssh服务启动时,它在所有接口和IP地址上运行。如果系统有多个网络接口,其中一些接口是不安全的,这可能会产生一些安全问题。我们可以限制ssh服务接口运行。Ssh服务将不接受来自其他接口的连接。
ListenAddress 10.0.0.20
配置会话超时
建立连接后,如果没有显式关闭,连接将永远处于打开状态。这不是资源使用和安全所需要的情况。我们应该定义一个超时值,它将在这段不活动时间后关闭会话。在本例中,我们将这些值设置为 120
秒。
ClientAliveInterval 120
禁用SSH根登录
最佳实践之一是禁用 root
帐户远程登录。如果有其他高特权的知名帐户,这些帐户也必须被禁用。
PermitRootLogin no
配置SSH登录横幅
当使用ssh远程连接系统时,提供有关系统的信息警告信息是防止某些攻击的好方法。即使这不是一种保护或防止攻击的技术方法,它也可能在生理上给攻击者带来便利。
Banner "This system is monitored and logged in real time. In the case of attacks the legal actions will be taken against attacker."
配置或更改SSH端口号
默认情况下,ssh使用TCP端口22作为端口号。大多数用户和攻击者都假定此默认值并对TCP端口22执行操作。如果没有操作开销,则更改ssh服务器端口是最佳方法。在这个例子中,我们使用端口 1234
作为ssh守护程序端口。
Port 1234
禁用SSH 密码验证
密码身份验证是用户进行身份验证的一种简单方法。但是对于攻击者来说,它也比其他方法更简单。用户通常更喜欢简单易记的密码,这使得攻击者的工作更容易。我们可以禁用基于密码的身份验证。
PasswordAuthentication no
但是用户应该已经设置了基于公钥的身份验证,以便恢复使用SSH服务器。有关如何设置基于公钥的身份验证的更多信息,请参见以下链接。
http://www.poftut.com/how-to-setup-ssh-keys/
相关文章: Linux stat命令教程及示例
仅基于公钥的身份验证
默认情况下启用公钥身份验证,但显式启用它将使其更可靠。
PubkeyAuthentication yes
禁用空SSH密码
ssh守护进程的另一大风险是空密码。现代Linux发行版通常禁止空密码,但禁用空密码可以确保安全。
PermitEmptyPasswords no
启用严格(强制安全)模式
StrictMode在ssh服务器启动之前检查一些情况。Ssh密钥、配置文件所有权、权限 在ssh守护进程启动之前执行检查。如果其中一个失败,ssh服务器守护进程将不会启动。严格模式在默认情况下处于启用状态,但通常由系统管理员关闭。出于安全原因,应该启用它。
StrictMode yes
禁用X11转发
ssh最好的特性之一是通过远程连接转发X11。对于一些系统管理员和用户来说,这是一个非常有用的特性。但这会在系统中造成一些安全漏洞。如果不需要X11转发,请禁用它。
X11Forwarding no
更新SSH服务器和客户端软件
现在是使ssh服务器和守护进程安全的最后一条也是最重要的规则之一。更新是使ssh更安全的神奇方法。
Ubuntu、Debian、Mint:
$ sudo apt upgrade ssh
Fedora、Kali、CentOS:
$ sudo yum update ssh