Linux SSH服务器(sshd)配置和安全选项示例

secureshell或以其最广为人知的名称SSH是一种为远程安全地连接IT系统而开发的协议。SSH按照预期的客户机-服务器体系结构工作。在本文中,我们将研究SSH守护程序服务或sshd的各种与安全相关的配置选项。 关于客户端ssh配置的教程可以在下面的链接中找到。

null

SSH服务器配置文件

Ssh通常作为服务或守护进程工作。此服务从读取有关该服务的一些配置文件开始。此配置文件位于 /etc/ssh/sshd_config . 在大多数Linux发行版中,该文件用作启动配置。为了修改配置文件,我们需要root权限。

$ head /etc/ssh/sshd_config
Server Configuration File
服务器配置文件

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
Check Ssh Service Status
检查Ssh服务状态

指定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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享