第1章 SSH服务

1.1 SSH服务协议说明

1.1.1 ssh远程连接排错过程

1.2 SSH加密技术说明

1.2.2 ssh实现安全链接建立,利用要是和锁头

1.2.3 ssh加密算法

v1漏洞: 密钥不更换

v2 定期更换密钥

利用Diffie-Hellman机制定期更新密钥

1.3 ssh知识要点

ssh是安全的加密协议,用于远程链接linux服务器

ssh 默认端口是****22,安全协议版本sshv2,出来2之外还有1(有漏洞)

ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务

linux ssh 客户端包括ssh 远程链接命令,以及远程拷贝scp命令

1.4 SSH服务软件详细说明

1.4.1 什么是ssh服务

1.4.2 ssh软件安装

客户端

服务端软件

1.4.3 openssh-clinets 软件的主要内容:

1.4.4 openssh-server 软件的主要内容

注意:使用sshd采用绝对路径进行启动

1.5 ssh服务配置文件说明:

  1. 配置文件中所有注释信息,表示默认参数配置

  2. 配置文件中#空格 后面内容表示说明信息

              #参数 表示配置参数信息

  1. 配置文件参数信息修改后,一旦变为注释,即还原为默认配置

1.5.1 ssh服务的配置文件路径

1.5.2 配置文件中常用配置说明

# This is the sshd server system-wide configuration file. See # sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options change a # default value.

# OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options change a # default value. Port 25113 #端口 ListenAddress 10.0.0.41 #监听地址(本地网卡地址),指定本地网卡那个网卡提供服务 PermitRootLogin no #是否允许root用户登陆 #PermitEmptyPasswords no #禁止空密码登陆 #UseDNS no #不使用DNS GSSAPIAuthentication no #API认证 # 连接慢的解决 #AddressFamily any #指定监听ipv4地址,或是ipv6地址,或者所有都监听

配置文件内容说明:

1.5.3 配置文件语法检查方法

1.5.4 ListenAddress 监听地址的说明

1.5.5 SSH配置文件相关参数详细说明

<td style="width: 352.95pt; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: none; background: #a6a6a6; padding: 0cm 5.4pt;" width="471">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <strong><span style="font-family: '微软雅黑',sans-serif;">参数说明</span></strong>
  </p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="471">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">指定</span>sshd<span style="font-family: '微软雅黑',sans-serif;">进程监听的端口号,默认为</span>22.<span style="font-family: '微软雅黑',sans-serif;">可以使用多条指令监听多个端口</span>.
  </p>
  
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">默认将在本机的所有网络接□上监听,但是可以通过</span>ListenAddress<span style="font-family: '微软雅黑',sans-serif;">指走只在某个特定的接口上监听</span>.
  </p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="471">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">是否允许密码为空的用户远程登录</span>.<span style="font-family: '微软雅黑',sans-serif;">默认为</span>"no"
  </p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="471">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">是否允许</span>root<span style="font-family: '微软雅黑',sans-serif;">登录</span>.<span style="font-family: '微软雅黑',sans-serif;">可用值如下:</span>"yes"(<span style="font-family: '微软雅黑',sans-serif;">默认)表示允许</span>."no"<span style="font-family: '微软雅黑',sans-serif;">表示禁止</span>.
  </p>
  
  <p style="text-align: justify; text-justify: inter-ideograph;">
    "without-password"<span style="font-family: '微软雅黑',sans-serif;">表示禁止使用密码认证登录</span>."forced-commands-only"<span style="font-family: '微软雅黑',sans-serif;">表示只有在指走了</span>command<span style="font-family: '微软雅黑',sans-serif;">选项的情况下才允许使用公钥认证登录</span>.<span style="font-family: '微软雅黑',sans-serif;">同时其它认证方法全部被禁止</span>.<span style="font-family: '微软雅黑',sans-serif;">这个值常用于做远程备份之类的事情</span>.
  </p>
  
  <blockquote>
    <p>
      1.多开一个窗口
    </p>
    
    <p>
      2.临时多部署一条连接方式
    </p>
    
    <p>
      3.给普通用户sudo权限
    </p>
  </blockquote>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="471">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">指定定</span>sshd<span style="font-family: '微软雅黑',sans-serif;">是否应该对远程主机名进行反向解折,以检查此主机名是否与其</span>IP<span style="font-family: '微软雅黑',sans-serif;">地址真实对应</span>.<span style="font-family: '微软雅黑',sans-serif;">默认值为</span>"yes&rdquo;.
  </p>
</td>
<td style="width: 352.95pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="471">
  <p style="text-align: justify; text-justify: inter-ideograph;">
    <span style="font-family: '微软雅黑',sans-serif;">指定监听并提供服务相应的网卡地址信息</span>
  </p>
</td>

1.5.6 快速修改配置参数

1.6 ssh服务认证类型

1.6.1 基于密码的认证类型

演示了 SecureCRssh客户端连接,口令验证的测试。

1.6.2 基于密钥的安全认证方法

1.7 基于秘钥登录配置

1.7.1 环境准备

  <td style="width: 78pt; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: none; background: #bfbfbf; padding: 0cm 5.4pt;" width="104">
    <p style="text-align: center;" align="center">
      <strong><span style="font-family: '微软雅黑',sans-serif;">主机名</span></strong>
    </p>
  </td>
  
  <td style="width: 106.3pt; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: none; background: #bfbfbf; padding: 0cm 5.4pt;" width="142">
    <p style="text-align: center;" align="center">
      <strong>ip</strong>
    </p>
  </td>
</tr>

<tr>
  <td style="width: 84.8pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top: none; padding: 0cm 5.4pt;" width="113">
    <p style="text-align: center;" align="center">
      <span style="font-family: '微软雅黑',sans-serif;">管理服务器</span>
    </p>
  </td>
  
  <td style="width: 78.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="104">
    <p style="text-align: center;" align="center">
      m01
    </p>
  </td>
  
  <td style="width: 106.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="142">
    <p style="text-align: center;" align="center">
      10.0.0.61
    </p>
  </td>
</tr>

<tr>
  <td style="width: 84.8pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top: none; padding: 0cm 5.4pt;" width="113">
    <p style="text-align: center;" align="center">
      <span style="font-family: '微软雅黑',sans-serif;">备份服务器</span>
    </p>
  </td>
  
  <td style="width: 78.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="104">
    <p style="text-align: center;" align="center">
      backup
    </p>
  </td>
  
  <td style="width: 106.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="142">
    <p style="text-align: center;" align="center">
      10.0.0.41
    </p>
  </td>
</tr>

<tr>
  <td style="width: 84.8pt; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-top: none; padding: 0cm 5.4pt;" width="113">
    <p style="text-align: center;" align="center">
      <span style="font-family: '微软雅黑',sans-serif;">存储服务器</span>
    </p>
  </td>
  
  <td style="width: 78.0pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="104">
    <p style="text-align: center;" align="center">
      nfs01
    </p>
  </td>
  
  <td style="width: 106.3pt; border-top: none; border-left: none; border-bottom: solid windowtext 1.0pt; border-right: solid windowtext 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" width="142">
    <p style="text-align: center;" align="center">
      10.0.0.31
    </p>
  </td>
</tr>

1.7.2 第一个里程碑: 在备份服务器上创建密钥对

参数说明:

      -t 指定创建密钥对的类型,可以创建的类型如下↓

查看创建出来的密钥对:

1.7.3 第二个里程:将公钥分发给存储服务器

1.7.4 第三个里程碑:进行登录测试

1.8 telnet服务简介

1.8.1 部署telnet服务

第一个里程碑:安装telnet服务软件

第二个里程碑:设置开机自启动

修改xinetd下的配置文件,从而管理telnet服务

第三个里程碑: 启动xinetd 服务,让telnet能够开机自启动

1.8.2 客户端测试

1.8.3 sshtelnet区别(对比示意图)

01ssh是加密的服务协议,telnet服务是非加密的

02.ssh服务默认支持root用户登陆,telnet用户默认不支持root用户登陆

1.9 进行免密码scp传输测试

1.9.1 scp的基本语法使用:

推:PUSH

参数说明:

说明:

拉:PULL

说明:

结论:

1.10 使用sftp进行基于密钥的文件传输

1.10.1 sftp简介

1.10.2 sftp命令说明

说明:

   -o        连接的时候指定选项

1.10.3 sftp使用参数说明

操作远程服务器

操作本地服务器

上传下载文件参数

查看帮助的方式:

1.11 ssh相关重点知识总结

  • ssh协议:sshd-–远程连接(sshd),sftp
  • 为加密的远程连接协议,相关软件有openssh.openssh-–https。
  • 默认端口22
  • 协议版本1X和2.x,2.x更安全。了解SSH协议原理(ssh连接过程X
  • 服务端ssh远程连接服务,sftp服务。sshd守护进程,开机要自启动。
  • ssh客户端包含ssh,scp,sftp命令。
  • ssh安全验证方式:口令和密钥,这两种都是基于口令的,SSH密钥登录的原理。
  • ssh服务安全优化,修改默认端口22,禁止root远程连接,禁止dns,SSH只监听内网IP
  • ssh密钥对,公钥(publickey)在服务器端,比喻就是锁头,私钥(privatekey)在客户端,比喻就是钥匙。

第2章 重点知识补充

2.1 一个服务始终无法启动

  01.服务的查日志/系统日志

  02.检查服务端口有没有冲突

2.2 给你一个端口如何命令行查出对应的服务是什么?

测试服务端口有没有开启

2.2.1 根据进程名查看对应的端口是什么?

2.3 ssh入侵案例说明

被入侵实例http://phenixikki.blog.51cto.com/7572938/1546669

IP何防止SSH登录入侵小结:

1、用密钥登录,不用密码登陆

2、牤牛阵法:解决SSH安全问题

  a.防火墙封闭SSH,指定源IP限制(局域网、信任公网)

  b.开启 SSH 只监听本地内网 IP ( ListenAddress 172.16.1.61 )

3、尽量不给服务器外网ip

4、最小化(软件安装-授权)

5、给系统的重要文件或命令做一个指纹

6、给他锁上 chattr +i +a

第3章 扩展问题

3.1 服务端端口号变化了,如何基于秘钥连接

3.1.1 环境准备

实验环境:

3.1.2 通过另外一台服务器创建并分发密钥

第一个里程碑: 现创建密钥使用 ssh-keygen

第二个里程碑:分发密钥,注意ssh的端口

说明:

   通过 man 手册找到密钥分发的命令格式。

   -i 参数指定 公钥文件的存放位置

第三个里程碑: 测试密钥登陆

3.2 如何实现自动创建秘钥对,同时分发公钥(编写脚本实现)

脚本内容:

脚本说明:

   创建密钥,-f指定存放位置,-P 密钥加密的密码  -q 减少信息输出

   这里需要安装一个软件 yum install sshpass -y 用来提供中户密码

   这里使用for循环来对ip地址进行变化。

系统负载过高,无法连接ssh怎么办?

   可以通过修改 进程优先级的方法来是sshd服务能够更多的使用资源,保证sshd的连接

修改进程优先级的方法:

  优先系数由系统内核决定,不可更改
  nice值可以手动更改,范围是 -20~19
  优先级的值越低,优先级越高;优先级的值越高,优先级越低。
  所以想调整成最高优先级的话,就将nice值设为-20;想调整成最低优先级的话,将nice值设为19。

1、任务未运行前进行调整

2、任务已经开始运行的情况下调整
①方法一

② 方法二

 查看进程优先级

 

    <li>
      <a href="#12_SSH">1.2 SSH加密技术说明</a><ul>
        <li>
          <a href="#122_ssh">1.2.2 ssh实现安全链接建立,利用要是和锁头</a>
        </li>
        <li>
          <a href="#123_ssh">1.2.3 ssh加密算法</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#13_ssh">1.3 ssh知识要点:</a>
    </li>
    <li>
      <a href="#14_SSH">1.4 SSH服务软件详细说明</a><ul>
        <li>
          <a href="#141_ssh">1.4.1 什么是ssh服务</a>
        </li>
        <li>
          <a href="#142_ssh">1.4.2 ssh软件安装</a>
        </li>
        <li>
          <a href="#143_openssh-clinets">1.4.3 openssh-clinets 软件的主要内容:</a>
        </li>
        <li>
          <a href="#144_openssh-server">1.4.4 openssh-server 软件的主要内容</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#15_ssh">1.5 ssh服务配置文件说明:</a><ul>
        <li>
          <a href="#151_ssh">1.5.1 ssh服务的配置文件路径</a>
        </li>
        <li>
          <a href="#152">1.5.2 配置文件中常用配置说明</a>
        </li>
        <li>
          <a href="#153">1.5.3 配置文件语法检查方法</a>
        </li>
        <li>
          <a href="#154_ListenAddress">1.5.4 ListenAddress 监听地址的说明</a>
        </li>
        <li>
          <a href="#155_SSH">1.5.5 SSH配置文件相关参数详细说明</a>
        </li>
        <li>
          <a href="#156">1.5.6 快速修改配置参数</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#16_ssh">1.6 ssh服务认证类型</a><ul>
        <li>
          <a href="#161">1.6.1 基于密码的认证类型</a>
        </li>
        <li>
          <a href="#162">1.6.2 基于密钥的安全认证方法</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#17">1.7 基于秘钥登录配置</a><ul>
        <li>
          <a href="#171">1.7.1 环境准备</a>
        </li>
        <li>
          <a href="#172">1.7.2 第一个里程碑: 在备份服务器上创建密钥对</a>
        </li>
        <li>
          <a href="#173">1.7.3 第二个里程:将公钥分发给存储服务器</a>
        </li>
        <li>
          <a href="#174">1.7.4 第三个里程碑:进行登录测试</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#18_telnet">1.8 telnet服务简介</a><ul>
        <li>
          <a href="#181_telnet">1.8.1 部署telnet服务</a>
        </li>
        <li>
          <a href="#182">1.8.2 客户端测试</a>
        </li>
        <li>
          <a href="#183_sshtelnet">1.8.3 ssh与telnet区别(对比示意图)</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#19_scp">1.9 进行免密码scp传输测试</a><ul>
        <li>
          <a href="#191_scp">1.9.1 scp的基本语法使用:</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#110_sftp">1.10 使用sftp进行基于密钥的文件传输</a><ul>
        <li>
          <a href="#1101_sftp">1.10.1 sftp简介</a>
        </li>
        <li>
          <a href="#1102_sftp">1.10.2 sftp命令说明</a>
        </li>
        <li>
          <a href="#1103_sftp">1.10.3 sftp使用参数说明</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#111_ssh-2">1.11 ssh相关重点知识总结</a>
    </li>
  </ul>
</li>

<li>
  <a href="#2">第2章 重点知识补充</a><ul>
    <li>
      <a href="#21">2.1 一个服务始终无法启动</a>
    </li>
    <li>
      <a href="#22">2.2 给你一个端口如何命令行查出对应的服务是什么?</a><ul>
        <li>
          <a href="#221">2.2.1 根据进程名查看对应的端口是什么?</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#23_ssh">2.3 ssh入侵案例说明</a>
    </li>
  </ul>
</li>

<li>
  <a href="#3">第3章 扩展问题</a><ul>
    <li>
      <a href="#31">3.1 服务端端口号变化了,如何基于秘钥连接</a><ul>
        <li>
          <a href="#311">3.1.1 环境准备</a>
        </li>
        <li>
          <a href="#312">3.1.2 通过另外一台服务器创建并分发密钥</a>
        </li>
      </ul>
    </li>
    
    <li>
      <a href="#32">3.2 如何实现自动创建秘钥对,同时分发公钥(编写脚本实现)</a>
    </li>
    <li>
      <a href="#ssh">系统负载过高,无法连接ssh怎么办?</a><ul>
        <li>
          <a href="#i">修改进程优先级的方法:</a>
        </li>
      </ul>
    </li>
  </ul>
</li>