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. GBDT和XGBOOST算法原理

    GBDT 以多分类问题为例介绍GBDT的算法,针对多分类问题,每次迭代都需要生成K个树(K为分类的个数),记为\(F_{mk}(x)\),其中m为迭代次数,k为分类. 针对每个训练样本,使用的损失函数 ...

  2. docker 搭建私有仓库 harbor

    前提 已安装好 docker 和  docker-compose 环境:CentOS Linux release 7.5 docker 版本:18.09.05 1.安装harbor wget -P / ...

  3. C++STL之Vector向量详解,用法和例子 一起学习 一起加油

                                                                                    C++ STL之vector用法总结 1 ...

  4. 行为驱动:Cucumber + Selenium + Java(五) - 使用maven来实现cucumber测试和报告

    在上一篇中,我们介绍了Selenium + Cucumber + Java框架下的测试用例参数化/数据驱动,这一篇我们来使用maven去搭建cucumber框架以及实现测试报告. 5.1 为什么要用m ...

  5. Pi Hybrids问题

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

  6. Powershell:关于PSCustomObject你想知道的一切(译)

    PSCustomObject是Powershell里非常重要的一个工具,我们先从基础开始然后再循序渐进讲到一些更高级的话题.PSCustomObject旨在于用简单的方法来创建结构化数据.下面的第一个 ...

  7. 【转载】 Sqlserver限制最大占用内存

    在Sqlserver数据库管理软件中,Sqlserver对系统内存的管理原则是:按需分配,并且分配完成后为了查询有更好的性能,并不会立即自动释放内存,数据取出后,还会一直占用着内存,所以在Sqlser ...

  8. HTML学习总结&基础篇

    何为坚持?一个“勤”,一个“忍”. 年前给自己定的目标,今年一定要坚持多逛园子,多看一些大佬的帖子,然后自己也尽量能够分享自己学习的收获,让自己进步快些,但是多逛园子是做到了,写博客这个东西,今年好像 ...

  9. java爬虫系列第五讲-如何使用代理防止爬虫被屏蔽?

    本文内容 1.分析一下爬虫存在的问题及解决方案 2.webmagic中代理的使用 3.目前市面上一些比较好用的代理服务器 存在的问题 我们在使用爬虫过程中,大多都会遇到这样的问题:突然某一天爬虫爬不到 ...

  10. 利用Redis keyspace notification(键空间通知)实现过期提醒

    一.序言: 本文所说的定时任务或者说计划任务并不是很多人想象中的那样,比如说每天凌晨三点自动运行起来跑一个脚本.这种都已经烂大街了,随便一个 Crontab 就能搞定了. 这里所说的定时任务可以说是计 ...