一、Linux Service and Security

  1、OpenSSL(ssl/tls)协议

  2、OpenSSH(ssh)协议

  3、bind(dns)

  4、web(http):httpd(apache),php,mariadb(mysql),LAMP,nginx(tengine,openresty),lnmp

  5、file server:nfs,samba,ftp

  6、dhcp,pxe

  7、iptables

  8、sudo,pam,nsswitch

二、OpenSSL

  1、我们网络通信的两套协议家族(OSI和TCP/IP)

  2、我们的通信协议大概可以分为两层,位于用户空间的叫做资源子网,位于内核空间的叫做通信子网,任何一个进程通信的数据报文都要通过网络发送给主机才能完成通信的目的。因此TCP/IP协议栈中应用层(资源子网)以下的几层主要考虑的是报文如何安全无误的送达到通信对端的。而资源子网中主要是考虑我们的数据是如何组织和交换的。我们的数据该如何表示,如何组织以及如何完成双方在应用层的交换。因此应用层主要是在用户空间实现,那么用户空间谁来负责实现它呢?其实在用户空间中每安装一款软件他就能作为我们用户空间的协议的客户端或服务端在进行工作,比如我们安装了httpd那么他就能作为我们http协议的服务端在工作。我们的浏览器就相当于作为http协议的客户端在工作。

  3、同一主机上的进程间通信:IPC,message queue(消息队列),shm(共享内存),semerphor

  4、不同主机上的进程间通信:socket

    a、IP:port

      port:进程地址,其是由内核中传输层协议提供,进程向内核注册使用某端口(独占)。

    b、传输层协议:TCP,UDP,SCTP(流控协议)

    c、cip:port <-- --> sip:port

    d、我们通信的时候是一方发起一方接收,那么我们接收的一方到底该怎么接收呢?是别人随来我们就可以随意接收呢还是说我们应该做出什么样的准备来接收呢?因此一般来讲通信请求的发起方一般来讲应该明确对端的地址,包含了IP+端口,那么我们如何得知对端的IP+端口呢?因此我们的服务器端随时就需要处于监听模式。他指的是无论有没有人访问他都在那里。因此我们默认的http服务是80,https服务是443

  5、ssl(Secure Socket layer):我们的wangjing公司为http协议设计研发了一种可被调用的公共功能模块,这个公共功能模块把它放在了应用层和传输层之间,他以库的形式来表示,并且在应用层和传输层协议层中都只放了半层。任何本身不具备加解密的程序在研发时调用了这个库他就能使用这个功能。研发时你调用了这个库他就能使用这个功能,不调用的话也照样可以工作,因此你用或者不用都可以,而这个半层库就叫ssl,也就叫安全的套接字层。所以无论是客户端还是服务器端开发时的程序员都需要用到这个库,程序员如果调用了这个库,这个库自身就能帮我们完成加解密功能。能帮我们完成秘钥分发功能。如果不调用也是可以的。

    

  6、https,如果http协议调用了ssl就变成了https。http和https实现上差别非常的大。现在我们有一种全栈https运动,相当于你浏览商品的过程也是加密的,为什么呢?并不是说你浏览商品的过程是不可告人的,而是说现在互连网上很多运营商是非常流氓的,他会悄悄分析你浏览的过程,然后将过程中的广告悄悄换成自己的。

  7、通信安全目标

    a、通信的保密性:confidentiality

    b、通信完整性:integrity

    c、通信可用性:availability

  8、安全攻击类型

    a、威胁保密性攻击:窃听、通信量分析

    b、威胁完整性的攻击:更改、伪装、重放,否认

    c、威胁可用性的攻击:拒绝服务(DoS)

  9、解决方案

    a、技术

      (1)、加密和解密

      (2)、服务(用于抵御攻击的服务,也即是为了实现上述安全目标而特地设计的安全服务)

    b、加密和解密

      (1)、传统加密方法:替代加密方法、置换加密方法

      (2)、现代加密方法:现代块加密方法、

        任何未加密的技术我们都可以称为明文,然后我们结合算法将其转换为另外一种机制,我们称为密文,这个过程我们就称为加密。解密相当于我们拿到密文后使用解密算法然后将其转换为明文。因为算法好多人都知道,因此我们更多的不能依赖于算法本身而应该依赖于参与者,我们可以额外加一个参与者,也叫秘钥。我们可以让秘钥作为参与者从而保证加密的安全性,算法人人都可以理解,即便你知道算法和密文,我们也要确保不能通过密文在不知道秘钥的情况下暴力还原回来。这儿就有一个问题就是你的秘钥如何安全送达到对方,因为对方没有你的秘钥他也没法解密。如果你们此前未曾见过面,这时候就比较麻烦了

        

    c、服务

      (1)、认证机制

      (2)、访问控制

    d、秘钥算法和协议

      (1)、对称加密

      (2)、公钥加密

      (3)、单向加密

      (4)、认证协议

  10、Linux实现上述加密功能的协议

    a、OpenSSL(ssl协议的实现)

    b、GPG(pgp协议的实现)

三、OpenSSL

  1、OpenSSL由三部分组成

    a、libencrypt:加密和解密库,专门实现加密和解密功能

    b、libssl:用来实现sll安全通信机制的库。因此任何程序如果要想实现加密解密功能不是为了通信的目的可以调用libencrypt库,如果要基于安全通信方式加密解密就可以使用libssl

    c、openssl:多用途命令行工具

  2、加密算法和协议

    a、对称加密:加密和解密使用同一个密钥

      

      (1)、DES:Data Encryption Standrd。2003年被废了,因为被一个100万美元的服务器破解了。

      (2)、3DES:Triple DES。比DES安全了三个数量级

      (3)、AES:Advanced Encryption Standrd。DES使用56位密钥,而AES支持128,192,256,384位密钥

      (4)、Blowflsh

      (5)、Twoflsh

      (6)、IDEA

      (7)、RC6

      (8)、CAST5

    b、特性

      (1)、加密,解密使用同一个密钥

      (2)、将原始数据分割成为固定大小的块,逐个进行加密

    c、缺陷

      (1)、密钥过多:作为服务器端,我们需要与成千上万的客户端通信,这就导致我们要与每一个通信者之间都要使用一个独立的专用密钥,否则都有可能导致密钥彼此之间共享,一旦共享了安全性就不复存在了。

      (2)、密钥分发困难:某东生成了密钥加密了一个数据,加密了数据后你访问不了还要再把密码给你,怎么拿到密码呢?因此就涉及到密钥交换。

Linux学习66 运维安全-通信加密和解密技术入门的更多相关文章

  1. 运维安全系列基础服务之 FTP 服务(系列一)

    做了多年运维工程师,积攒了一些经验,和大家分享下.个人认为,运维安全话题的系列,主要包括下面四个方面: 基础服务 网络层 应用层 云安全 今天主要讲的是基础服务里面的[FTP服务][ftp]. 文件传 ...

  2. linux运维安全工具集合[持续更新中..]

    lynis 安全漏洞检测工具    https://cisofy.com/download/lynis/    https://cisofy.com/files/lynis-2.2.0.tar.gz ...

  3. linux学习9 运维基本功-Linux常用基础命令实战应用

    一.文件系统知识回顾 1.Linux文件系统: a.文件名称严格区分字符大小写 b.文件可以使用除/以外任意字符 c.文件名长度不能超过255个字符 d.以.开头的文件为隐藏文件: . :当前目录 . ...

  4. linux学习8 运维基本功-Linux获取命令使用帮助详解

    一.Linux基础知识 1.人机交互界面: a.GUI b.CLI:[login@hostname workdir]# COMMAND 2.命令知识 通用格式:# COMMAND  OPTIONS A ...

  5. linux学习17 运维核心技能-Linux系统下用户权限管理

    一.权限管理 1.ls -l rwxrwxrwx 左三位:定义user(owner)的权限 中三位:定义group的权限 右三位:定义other的权限 1.进程安全上下文 a.进程对文件的访问权限应用 ...

  6. Java采用RSA加密及解密技术的有关Maven项目的配置流程:

    第一步: 获得RSA公钥私钥(秘钥格式:PKCS#8 ,测试使用的是无私钥密码的) 公钥: -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4G ...

  7. Linux轻量级自动运维工具-Ansible浅析【转】

    转自 Linux轻量级自动运维工具-Ansible浅析 - ~微风~ - 51CTO技术博客http://weiweidefeng.blog.51cto.com/1957995/1895261 Ans ...

  8. Linux轻量级自动运维工具-Ansible浅析 转

    转自 Linux轻量级自动运维工具-Ansible浅析 - ~微风~ - 51CTO技术博客http://weiweidefeng.blog.51cto.com/1957995/1895261 Ans ...

  9. [转帖]Linux学习笔记之rpm包管理功能全解

    Linux学习笔记之rpm包管理功能全解 https://www.cnblogs.com/JetpropelledSnake/p/11177277.html rpm 的管理命令 之前学习过 yum 的 ...

随机推荐

  1. h5样式

    禁止长按默认事件 安卓(android): window.ontouchstart = function(e) { e.preventDefault(); }; 苹果(ios): -webkit-to ...

  2. django中ORM中锁和事务

    一 锁 行级锁 select_for_update(nowait=False, skip_locked=False) #注意必须用在事务里面,至于如何开启事务,我们看下面的事务一节. 返回一个锁住行直 ...

  3. yarn报错error An unexpected error occurred:****ETIMEDOUT

    起因 在一个美好的下午,我敲击键盘输入quasar create Tangerine_Reception 我自豪的使用yarn作为包管理器,本以为万事无忧,不用担心出现npm的种种异常了...... ...

  4. 迷你记事本 https://vladocar.github.io/Minimal-Notes/

    迷你记事本 https://vladocar.github.io/Minimal-Notes/

  5. 下载网页中的 pdf 各种姿势,教你如何 carry 各种网页上的 pdf 文档。

    关联词: PDF 下载 FLASH 网页 HTML 报告 内嵌 浏览器 文档 FlexPaperViewer swfobject. 这个需求是最近帮一个妹子处理一下各大高校网站里的 PDF 文档下载, ...

  6. BeanShell调用自己写的jar包进行MD5加密

    1.在eclipse中新建一个java工程,工程名随意. 2.在工程中添加一个package,package名为md5,在package下添加一个class,class名为mymd5. package ...

  7. 2. weddriver的定位方法

    一. find_element_by_****的方式 首页在网页上鼠标右键选择检查并点击,查看需要定位的元素. https://www.baidu.com  以百度为例 导入模块的: from sel ...

  8. Linux下安装Python3.4

    PS:如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 1. ...

  9. [剑指offer]6.从尾到头打印链表+18.删除链表节点

    链表 6.从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 方法一 迭代 创建空列表res,将链表值head.val依次存进res,返回翻转后的res 代码 cl ...

  10. Spring WebFlux 入门

    1. WebFlux介绍 Spring WebFlux 是 Spring Framework 5.0中引入的新的响应式web框架.与Spring MVC不同,它不需要Servlet API,是完全异步 ...