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. Linux 桌面玩家指南:12. 优秀的文本化编辑思想大碰撞(Markdown、LaTeX、MathJax)

    特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...

  2. 搭建属于自己的GIT服务器——pingg

    1.下载并安装jdk. 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...

  3. 栈到CLR

    提起栈想必会听到这样几个关键词:后进先出,先进后出,入栈,出栈. 栈这种数据结构,数组完全可以代替其功能. 但是存在即是真理,其目的就是避免暴漏不必要的操作. 如角色一样,不同的情景或者角色拥有不同的 ...

  4. SpringBoot之GZip压缩,HTTP/2,文件上传,缓存配置

    1 设置应用端口以及context # HTTP Server port server.port=8080 # Make the application accessible on the given ...

  5. 学习Identity Server 4的预备知识 (误删, 重补)

    我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知 ...

  6. springboot~mongo内嵌集合的操作

    对于mongodb的内嵌对象的各种操作大叔在.net平台时已经说过,同时大叔也自己封装过mongo的仓储,使用也都很方便,而在java springboot框架里当然也有对应的方法,下面主要说一下,希 ...

  7. ReentrantLock是如何基于AQS实现的

    ReentrantLock是一个可重入的互斥锁,基于AQS实现,它具有与使用 synchronized 方法和语句相同的一些基本行为和语义,但功能更强大. lock和unlock ReentrantL ...

  8. Pi Hybrids问题

    Pi Hybrids问题 清华大学肖秀波梁湧老师翻译的Rardin教授的<运筹学>[1]已于今年年中出版,感谢机械工业出版社张有利老师的推荐和赠书,让我能看到如此完美的千页级宏篇译著.该书 ...

  9. 浅析HttpSession

    苏格拉底曰:我唯一知道的,就是自己一无所知 源头 最近在翻阅Springboot Security板块中的会话管理器过滤器SessionManagementFilter源码的时候,发现其会对单用户的多 ...

  10. Springboot 系列(十一)使用 Mybatis(自动生成插件) 访问数据库

    1. Springboot mybatis 介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数获取 ...