一、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. Fortify Audit Workbench 笔记 Header Manipulation

    Header Manipulation Abstract HTTP 响应头文件中包含未验证的数据会引发 cache-poisoning. cross-site scripting. cross-use ...

  2. 【JDK】JDK源码分析-HashMap(2)

    前文「JDK源码分析-HashMap(1)」分析了 HashMap 的内部结构和主要方法的实现原理.但是,面试中通常还会问到很多其他的问题,本文简要分析下常见的一些问题. 这里再贴一下 HashMap ...

  3. ES6、ES7、ES8语法总结

    ES6 1. var let const let,const具有块级作用域,不具有变量提升 const 用于不能被重新赋值的变量 2. 箭头函数 我们经常要给回调函数给一个父级的this 常用办法就是 ...

  4. .NET 5 Preview 1中的ASP.NET Core更新 (2020年3月16日)

    .NET 5 Preview1现在可用,可以进行评估了! .NET 5将是当前版本. 开始 要在.NET 5.0中开始使用 ASP.NET Core,请安装.NET 5.0 SDK. 如果您使用的是W ...

  5. 5分钟使用NetModular 完成通讯录 App 开发

    原版连接:https://www.cnblogs.com/shanyou/p/12520894.html NetModular(后文简称NM)是 OLDLI 堪称艺术品级的应用开发框架,它基于经典领域 ...

  6. Java 并发同步工具(转)

    转自:https://www.jianshu.com/p/e80043ac4115 在 java 1.5 中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如 CountDownLatch,Cy ...

  7. ASP.NET MVC5实现芒果分销后台管理系统(二):Code First快速集成EntityFramework

    在上一篇文章中,我们已经搭建了整个芒果后台管理系统整个工程架构,并集成了AutoMapper,日志组件等,接下来我们将使用Entity Framework完善系统的持久化存储部分.这篇EF的构造,我将 ...

  8. git 使用和一些错误

    一.简单使用 Git是目前世界上最先进的分布式版本控制系统,用于自动记录每次文件的改动,但是和所有版本控制系统一样,只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等,而图片.视频这些二进 ...

  9. python爬取网站页面时,部分标签无指定属性而报错

    在写爬取页面a标签下href属性的时候,有这样一个问题,如果a标签下没有href这个属性则会报错,如下: 百度了有师傅用正则匹配的,方法感觉都不怎么好,查了BeautifulSoup的官方文档,发现一 ...

  10. [bash]http serevr部署wordpress

    #!/bin/bash # echo "close selinux…" sed -i 's/Enforcing/disabled/' /etc/sysconfig/selinux ...