SSH服务端配置、优化加速、安全防护

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: CentOS7自带的SSH服务是OpenSSH中的一个独立守护进程SSHD。由于使用telnet在网络中是明文传输所以用其管理服务器是非常不安全的不安全,SSH协议族可以用来对服务器的管理以及在计算机之间传送文件。

img_793422991b97cda44bb6632ce6cbd574.png

CentOS7自带的SSH服务是OpenSSH中的一个独立守护进程SSHD。由于使用telnet在网络中是明文传输所以用其管理服务器是非常不安全的不安全,SSH协议族可以用来对服务器的管理以及在计算机之间传送文件。

一、配置文件

  • 服务器配置文件 /etc/ssh/sshd_config
  • 日志文件 /var/log/secure

二、配置文件详解

Port    22                  #默认端口
ListenAddress IP            #监听服务器端的IP,ss -ntl 查看22端口绑定的iP地址
LoginGraceTime 2m           #登录时不输入密码时超时时间
HostKey                   # HostKey本地服务端的公钥路径
UseDNS no                   #禁止将IP逆向解析为主机名,然后比对正向解析的结果,防止客户端欺骗
PermitRootLogin yes         #是否允许root使用SSH远程登录
MaxAuthTries 6              #密码错误的次数6/2=3(MAN帮助中写明要除2)次后断开连接
MaxSessions 10              #最大的会话连接数(连接未登录的会话最大值,默认拒绝旧的连接未登录的会话)
StrictModes yes             #检查用户家目录中ssh相关的配置文件是否正确
PubkeyAuthentication yes    #是否使用基于key验证登录
AuthorizedKeysFile      .ssh/authorized_keys    #key验证登录的客户端公钥路径
PasswordAuthentication yes  #是否允许使用密码登录
PermitEmptyPasswords no     #用户使用空口令登录
GatewayPorts no             #启用网关功能,开启后可以将建立的SSH隧道(端口转发)共享出去
ClientAliveCountMax 3       #探测3次客户端是否为空闲会话,↓3*10分钟后断开连接
ClientAliveInterval 10      #空闲会话时长,每10分钟探测一次
MaxStartups 10:30:100       #start:rate:full;当连接但为进行认证的用户超过10个,drop30%(rate/full)的连接当连接但未登录的连接达到100个后,新建立的连接将被拒绝
Banner /path/file           #认证前输出的登录提示信息,指定文件路径
GSSAPIAuthentication no 
AllowUsers username         #白名单,如果白名单有用户只有白名单的用户可以登陆
DenyUsers                  #黑名单,被拒绝的用户,如果即允许又拒绝则拒绝生效
AllowGroups                 #组白名单
DenyGroups                  #组黑名单

三、免密登录(基于KEY验证登录)

在客户端成功密钥对,然后将公钥复制到要免密登录的服务器即可。
注:名称只能为 authorized_keys ,添加多个公钥信息可以直接追加>> .ssh/authorized_keys

ssh-keygen -t rsa -p “1234”                     #创建密钥对,-t类型为rsa,-p私钥密码为1234
ssh-copy-id -i ~/.ssh/id_rsa.pub IP     #-i指定公钥路径后将公钥复制到远程IP ~/.ssh/authorized_keys

四、常见故障

  • 提示 ssh_exchange_identification: Connection closed by remote host
    多数情况为配置文件出错,可以使用 sshd -T对配置文件进行逐一检查
  • 提示:server refused our key 免密登录被拒绝
    使用免密登录 公钥文件的权限不正确所以会拒绝登录,检查客户端复制到服务端的公钥信息文件权限是否正确

五、优化加速

服务器端修改配置文件中一下两项进行修改

vim /etc/ssh/sshd_conf
UseDNS no               
GSSAPIAuthentication no

UseDNS 会对客户端进行DNS反向解析,然后在比对正向解析的结果查看是否一致。
GSSAPIAuthentication大多数情况下使用密码验证或者秘钥验证所以关闭GSSAPI验证即可

六、日志分析

  • 查看方式
    手动查看日志文件 /var/log/secure
    systemctl查看日志文件systemctl suts sshd

  • 常见警告
    提示:Authentication refused:bad ownership or modes for diectory
    ssh连接的用户的家目录下.ssh目录所有者或者权限不正确(正确为700),sshd会发出警告但依然允许登录

七、安全相关

- DOS

SSH也可能成为DOS攻击的对象,例如恶意用户连接SSH但不输入密码进行验证,由于设置了MaxStartups会导致正常用户无法进行登录。针对此情况建议:

  • 修改默认端口
  • MaxStartups调大一些例如 MaxStartups 100:30:1000
  • LoginGraceTime 10 调整连接超时未10秒
  • MaxSessions 10 设置连接但未登录的用户最大值为10

- 其他优化

  • 限制可登录用户
  • 设定空闲会话超时时长
  • 充分利用防火墙设置ssh访问策略
  • 仅监听指定IP的ssh
  • 禁止使用空口令登录
  • 禁止使用root直接进行登录
  • 做好日志分析
  • 加强用户登录的密码口令
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
13天前
|
网络安全 开发工具 git
配置本地环境以管理Git多账户SSH连接的方法
通过以上步駟设置后, 您可以轻松管理多個 Git 账户并且根据不同项目需求切换 SSH 密匙进行版本控制操作。
152 20
|
3月前
|
网络安全 开发工具 git
GitHub 多账户 SSH 配置指南
本文介绍了如何在同一台电脑上配置多个 GitHub 账户的 SSH 密钥。内容包括:检查现有密钥、生成新的 SSH 密钥、配置 SSH config 文件、将公钥添加到 GitHub、验证 SSH 连接、设置 Git 用户信息、创建工作区目录、使用不同账户克隆仓库,以及为每个仓库配置独立的用户信息等步骤。通过这些操作,可以实现在不同项目中使用不同的 GitHub 账户进行提交和管理。
253 0
|
6月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
222 10
|
安全 网络协议 Shell
Github代码仓库SSH配置流程
这篇文章是关于如何配置SSH以安全地连接到GitHub代码仓库的详细指南,包括使用一键脚本简化配置过程、生成SSH密钥对、添加密钥到SSH代理、将公钥添加到GitHub账户以及测试SSH连接的步骤。
556 0
Github代码仓库SSH配置流程
|
监控 安全 Ubuntu
在Linux中,如何进行SSH服务配置?
在Linux中,如何进行SSH服务配置?
|
网络安全 开发工具 git
拉取 gitee 代码,配置SSH,Please make sure you have the correct access rights
拉取 gitee 代码,配置SSH,Please make sure you have the correct access rights
221 1
|
网络安全 Windows
在Windows电脑上启动并配置SSH服务
在Windows电脑上启动并配置SSH服务
3399 0
|
Ubuntu Shell 网络安全
【Ubuntu】配置SSH
【Ubuntu】配置SSH
625 0
|
安全 Linux 网络安全
在Linux中,如何配置SSH以确保远程连接的安全?
在Linux中,如何配置SSH以确保远程连接的安全?
|
安全 Linux Shell
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
如何在 Linux 服务器上配置基于 SSH 密钥的身份验证
941 0