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. 广州 office365的开发者训练营交流活动简报

    2018年10月13日,在 微软广州办公室(广州市天河区太古汇1座28层微软广州办公室) 成功举办了office365的开发者训练营,本活动在微软官网的地址: https://www.microsof ...

  2. Pytorch系列教程-使用Seq2Seq网络和注意力机制进行机器翻译

    前言 本系列教程为pytorch官网文档翻译.本文对应官网地址:https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutor ...

  3. 《前端之路》之二:数据类型转换 && 隐式转换 || 显式转换

    目录 02:数据类型转换 && 隐式转换 || 显式转换 02:数据类型转换 && 隐式转换 || 显式转换 在上一个章节中,我们介绍了 JavaScript 的基本的 ...

  4. 【Android Studio安装部署系列】九、Android Studio常用配置以及快捷键

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 整理Android Studio的常用配置和快捷键. 常用配置 显示行号 临时显示 永久显示 File——Settings——Edi ...

  5. bootsect及setup

      BIOS和bootsect CPU加电即进入16位实模式 硬件逻辑设计为加电瞬间强行设置:CS=0xF000,IP=0xFFF0,CS:IP=0xFFFF0 而BIOS程序的入口地址即0xFFFF ...

  6. Python:鲜为人知的功能特性(下)

    GitHub 上有一个名为<What the f*ck Python!>的项目,这个有趣的项目意在收集 Python 中那些难以理解和反人类直觉的例子以及鲜为人知的功能特性,并尝试讨论这些 ...

  7. Java 在PDF中添加水印——文本/图片水印

    水印是一种十分常用的防伪手段,常用于各种文档.资料等.常见的水印,包括文字类型的水印.图片或logo类型的水印.以下Java示例,将分别使用insertTextWatermark(PdfPageBas ...

  8. 根据URL获取图片

    背景:今天因为生产环境的系统界面图片无法显示被领导叼了一波,之前用Hutool工具类解析URL获取图片的,在生产环境上跑了一个多月都正常,嘣,今天突然发现周六下午后的图片统统显示异常,之后改为用jav ...

  9. Deepin MongoDB安装&使用总结

    参考:手把手教你 MongoDB 的安装与详细使用(一) deepin 安装 mongodb 数据库(全面) 1. 导入公钥 sudo apt-key adv --keyserver hkp://ke ...

  10. 学习笔记—JDBC

    JDBC的概念 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言 ...