Skip to content

Eternal Center

  • Single Node (单节点)
    • System (系统)
    • Service (服务)
    • Database (数据库)
    • Container (容器)
    • Virtualization (虚拟化)
  • Multi Node (多节点)
    • Cluster (集群)
    • Big Data (大数据)
    • Cloud Computing (云计算)
    • Batch Processing (批量处理)
  • Other (其它)
    • Ideas (思路)
    • Language (语言)
    • Project (项目)
  • Eternity (永恒)
    • Creations (创作)
    • Classics (经典)
    • Chronicle (编年史)
    • News (消息)
Posted on June 6, 2022August 29, 2022 by Mingyu Zhu

[内容] Linux SSH 常用安全加强配置项

  • 内容一:SSH 的配置文件
    • 1.1 SSH 配置文件的位置
    • 1.2 SSH 配置文件的所属主、所属组和权限
      • 1.2.1 确保 SSH 配置文件的所属主和所属组都是 root
      • 1.2.2 确保 SSH 配置文件的权限是 640
  • 内容二:SSH 常用安全加强配置项
    • 2.1 将 SSH 设置为 v2 版本
      • 2.1.1 将 SSH 设置为 v2 版本的配置参数
      • 2.1.2 将 SSH 设置为 v2 版本的参考步骤
    • 2.2 忽略 Rhosts 认证
      • 2.2.1 忽略 Rhosts 认证的配置参数
      • 2.2.2 设置忽略 Rhosts 认证的参考步骤
    • 2.3 禁止受信任的客户端通过 .rhosts 或 /etc/hosts.equiv 进行认证
      • 2.3.1 设置禁止受信任的客户端通过 .rhosts 或 /etc/hosts.equiv 进行认证的配置参数
      • 2.3.2 设置禁止受信任的客户端通过 .rhosts 或 /etc/hosts.equiv 进行认证的参考步骤
    • 2.4 禁止使用用户提交的 SSH 环境
      • 2.4.1 设置禁止使用用户提交的 SSH 环境的配置参数
      • 2.4.2 设置禁止使用用户提交的 SSH 环境的参考步骤
    • 2.5 禁止 root 用户通过 SSH 登录
      • 2.5.1 禁止 root 用户通过 SSH 登录的配置参数
      • 2.5.2 设置禁止 root 用户通过 SSH 登录的参考步骤
    • 2.6 禁止空密码 SSH 登录
      • 2.6.1 禁止空密码 SSH 登录的配置参数
      • 2.6.2 设置禁止空密码 SSH 登录的参考步骤
    • 2.7 将 SSH 登录信息写入系统日志
      • 2.7.1 将 SSH 登录信息写入系统日志的配置参数
      • 2.7.2 设置将 SSH 登录信息写入系统日志的参看步骤
    • 2.8 记录全部 SSH 信息
      • 2.8.1 记录全部 SSH 信息的配置参数
      • 2.8.2 设置记录全部 SSH 信息的参考步骤
    • 2.9 设置最大尝试登录失败数和触发尝试登录失败日志的登录失败数
      • 2.9.1 设置最大尝试登录失败数和触发尝试登录失败日志的登录失败数的配置参数
      • 2.9.2 设置最大尝试登录失败数和触发尝试登录失败日志的登录失败数的参考步骤
    • 2.10 设置 SSH 登录时密码输入的时间
      • 2.10.1 设置 SSH 登录时密码输入的时间的配置参数
      • 2.10.2 设置 SSH 登录时密码输入的时间都参考步骤
    • 2.11 禁止 SSH 图形界面转发
      • 2.11.1 禁止 SSH 图形界面转发的配置参数
      • 2.11.1 设置禁止 SSH 图形界面转发的参考步骤
    • 2.12 禁止 SSH TCP 转发
      • 2.12.1 设置禁止 SSH TCP 转发的配置参数
      • 2.12.2 设置禁止 SSH TCP 转发的参考步骤
    • 2.13 不显示上次 SSH 登录的信息,例如时间和地点等
      • 2.13.1 设置不显示上次 SSH 登录的信息,例如时间和地点等的配置参数
      • 2.13.1 设置不显示上次 SSH 登录的信息,例如时间和地点等的参考步骤
    • 2.14 设置同时只能让几个 SSH 用户登录
      • 2.14.1 设置同时只能让几个 SSH 用户登录的配置参数
      • 2.14.2 设置同时只能让几个 SSH 用户登录的参考步骤
    • 2.15 设置每个连接可以开启会话的个数
      • 2.15.1 设置每个连接可以开启会话的个数的配置参数
      • 2.15.2 设置每个连接可以开启会话的个数的参考步骤
    • 2.16 设置客户端 SSH 空闲超时时间
      • 2.16.1 设置客户端 SSH 空闲超时时间的配置参数
      • 2.16.2 设置客户端 SSH 空闲超时时间的参考步骤
    • 2.17 指定安全的 SSH Ciphers 加密算法
      • 2.17.1 设置 SSH Ciphers 加密算法的配置参数
      • 2.17.2 设置 SSH Ciphers 加密算法的参考步骤
    • 2.18 指定安全的 SSH MACs 加密算法
      • 2.18.1 设置 SSH MACs 加密算法的配置参数
      • 2.18.2 设置 SSH MACs 加密算法的参考步骤
    • 2.19 指定安全的 SSH KexAlgorithms 加密算法
      • 2.19.1 设置 SSH KexAlgorithms 加密算法的配置参数
      • 2.19.2 设置 SSH KexAlgorithms 加密算法的参考步骤
    • 2.20 只允许某 IP 地址可以 SSH 本服务器
      • 2.20.1 启用 UseTCPWrappers 参数
      • 2.20.2 禁止所有 IP 地址可以 SSH 本服务器
      • 2.20.3 只允许某 IP 地址可以 SSH 本服务器
    • 2.21 只允许从某 IP 地址来的某用户可以 SSH 本服务器
    • 2.22 禁止某 IP 地址可以 SSH 本服务器
      • 2.22.1 启用 UseTCPWrappers 参数
      • 2.22.2 禁止某 IP 地址可以 SSH 本服务器
    • 2.23 禁止从某 IP 地址来的某用户可以 SSH 本服务器
  • 内容三:重启 sshd 服务

内容一:SSH 的配置文件

1.1 SSH 配置文件的位置

/etc/ssh/sshd_config

1.2 SSH 配置文件的所属主、所属组和权限

1.2.1 确保 SSH 配置文件的所属主和所属组都是 root
# chown root:root /etc/ssh/sshd_config
1.2.2 确保 SSH 配置文件的权限是 640
# chmod 640 /etc/ssh/sshd_config

内容二:SSH 常用安全加强配置项

2.1 将 SSH 设置为 v2 版本

2.1.1 将 SSH 设置为 v2 版本的配置参数
Protocol 2
2.1.2 将 SSH 设置为 v2 版本的参考步骤
# sed -i 's/.*Protocol .*/Protocol 2/g' /etc/ssh/sshd_config

2.2 忽略 Rhosts 认证

2.2.1 忽略 Rhosts 认证的配置参数
IgnoreRhosts yes
2.2.2 设置忽略 Rhosts 认证的参考步骤
# sed -i 's/^.*IgnoreRhosts .*/IgnoreRhosts yes/g' /etc/ssh/sshd_config

2.3 禁止受信任的客户端通过 .rhosts 或 /etc/hosts.equiv 进行认证

2.3.1 设置禁止受信任的客户端通过 .rhosts 或 /etc/hosts.equiv 进行认证的配置参数
HostbasedAuthentication no
2.3.2 设置禁止受信任的客户端通过 .rhosts 或 /etc/hosts.equiv 进行认证的参考步骤
# sed -i 's/.*HostbasedAuthentication .*/HostbasedAuthentication no/g' /etc/ssh/sshd_config

2.4 禁止使用用户提交的 SSH 环境

2.4.1 设置禁止使用用户提交的 SSH 环境的配置参数
PermitUserEnvironment no
2.4.2 设置禁止使用用户提交的 SSH 环境的参考步骤
# sed -i 's/.*PermitUserEnvironment .*/PermitUserEnvironment no/g' /etc/ssh/sshd_config

2.5 禁止 root 用户通过 SSH 登录

2.5.1 禁止 root 用户通过 SSH 登录的配置参数
PermitRootLogin no
2.5.2 设置禁止 root 用户通过 SSH 登录的参考步骤
# sed -i 's/.*PermitRootLogin .*/PermitRootLogin no/g' /etc/ssh/sshd_config

2.6 禁止空密码 SSH 登录

2.6.1 禁止空密码 SSH 登录的配置参数
PermitEmptyPasswords no
2.6.2 设置禁止空密码 SSH 登录的参考步骤
# sed -i 's/.*PermitEmptyPasswords .*/PermitEmptyPasswords no/g' /etc/ssh/sshd_config

2.7 将 SSH 登录信息写入系统日志

2.7.1 将 SSH 登录信息写入系统日志的配置参数
SyslogFacility AUTH
2.7.2 设置将 SSH 登录信息写入系统日志的参看步骤
# sed -i 's/.*SyslogFacility .*/SyslogFacility AUTH/g' /etc/ssh/sshd_config

2.8 记录全部 SSH 信息

2.8.1 记录全部 SSH 信息的配置参数
LogLevel INFO
2.8.2 设置记录全部 SSH 信息的参考步骤
# sed -i 's/.*LogLevel .*/LogLevel INFO/' /etc/ssh/sshd_config

2.9 设置最大尝试登录失败数和触发尝试登录失败日志的登录失败数

2.9.1 设置最大尝试登录失败数和触发尝试登录失败日志的登录失败数的配置参数
MaxAuthTries 5

(补充:这里以设置最大尝试登录失败数是 5 次为例,如果此时尝试登录次数超过 2,则系统日志中会出现登录失败的记录)

2.9.2 设置最大尝试登录失败数和触发尝试登录失败日志的登录失败数的参考步骤
# sed -i 's/.*MaxAuthTries .*/MaxAuthTries 5/g' /etc/ssh/sshd_config

(补充:这里以设置最大尝试登录失败数是 5 次为例,如果此时尝试登录次数超过 2,则系统日志中会出现登录失败的记录)

2.10 设置 SSH 登录时密码输入的时间

2.10.1 设置 SSH 登录时密码输入的时间的配置参数
LoginGraceTime 600

或者:

LoginGraceTime 10m

(补充:这里以设置 SSH 登录时密码输入的时间为 600 秒为例)

2.10.2 设置 SSH 登录时密码输入的时间都参考步骤
# sed -i 's/.*LoginGraceTime .*/LoginGraceTime 600/g' /etc/ssh/sshd_config

或者:

# sed -i 's/.*LoginGraceTime .*/LoginGraceTime 10m/g' /etc/ssh/sshd_config

(补充:这里以设置 SSH 登录时密码输入的时间为 600 秒为例)

2.11 禁止 SSH 图形界面转发

2.11.1 禁止 SSH 图形界面转发的配置参数
X11Forwarding no
2.11.1 设置禁止 SSH 图形界面转发的参考步骤
# sed -i 's/.*X11Forwarding .*/X11Forwarding no/g' /etc/ssh/sshd_config

2.12 禁止 SSH TCP 转发

2.12.1 设置禁止 SSH TCP 转发的配置参数
AllowTcpForwarding no
2.12.2 设置禁止 SSH TCP 转发的参考步骤
# sed -i 's/.*AllowTcpForwarding .*/AllowTcpForwarding no/g' /etc/ssh/sshd_config

2.13 不显示上次 SSH 登录的信息,例如时间和地点等

2.13.1 设置不显示上次 SSH 登录的信息,例如时间和地点等的配置参数
PrintMotd no

或者:

PrintLastLog no
2.13.1 设置不显示上次 SSH 登录的信息,例如时间和地点等的参考步骤
# sed -i 's/.*PrintMotd .*/PrintMotd no/g' /etc/ssh/sshd_config

或者:

# sed -i 's/.*PrintLastLog .*/PrintLastLog no/g' /etc/ssh/sshd_config

2.14 设置同时只能让几个 SSH 用户登录

2.14.1 设置同时只能让几个 SSH 用户登录的配置参数
MaxStartups 10:30:60

(
补充:这里以
1) 最多同时只能让 10 个用户发起 SSH 登录请求,超过此数量的登录请求会被拒绝
2) 当 SSH 连接数超过上限时 (这里设置的是 10 个),再新发起 SSH 登录请求的用户,会有 30% 的概率被拒绝
3) 当 SSH 连接数超过 60 时,再新发起 SSH 登录请求的用户全部会被拒绝,这里的 30 参数将会无效
)

2.14.2 设置同时只能让几个 SSH 用户登录的参考步骤
# sed -i 's/.*MaxStartups .*/MaxStartups 10:30:60/g' /etc/ssh/sshd_config

(
补充:这里以
1) 最多同时只能让 10 个用户发起 SSH 登录请求,超过此数量的登录请求会被拒绝
2) 当 SSH 连接数超过上限时 (这里设置的是 10 个),再新发起 SSH 登录请求的用户,会有 30% 的概率被拒绝
3) 当 SSH 连接数超过 60 时,再新发起 SSH 登录请求的用户全部会被拒绝,这里的 30 参数将会无效
)

2.15 设置每个连接可以开启会话的个数

2.15.1 设置每个连接可以开启会话的个数的配置参数
MaxSessions 4

(补充:这里以设置每个连接可以开启 4 个会话为例,默认值为 10)

2.15.2 设置每个连接可以开启会话的个数的参考步骤
# sed -i 's/.*MaxSessions .*/MaxSessions 4/g' /etc/ssh/sshd_config

(补充:这里以设置每个连接可以开启 4 个会话为例,默认值为 10)

2.16 设置客户端 SSH 空闲超时时间

2.16.1 设置客户端 SSH 空闲超时时间的配置参数
ClientAliveInterval 100
ClientAliveCountMax 3

(补充:这里以设置客户端 SSH 空闲超时时间为 100 * 3=300 秒为例)

2.16.2 设置客户端 SSH 空闲超时时间的参考步骤
# sed -i 's/.*ClientAliveInterval .*/ClientAliveInterval 100/g' /etc/ssh/sshd_config
# sed -i 's/.*ClientAliveCountMax .*/ClientAliveCountMax 3/g' /etc/ssh/sshd_config

(补充:这里以设置客户端 SSH 空闲超时时间为 100 * 3=300 秒为例)

2.17 指定安全的 SSH Ciphers 加密算法

2.17.1 设置 SSH Ciphers 加密算法的配置参数
Ciphers aes256-ctr,aes192-ctr,aes128-ctr

(补充:这里以使用 aes256-ctr、aes192-ctr 和 aes128-ctr SSH Ciphers 加密算法为例)

2.17.2 设置 SSH Ciphers 加密算法的参考步骤
# echo "Ciphers aes256-ctr,aes192-ctr,aes128-ctr" >> /etc/ssh/sshd_config

(补充:这里以使用 aes256-ctr、aes192-ctr 和 aes128-ctr SSH Ciphers 加密算法为例)

2.18 指定安全的 SSH MACs 加密算法

2.18.1 设置 SSH MACs 加密算法的配置参数
MACs hmac-sha2-512,hmac-sha2-256

(补充:这里以使用 hmac-sha2-512 和 hmac-sha2-256 SSH MACs 加密算法为例)

2.18.2 设置 SSH MACs 加密算法的参考步骤
# echo "MACs hmac-sha2-512,hmac-sha2-256" >> /etc/ssh/sshd_config

(补充:这里以使用 hmac-sha2-512 和 hmac-sha2-256 SSH MACs 加密算法为例)

2.19 指定安全的 SSH KexAlgorithms 加密算法

2.19.1 设置 SSH KexAlgorithms 加密算法的配置参数
KexAlgorithms ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256

(补充:这里以使用 ecdh-sha2-nistp521、ecdh-sha2-nistp384、ecdh-sha2-nistp256 和 diffie-hellman-group-exchange-sha256 SSH KexAlgorithms 加密算法为例)

2.19.2 设置 SSH KexAlgorithms 加密算法的参考步骤
# echo "KexAlgorithms ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256" >> /etc/ssh/sshd_config

(补充:这里以使用 ecdh-sha2-nistp521、ecdh-sha2-nistp384、ecdh-sha2-nistp256 和 diffie-hellman-group-exchange-sha256 SSH KexAlgorithms 加密算法为例)

2.20 只允许某 IP 地址可以 SSH 本服务器

2.20.1 启用 UseTCPWrappers 参数
# vim /etc/ssh/sshd_config

将部分内容修改如下:

......
UseTCPWrappers yes
......
2.20.2 禁止所有 IP 地址可以 SSH 本服务器
# vim /etc/hosts.deny

添加以下内容:

......
sshd : ALL 
2.20.3 只允许某 IP 地址可以 SSH 本服务器
# vim /etc/hosts.deny

添加以下内容:

......
sshd : 192.168.0.1/32 : ALLOW
sshd : ALL

(补充:这里以允许 IP 地址 192.168.0.1 可以 SSH 本服务器为例)

(注意:这和防火墙的策略一样从上往下匹配及停止,所以允许某 IP 地址可以 SSH 本服务器的策略一定要加在禁止所有 IP 地址可以 SSH 本服务器的策略之前)

2.21 只允许从某 IP 地址来的某用户可以 SSH 本服务器

# vim /etc/ssh/sshd_config

添加以下内容:

......
AllowUsers zhumingyu mingyuzhu@192.168.1.1
AllowGroups zhu

(
补充:这里以
1) 允许用户 zhumingyu 可以登录
2) 允许从 192.168.1.1 来的用户 mingyuzhu 可以登录
3) 允许属于组 zhu 的用户可以登录
其它用户不能登录
为例
)

2.22 禁止某 IP 地址可以 SSH 本服务器

2.22.1 启用 UseTCPWrappers 参数
# vim /etc/ssh/sshd_config

将部分内容修改如下:

......
UseTCPWrappers yes
......
2.22.2 禁止某 IP 地址可以 SSH 本服务器
# vim /etc/hosts.deny

添加以下内容:

sshd : 192.168.0.1/32 : ALLOW

(补充:这里以禁止 IP 地址 192.168.0.1 可以 SSH 本服务器为例)

2.23 禁止从某 IP 地址来的某用户可以 SSH 本服务器

# vim /etc/ssh/sshd_config

添加以下内容:

......
DenyUsers zhumingyu mingyuzhu@192.168.1.1
DenyGroups zhu

(
补充:这里以
1) 禁止用户 zhumingyu 登录
2) 禁止从 192.168.1.1 来的用户 mingyuzhu 登录
3) 禁止属于组 zhu 的用户登录
其它用户都可以登录
为例
)

内容三:重启 sshd 服务

# systemctl restart sshd

(补充:内容二里的参数只有重启了 sshd 服务后才能生效)

CategoriesChinese (中文), System (系统), System Login Security (系统登录安全), System Network & System Security & System Log (系统网络 & 系统安全 & 系统日志), System Operation & System Setting & System Software (系统操作 & 系统设置 & 系统软件), System Port Security (系统端口安全), System Security (系统安全), System Setting (系统设置)

Post navigation

Previous PostPrevious 随笔 16
Next PostNext [内容] Linux 用户登录记录的显示

Aspiration (愿景):

Everyone can achieve self achievement and self happiness fairly

每个人都能公平地实现自我成就和自我幸福

Position (位置):

Running on Evolution Host and DigitalOcean

正在 Evolution Host 和 DigitalOcean 上运行

Logo (徽标):

Additional Information (其他信息):

About Manual Clone Contact
Disclaimer Donation Friendly Links
关于 说明书 克隆 联系
免责申明 捐赠 友情链接

Standby IP Address (备用 IP 地址):

152.69.204.95  150.230.63.10  Please configure before use / 请先配置再使用

Search Outside Website (站外搜索):

Google Wikipedia Bing
Proudly powered by LNMP Proudly powered by WordPress