Linux ssh配置说明

OpenSSH 服务器 默认配置文件为: /etc/ssh/sshd_config

在对该文件进行更改后, 需要将sshd重新启动才能生效:

systemctl restart sshd

sshd_config 选项

以下是 OpenSSH 守护程序配置文件中一些最常修改的指令。
以“#”开头的行表示注释,不是配置的一部分。

Port 22

Port 指定了 sshd 监听连接的 TCP 端口,默认是 22 端口。
注意,如果你在这里更改端口,你还需要修改 SELinux 端口标记。

ListenAddress 0.0.0.0
ListenAddress ::

ListenAddress 定义了 sshd 应该侦听的本地 IP 地址,在这种情况下,我们侦听 0.0.0.0,即系统上的任何 IPv4 地址,以及 :: 系统上的任何 IPv6 地址。

SyslogFacility AUTHPRIV

SyslogFacility 定义了 syslog 日志记录的工具代码,可以修改它以更改消息发送到 syslog 的方式。

LoginGraceTime 2m

LoginGraceTime 导致服务器在经过指定的时间后没有用户成功登录的情况下断开连接。

PermitRootLogin yes

PermitRootLogin 定义了 root 用户是否可以通过 SSH 登录。
默认情况下,root 可以通过 SSH 获得访问权限,为了提高安全性,我们可能需要考虑禁用它。

AuthorizedKeysFile .ssh/authorized_keys

AuthorizedKeysFile 只是服务器上的一个文件,其中包含允许进行身份验证的用户的公钥,默认情况下该文件以 .ssh/authorized_keys 的形式存在。

PasswordAuthentication yes

PasswordAuthentication 定义是否允许使用密码进行身份验证,默认值为 yes。
这可以通过将其更改为 no 来禁用,以防止用户通过密码登录。
如果这样做,我们将需要使用其他方法,例如公钥。

PubkeyAuthentication yes

PubkeyAuthentication 控制是否允许公钥身份验证,默认情况下设置为 yes。
这可以组合使用或者代替 PasswordAuthentication。

Protocol 2

协议可以设置为 1,2 或者两者。
默认情况下只使用版本 2,不建议启用版本 1,因为它被认为是不安全的。

StrictModes yes

StrictModes 指定 sshd 是否应该在允许登录之前检查用户文件和主目录的权限,只有当这些不是全局可写时才应该成功。

ChallengeResponseAuthentication no

ChallengeResponseAuthentication 指定我们是否要允许挑战响应身份验证,例如通过 PAM 或者其他方式。
如果我们打算使用“PasswordAuthentication no”禁用密码身份验证,则还应将其设置为 no。

PermitEmptyPasswords no

理想情况下应该禁用 PermitEmptyPasswords,如果 PasswordAuthentication 设置为 yes 那么这允许使用空密码登录帐户,幸运的是这里的默认值是 no 这绝对可以保留。

AllowTcpForwarding no

AllowTcpForwarding 指定是否允许通过 SSH 进行 TCP 转发。

X11Forwarding no

X11Forwarding 默认设置为 no,启用后它允许通过 SSH 转发 X11 图形。

UsePrivilegeSeparation sandbox

UsePrivilegeSeparation 指定 sshd 是否应使用无特权的子进程来处理传入的网络流量,一旦用户对创建具有该已验证用户特权的另一个进程进行身份验证。
这有助于通过在非特权进程中包含攻击者来防止特权升级。
默认情况下,它设置为 yes,将其设置为沙箱会设置另外的限制。

Banner /etc/issue

Banner 只是指定了一个文件,我们希望在验证之前向用户显示其内容,例如,向用户提供一条消息,告知他们该系统仅适用于授权用户,这可能很有用。

Subsystem sftp /usr/libexec/openssh/sftp-server

子系统用于配置外部子系统,例如文件传输守护程序,这里我们使用它来利用 sftp-server,允许通过 SSH 进行 SFTP 传输。

KerberosAuthentication no

KerberosAuthentication 指定用户提供的密码是否将由 Kerberos KDC 检查,如果我们需要使用基于 Kerberos 的 SSH 身份验证,则可以启用此功能。

UseDNS yes

启用 UseDNS 后,sshd 将查找远程主机名并检查解析的 IP 地址是否映射回相同的 IP 地址,默认情况下设置为 yes 并启用,但经常设置为 no 以帮助加速 SSH 连接作为 DNS解决需要时间来完成。

UsePAM no

PAM 对你做过什么?
这将启用 Pluggable Authentication Module (PAM) 接口,该接口默认设置为 no。

AllowGroups group1 group2

AllowGroups 列出了允许通过 SSH 登录的组名。
默认情况下,任何组都可以通过 SSH 登录,但可以在此处进行限制。
使用 DenyGroups 也可以完成相反的操作。

AllowUsers alice bob

AllowUsers 的工作方式与上面的 AllowGroups 类似,默认情况下任何用户都可以通过 SSH 登录,但如果需要,我们可以将其限制为特定的用户列表。
也可以使用 DenyUsers 完成相反的操作。

ChrootDirectory /home/chroot/

ChrootDirectory 定义了一个目录的路径,在认证后用作 chroot 环境,用户将无法退出 chroot 环境。

Match User alice
       X11Forwarding yes
       AllowTcpForwarding yes

可以使用 Match 指令在每个用户或者组的基础上覆盖全局设置。
Match 指令是一个条件块,仅在满足行上的项目时才适用,例如上述配置仅适用于用户“alice” .匹配需要放在文件的末尾,因为如果满足匹配条件,则匹配行之后的任何内容都将应用,除非之后指定了具有新条件的另一个匹配块,在这种情况下,这仅在此新条件为匹配。

日期:2020-07-07 20:54:53 来源:oir作者:oir