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. 手机web——自适应网页设计(html/css控制)【转】

    一. 允许网页宽度自动调整: "自适应网页设计"到底是怎么做到的?其实并不难. 首先,在网页代码的头部,加入一行viewport元标签. <meta name="v ...

  2. gulp+ThinkPHP配置

    gulp+ThinkPHP配置 gulp+ThinkPHP配置 目录结构: html |-src 开发目录 |-Home 静态页面 |-Public 静态资源目录 |-dist 生产目录 |-Home ...

  3. Velocity 模板引擎的应用

    springboot三层机构,还有数据映射待实体.肯定需要一套模板引擎呀.那不然还手写不成. 根据我们的实际业务需求,我添加了一套数据库反向生成实体类的模板,用的是Velocity 的引擎. 不多说直 ...

  4. Elasticsearch之索引模板index template与索引别名index alias

    为什么需要索引模板? 在实际工作中针对一批大量数据存储的时候需要使用多个索引库,如果手工指定每个索引库的配置信息(settings和mappings)的话就很麻烦了. 所以,这个时候,就存在创建索引模 ...

  5. 【Python3爬虫】使用异步协程编写爬虫

    一.基本概念 进程:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动.进程是操作系统动态执行的基本单元. 线程:一个进程中包含若干线程,当然至少有一个线程,线程可以利用进程所拥有的资源.线程 ...

  6. ubuntu16.04无法获取ip地址的解决方案

    当我们无法获取ip地址时可以使用dhcp来动态获取ip地址,安装dhcpcd5和dhcpcd-gtk sudo apt-get install dhcpcd5 sudo apt-get install ...

  7. Centos7配置MongoDB以及端口修改

    一.安装之前可以参考官网安装教程: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 二.登录服务器,配置yum ...

  8. c#编写一个简单的http服务器

    先来张我的帅照哈哈哈 好了不臭美了   上代码 世间万物 只有想不到 没有做不到  哈哈哈  仔细阅读代码     我要凑够 150个字  哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 ...

  9. C# 连接/查询Jira

    查询jira数据,如果是前端,可以按照如下格式直接访问,获取数据 http://jira.company.com/rest/api/2/search?jql=project = REM AND res ...

  10. html&css学习一

    HTML标签 HTML骨架 <HTML> <head> <title></title> </head> <body> </ ...