网路安全介绍
背景:
 早起的互联网 -- 1980年代 ,我们需要共享数据,传输数据;所传输或者共享的数据均为明文;
 随着互连网发展,安全称为了国家的一种战略资源;
 我们做的,比如编程,运维 -- 手工业;
 安全属于一种科学研究 -- 安全的算法都是需要,以数学难题为基础来进行研究;
 每个国家都疯狂去研究自己的加密算法,以及去破译别人的加密算法;美国--禁止出口长于256位的加密算法;
为了保证数据安全,我们必须满足一下四点:1、数据必须被加密; 2、完整性校验(哈希、单向加密、指纹); 3、源认证; 4、证书体系(openssl就是用来实现这个PKI证书体系架构的,它包含了前三点;)
1、数据加密
 数据必须被加密
 1、对称秘钥加密
  同一个秘钥进行加密,用一个秘钥进行解密;
  优点:效率高
  缺点:秘钥维护非常困难;秘钥交换非常困难;
 2、非对称秘钥加密
  秘钥对(公钥,私钥)
  A  --  B
  A私钥    A公钥
  B可以同过使用A的公钥对数据进行加密,再传输给A;
  有点:维护秘钥方便;数据比较安全;
  缺点:效率低下(非常低下),和对称加密相比,差距为1000倍左右;
 两种加密形式
 1、流加密
  01010100100101011100100101001010
  Cisco  0101
  01010101010101010101010101010101
       异或   -------------------------------------------
  00000... (相同为0 不同为1)
  机密
  00000...
  Cisco 0101
      01010101010101010101010101010101
      异或  --------------------------------------------
  01010100100101011100100101001010
  1101 0010
  1111 1111
  ----- -----
  0010 1101
 2、块加密
  0101 0100 1001 0101 1100 1001 0100 1010
        VI值  /   |    /  |  ... ... ... ...
         0000      |  /    |
 ----------------------------------------------------------------
  0101 0001
2、完整性校验 -- 指纹
 测试数据的完整性,保证数据没有被篡改;
 原理:获取B机器对数据的hash值,A机器对获取的数据再进行一次hash;拿A自己hash的结果,与获取到的B机器的hash结果进行比较;
 如果相同,则说明数据完整;否则,数据不可信任;
 hash特点:
  1、不可逆性 -- 单向加密 
  2、雪崩效应 -- 修改一个字符,输出的结果完全不同
 MAC 信息认证代码
  随机生成密钥对 ,再将密钥对加上数据报文一起做HASH -- HMAC
  这种方式即完成了原认证同时也完成完整性校验;
3、源认证
 非对称秘钥的另外一个作用:
  数字签名 (数据加密(太慢,不使用)、秘钥交换)
  在做秘钥交换的时候,我们是用了 -- 公钥机密私钥解密
  数字签名  私钥加密 -- 公钥解密
   只有自己拥有自己的私钥,用自己的私钥对数据进行加密;
   对端,使用自己的公钥进行解密,如果能解密说明数据源是正确的;否则,不可信任; 
 
*4、证书机制 -- PKI(Openssl)*
 我们通过PKI(公共秘钥基础设施)架构,来实现上面提到的三点认证机制;
 PKI包括:
  CA -- 证书服务器 CA服务器,用来做证书签发;
  RA -- 搭建CA的机构,注册证书的机构;
  CRL  -- 整数吊销列表;
 PKI证书体系架构原理(见图)
 openssl
  openssl 管理工具
  两个加密程序调用接口--库文件
  
  了解------------------------------------------
  dh -- 非对称秘钥算法(工作:完成秘钥交换)
   A  -- B
   A -- >  x
    p^x%g = X
    p^x%g^y = p^xy%g  这个结果两个相同,就能获取一个相同的数;这个就是相同的结果
   B -->  y
    p^y%g = Y
    p^x%g^y = p^xy%g
  ---------------------------------------------
  
  常见文件:
  /etc/pki/tls
   扩展 -- 1995年 由网景公司开发 ssh 2.0
              1996年                         ssh 3.0  //普遍使用
              1999年  网景公司已经快挂了,自然没有能力去维护ssh -- > 把ssh交给了一个公有组织维护 tls 协议 1.0
              2006年  开发了 tls 1.1
              2008年  开发了tls 1.2  //是当前互联网环境下普遍使用的ssh/tls协议
              2018年  开发了tls 1.3
  /etc/pki/tls/openssl.cnf  --  默认主配置文件
  /usr/bin/openssl  -- 命令文件
  /etc/pki/CA  --  证书服务器的证书服务根目录
  /etc/pki/CA/certs  -- 证书存放目录
  /etc/pki/CA/crl --
  /etc/pki/CA/private
  
  index.txt  //证书索引信息文件
  serial  //证书序列号
  cakey.pem  //ca证书申请文件
  cacert.pem  //ca根证书文件
  ssl、tls协议的连接过程;
  以https为例 
       http -- > 80 
   客户端  --   服务器端
        tcp三次握手
   http请求 ->
           <-  http的响应
        https  --> 443
   客户端  --  服务器端
       tcp三次握手
        ssl 握手
   ssl的握手过程:
    1、建立TCP会话的过程,ssl是需要借助tcp会话的 -- 三次握手的过程
    2、ssl的握手认证
    服务器端发送证书 给客户端
    客户端验证(检查发行者的名称,找到发行者公钥,进行解密,验证发行者)
    检查网站名称,和这个证书名称的名字是否一致,如果不是,则不行;
    检查整数的信息是否完整,通过单向加密,确认证书信息是否完整;
    最后检测这个证书是否已经被吊销;是否处于证书吊销列表中;
    3、客户端生成对称秘钥,并将秘钥交换给对端
    使用对端的公钥加密对称秘钥,发送给对端
    【一般情况下,服务器端是不需要验证客户端整数的】
    4、客户端请求对端url下的资源;
    5、服务器端对客户端请求的资源进行加密
    (保持连接和短连接) 短连接每次连接都会生成新的秘钥;
  实验:如何去使用 openssl 工具搭建 https 访问站点
  
  openssl的命令使用格式:
   openssl  子命令
   openssl help
   man 子命令   //查看到子命令的帮助信息
   https://www.cnblogs.com/BurnovBlog/p/10990052.html
  openssl
   enc
   version
   rsa
   dsa
   ---
   md5 sha
   ---
   aes
   des
   des3
   rc2-cfb
   rc-cbc
   
--------------------------------------------------------
 
Telnet 【缺点:明文,不安全】
 C/S  -- S listen:23 -- tcp
 
 在网络设备上:Telnet默认开开;
  line vty 0 4
   login local
  username passwd
  ---------------------
  line vty 0 4
   logging
   password xxx
  ---------------------
  line vty 0 4
   login authencation aaa
  test aaa 。。。
  用户名密码写在 aaa
  【可以给用户授权】
 服务器设备: -- 不会去建议用Telnet登录服务器(不能用root去登录Telnet)
  Telnet-server
  xinetd
  
  https://www.cnblogs.com/BurnovBlog/p/10988627.html
----------------------------------------------------------
   
ssh
 ssh服务端的参数与优化
 C/S 和Telnet一样, -- openssl(软件程序)
  能够进行数据加密(你传输的密码是被加密的)
 
  ssh协议借助ssl/tls 协议来传输数据,加密数据;
  在传输数据之前,会见
 
 ssh的登录过程:
  1、建立ssl隧道
   传输公钥
   生成并传输随机秘钥信息
   才能建立隧道
  【之后的操作均在隧道中完成】
  2、服务器端返回 登录界面
  3、客户端输入密码 -- 这个密码才是用户密码(root)
 ssh的认证方式:
  1、passwd的密码认证方式
  2、证书认证机制 -- 免秘钥
   ssh-keygen -t rsa -P '' -f '~/.ssh/id_rsa'
   ssh-copy-id root@192.168.94.130
    自动将公钥传送到对端的 /root/.ssh 目录 authorized_keys
   到客户端登录服务器端
   ssh root@192.168.94.130 'ifconfig'
  
  scp  推、拉
  sftp
  脚本:通过expect来实现交互界面自动化执行;
   #!/usr/bin/expect
   spawn  --  开启新的expect会话   #!/bin/bash
   send  -- 行为
   expect  --  匹配字符串
   interact  --  timeout
   
   expect "*command*"  send { "yes" }
  
   expect执行多个语句判断的时候,使用 exp_continue;
   
   对 192.168.1.1 - 192.168.1.100 做无密码登录;
    #!/bin/bash   
    ssh-keygen -t rsa -P '' -f '/root/.ssh/id_rsa'  -- 做判断:[ ! -f /root/.ssh/id_rsa.pub ] && ssh-keygen -t rsa -P '' -f '/root/.ssh/id_rsa' 
    expect << EOF
     spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.94.1
     expect {
      "password" { send "123456\n" }
     }
     interact
    EOF
    
    ssh root@192.168.94.1
   ----------------------------------------------------------------------------------------------------------------
   #!/bin/bash
   #
   [ ! -f /root/.ssh/id_rsa.pub ] && ssh-keygen -t rsa -p '' &> /dev/null
   while read line;do
    ip=`echo $line | cut -d" " -f1`
            user_name=`echo $line | cut -d" " -f2`
    pass_word=`echo $line | cut -d" " -f3 `
   expect << EOF
           spawn ssh-copy-id -i /root/.ssh/idrsa.pub $user_name@$ip
           expect {
                   "yes/no" { send "yes\n";exp_continue }
                   "password" { send "$pass_word\n" }
            }
           expect eof
   EOF
   done < /root/host_ip.txt
   pscp.pssh -h /root/host_ip.txt /root/your_scripts.sh /root
   pssh -h /root/host_ip.txt -i bash /root/your_scripts.sh
 ----------------------------------------------------------
 ssh 常用参数:
  port 22022
  AddressFamily any  //ipv4或者ipv6
  Listenaddress 0.0.0.0 //所有地址,一般需要修改
    :::  //ipv6的所有地址
  Hostkey //主机密钥
  KeyRegenerationInterval  1h  //对称密钥从新生成
  SyslogFacility AUTH  //记录日志的方式
  */var/log/secure  下记录的登陆日志信息*
  LoginCraceTime 2m  //登陆的宽限时长 2风中
  PermitRootLogin yes //是否容许管理员登陆
  StrictModes yes //是否使用严格检查模式
  MaxAuthTries 6 //最大的尝试次数
  MaxSessions 10  //最大的会话数
  RSAAuthentication yes  //RSA认证
  PubkeyAuthentication yes
  PasswordAuthentication yes  //是否基于口令认证
  ChallengeResponscAuthentication yes //挑战认证方式
  #Kerberos options //守护认证,第三方统一认证架构服务
  GSSAPI options
  X11 forwarding  //开启图形的传输功能
  UseDNS no //关闭DNS的反向解析

Linux基础:Day06的更多相关文章

  1. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  2. 大数据每日干货第四天(linux基础之一目录结构与常用命令)

           为了和qq空间同步,也写的第四天,前面几天明天会发布,本来打算把每天学的东西记录下来,通过朋友给的建议要发的话稍微系统化下,从大数据需要的linux基础,到离线数据分析包括hadoop. ...

  3. Linux课程实践一:Linux基础实践(SSH)

    一.SSH服务 1. 安装SSH (1)查看是否已经安装过ssh服务 rpm -qa |grep ssh (2)进行安装 sudo apt-get install openssh-server Ubu ...

  4. 还是不想改报告,伊阿忆啊哟-Linux基础继续

    hi 虽然今天是最最美好的周六(前不着工作日后不着工作日),但老子还要来改报告,但额就是不想改,你拿我有啥办法啊... 争取完结Linux基础 一.Linux常用命令(三) 4.帮助命令 4.1 帮助 ...

  5. 原来今天是感恩节-Linux基础继续&MySQL和PHP

    hi 原来今天是感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了. 一.Linux基础(二) ...

  6. 买错的电影票,含着泪也得看-LAMP搭建&Linux基础

    hi 没说过,上周五室友过生请客,在龙湖里吃嗨了喝爽了,回去的路上侃侃而谈.说好的这周一起去看年内最后的大片,火星救援的,谁知道老子眼神不好,买错了电影的时间...把周六的约定提前到了今儿个下午,ma ...

  7. Linux基础3(文件权限)

    文件权限 1.普通权限 (登陆用户对文件或目录的读写执行的权限) 普通权限对管理员用户无效 文件和目录 都有4中类型的用户u 所有者 : 文件.目录的创建者g 所属组 : 文件.目录属于的用户组o 其 ...

  8. Linux课程实践一:Linux基础实践(基础操作)

    一.软件源维护 1. 基本操作 (1)查看源列表 sudo vim /etc/apt/sources.list deb:二进制软件安装包 deb-src:源码包 (2)备份软件源列表 sudo cp ...

  9. 实践一:Linux基础实践

    一.Linux基础实践 1.1 1. 掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 这部分内容在许多学长学姐的报告里都有很详细的讲解,我在此就不赘述 ...

  10. Linux基础精华

    Linux基础精华 (继续跟新中...) 常用命令: Linux shell 环境 让你提升命令行效 率的 Bash 快捷键 [完整版] 设置你自己的liux alias Linux的Find使用 L ...

随机推荐

  1. Go语言转义字符

    \a 匹配响铃符 (相当于 \x07) 注意:正则表达式中不能使用 \b 匹配退格符,因为 \b 被用来匹配单词边界, 可以使用 \x08 表示退格符. \f 匹配换页符 (相当于 \x0C) \t ...

  2. 网络工程师和Linux运维工程师有什么区别?学哪个比较好?

    网络工程师和Linux运维工程师有什么区别?学哪个比较好? 机缘巧合下,我进入了一家从事vpn与系统集成的公司,很感谢公司能留下我这个非网络工程专业的毕业生,从对网络一窍不通,慢慢可以自己独立完成工作 ...

  3. 菜鸟对java和Go的理解

    1.go对比java go通过结构体嵌套+接口实现类似面向对象中的继承和多态.个人认为尤其是go的接口抓住了多态的本质.而Go提倡的面向接口的思想也可能使得架构上更加解耦. 2.关于Go不要通过共享内 ...

  4. Docker基本概念及架构

    一.Docker基本概念 Docker是一个开源的容器引擎,基于Go 语言并遵从 Apache2.0 协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...

  5. 【Weiss】【第03章】链表例程

    这种基础例程,如之前所提,会有一个实现和一个简单的测试代码. 链表其实没什么可说的,其实包括后面的栈和队列也没什么可说的,直接放代码吧. 下面这个是测试代码 #include <iostream ...

  6. 最详细的 Spring Boot 多模块开发与排坑指南

    创建项目 创建一个 SpringBoot 项目非常的简单,简单到这里根本不用再提.你可以在使用 IDEA 新建项目时直接选择 Spring Initlalize 创建一个 Spring Boot 项目 ...

  7. 9. selenium+request方式的cookie绕过

    1. 首先确认POST请求的content-type类型 2. 查看cookies数据 3. 找到对应的headers数据 4. 如果是application/json,传入的json数据需要时jso ...

  8. x86汇编指令集大全(带注释)

    X86和X87汇编指令大全(有注释) PUSH 压栈.POP 来说是出栈.入栈(push):---------- 一.数据传输指令 ---------------------------------- ...

  9. 第十周Java实验作业

    实验十  泛型程序设计技术 实验时间 2018-11-1 1.实验目的与要求 (1) 理解泛型概念: 泛型:也称参数化类型,就是在定义类,接口和方法时,通过类型参数只是将要处理的类型对象.(如Arra ...

  10. 基于Modbus三种CRC16校验方法的性能对比

    目录 1.背景介绍 2. CRC校验的三种方法 2.1. 直接计算CRC校验 2.2. 查短表法计算CRC16校验 2.3.查大表法计算CRC16校验 3.三种校验方式的测试方法 3.1.直接计算CR ...