ssh:secure shell protocol,22/tcp,安全的远程登陆

OpenSSH:ssh协议的开源实现;

  dripbear:另一个开源实现;

SSH协议版本

  v1:基于CRC-32做MAC,不安全;man-in-mddle

  v2:双方主机协议选择安全的MAC方式

    基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证;

  两种方式的用户登录认证:

    基于password

    基于key

OpenSSH:

  C/S  

    C:ssh,scp,sftp

      windows客户端:

        xshell,putty,securecrt,sshsecureshellclient

    S:sshd

  客户端组件:

    ssh,配置文件:/etc/ssh/ssh_config

    格式:ssh [user@] host [COMMAND]

       ssh [-l user] host [COMMAND]

        -p port:远程服务器监听的端口;

        -X:支持x11转发;

        -Y:支持信任的x11转发;

       Host PATTERN

        PARAMETER VLAUE

       基于密钥的认证:

        (1) 在客户端生成密钥对儿

          ssh -t rsa [-p ' '] [-f "~/.ssh/id_rsa"]

        (2) 把公钥传输至过程服务器对应用户的家目录

          ssh-copy-id [-i [identity_file]] [user@]machine

        (3) 测试

    scp命令:

      scp [options] SRC... DEST/

      存在两种情形:

        PULL:scp [options] [user@host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE

        PUSH:scp [options] /PATH/FROM/SOMEFILE [user@host:/PATH/TO/SOMEWHERE

          常用选项:

            -r:递归复制

            -p:保持原文件的属性信息;

            -q:静默模式

            -P PORT:指明remote host的监听的端口;

    sftp命令:

      stfp [user@] host

      stfp > help

  服务器端:

    sshd,配置文件:/etc/ssh/sshd_config

    常用参数:

      Port:22022

      ListenAddress ip

      PermitRootLogin yes

      限制可登陆用户的办法:

        AllowUsers user1 user2 user3

        AllowGroups

ssh服务的最佳实践:

  1、不要使用默认端口;

  2、禁止使用protocol verdion 1;

  3、限制可登录用户;

  4、设定空闲会话超时时长;

  5、利用防火墙设置ssh访问策略;

  6、仅监听特定的IP地址;

  7、基于口令认证时,使用强密码策略;

     ~]# tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs

  8、使用基于密钥的认证;

  9、禁止使用空密码;

  10、禁止root用户直接登录;

  11、限制ssh的访问频度和并发在线数;

  12、做好日志,经常分析;

 

ssh协议的另一种实现:dropbear

  (1)dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048

   dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_kdy

   dropbear -p [ip:]port -F -E

OpenSSL:

  三个组件:

    openssl:多用途的命令行工具;

    libcrypto:加密解密库;

    libssl:ssl协议的实现

  PKI:Public Key Infrastructure

    CA

    RA

    CRL

    证书存取库

  建立私有CA工具:

    OpenCA

    openssl

  证书申请及签署步骤:

    1、生成申请请求;

    2、RA核验;

    3、CA签署;

    4、获取证书;

  创建私有CA:

    openssl的配置文件:/etc/pki/tls/openssl.cnf

    (1) 创建所需要的文件

      # touch index.txt

      # echo 01 > serial

    (2) CA自签证书

      #  (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)  生成私钥

        # openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem  生成证书签署请求并自签

        -new:生成新证书签署请求;

        -x509:生成自签证书;

        -key:生成请求时用到的私钥文件;

        -days n:证书的有效期限;

        -out /PATH/TO/SOMECERTFILE:证书的保存路径;

    (3) 发证

      (a) 用到证书的主机生成证书请求;

        # (umak 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)  在用到证书的主机上生成私钥

        # openssl req -new -key /etc/httpd/ssl/htppd.key -days 365 -out /etc/httpd/ssl/httpd.csr  生成证书申请请求

      (b) 把请求文件传输给CA;  把上面生成的csr文件传给CA,可以用scp,也可以是ftp等

      (c) CA签署证书,并将证书发还给请求者;

        # openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

        查看证书中的信息:

          openssl x509 -in /PATH/FROM/CERT_FILE -noout -text| -subject| -serial

    (4) 吊销证书

      (a) 客户端获取要吊销的证书的serial

        # openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

      (b) CA

        先根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致;

        吊销证书:

          # openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

      (c) 生成吊销证书的编号(第一次吊销一个证书,如果已生成这个文件就不再需要了)

        # echo 01 > /etc/pki/CA/crlnumber

      (d) 更新证书吊销列表

        # openssl ca -gencrl -out thisca.crl

         查看crl文件:

          #openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text

博客作业:加密解密基础、PKI及SSL、创建私有CA;

Linux:Day20(上) openssh和CA的更多相关文章

  1. 05、Win7上openSSH的安装与配置

    05.Win7上openSSH的安装与配置 1.概述 linux上的ssh命令在网络通信场景下非常方便.现在windows也支持ssh方式和远程主机进行访问.如果只是使用ssh简单的访问功能,就需要很 ...

  2. Linux操作系统安全-局域网私有CA(Certificate Authority)证书服务器实战篇

    Linux操作系统安全-局域网私有CA(Certificate Authority)证书服务器实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.试验架构说明 node101 ...

  3. windows 上 OpenSSH 服务 启用秘钥登录(微软真心逆天)

    windows 上 OpenSSH 服务 启用秘钥登录(微软真心逆天) windows 安装 OpenSSH 服务 最近需要在windows 服务器上部署自动发布程序,那么就需要用到 scp 和 ss ...

  4. Linux主机上使用交叉编译移植u-boot到树莓派

    0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

  5. NoSql1 在Linux(CentOS)上安装memcached及使用

    前言:       今天是初五,生活基本要从过年的节奏中回归到正常的生活了,所以想想也该想想与工作有关的事情了.我之前在工作中会经常使用memcached和redis,但是自己一直没有时间系统的好好看 ...

  6. .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上

    今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...

  7. 在Ubuntu和Linux Mint上安装Oracle JDK

    在Ubuntu和Linux Mint上安装Oracle JDK 使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好: sudo add-apt-repository ...

  8. Linux服务器上监控网络带宽的18个常用命令

    [51CTO精选译文]本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以 ...

  9. Linux~centos上安装.netcore,HelloWorld归来!

    对于跨平台的.netCore来说,让它的程序运行在Linux系统上已经成为必然,也是一种趋势,毕竟我们的很多服务都放在linux服务器上(redis,mongodb,myql,fastDFS,luce ...

随机推荐

  1. sql xml中 in 的用法

    在xml中,动态传参去数据库查询,下面是in的示例. 比如有条sql SELECT * FROM corp_tax c WHERE c.id in (387419,387423) AND c.corp ...

  2. AI应用开发实战 - 手写算式计算器

    扩展手写数字识别应用 识别并计算简单手写数学表达式 主要知识点 了解MNIST数据集 了解如何扩展数据集 实现手写算式计算器 简介 本文将介绍一例支持识别手写数学表达式并对其进行计算的人工智能应用的开 ...

  3. CYQ.Data 对于分布式缓存Redis、MemCache高可用的改进及性能测试

    背景: 随着.NET Core 在 Linux 下的热动,相信动不动就要分布式或集群的应用的需求,会慢慢火起来. 所以这段时间一直在研究和思考分布式集群的问题,同时也在思考把几个框架的思维相对提升到这 ...

  4. java中并发下的集合类

    java中常见的集合类大部分是非线程安全的,在多线程情况下会报并发修改异常(ConcurrentModificationException) 并发下的ArrayList类: //集合类不安全的例子 p ...

  5. VS2017 无法连接到Web服务器“IIS Express”终极解决方案

    今天日了gou了,一大早打开VS2017的时候出现无法连接到Web服务器"IIS Express"的错误,然后必应了一下,再谷歌了一下找到的解决方法也都千篇一律,奈何都没能解决,最 ...

  6. 【一套代码小程序&Native&Web阶段总结篇】可以这样阅读Vue源码

    前言 前面我们对微信小程序进行了研究:[微信小程序项目实践总结]30分钟从陌生到熟悉 在实际代码过程中我们发现,我们可能又要做H5站又要做小程序同时还要做个APP,这里会造成很大的资源浪费,如果设定一 ...

  7. SQL优化 MySQL版 - 索引分类、创建方式、删除索引、查看索引、SQL性能问题

    SQL优化 MySQL版  - 索引分类.创建方式.删除索引.查看索引.SQL性能问题 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 索引分类 单值索引 单的意思就是单列的值,比如说有 ...

  8. GraphQL学习过程应该是这样的

    记录一个从枯燥学习 GraphQL 的过程,到发现项目 Gitter,模仿项目 Github-Trending-API,最后做一个自己的学习项目 Github-Trending-GraphQL. 一开 ...

  9. Linux journalctl命令

    在Systemd出现之前,Linux系统及各应用的日志都是分别管理的,Systemd开始统一管理了所有Unit的启动日志,这样带来的好处就是可以只用一个 journalctl命令,查看所有内核和应用的 ...

  10. nginx 启动错误

    场景 在Windows下 启动nginx报错: nginx: [error] ReadFile() : Incorrect function) 解决 因为 nginx.conf 中存在 /* 被认为是 ...