Linux学习笔记:Linux服务以及服务的安全

一、数据加密和解密

进程间通信:

同一主机内的进程间通信:

发送信号(signal),

共享内存(shm),

semaphore

message queue, MQ, RabbitMQ

不同主机之间的进程间通信:

Socket-pair,套接字对儿;

三种类型的套接字:

流套接字(Socket_Stream):基于TCP协议通信的套接字;

数据报套接字(Socket_Dgram):基于UDP协议通信的套接字;

裸套接字,原始套接字(Socket_Raw):基于底层协议通信的套接字

套接字Socket:IP:PORT

进程的地址标识;

一个套接字就是指某个特定主机上的特定应用程序;

大多数情况下,网络通信都是从客户端到服务器的通信;对于服务器来说,必须要有套接字的监听机制,即进程的监听模式,而通常来讲,把具有这种监听模式的进程,称为守护进程,或者叫服务进程;

服务进程所监听的套接字资源,是在其启动之前向内核申请注册得到的;而且,套接字资源是所有的服务进程独占的资源,具有排他性;

端口号:

0:默认没有被使用;

1~1023:众所周知的端口,固定的端口;

1024~49151: 注册端口

MySQL:3306

Memcached:11211

Tomcat:8091

49152~65535:动态端口,为客户端进程提供的随机选择端口

安全实现的目标:

机密性:confidentiality,保证信息不泄露

完整性:integrity,保证信息不被篡改

可用性:availability,保证信息内在价值

威胁

威胁机密性的攻击行为:

窃听

嗅探

扫描

通信量分析

威胁完整性的攻击行为:

更改

伪装

重放

否认

威胁可用性的攻击行为:

拒绝服务 (DoS)

安全解决方案:

技术:加密和解密:

传统的加密方法:

替代加密算法;

置换加密算法;

现代的加密方法:

块加密算法:

服务:安全服务:

身份认证;

访问控制机制;

加密方案:

加密算法和密钥;

加密算法:

对称加密算法

公钥加密算法

单向加密算法

密钥交换算法

对称加密算法:

加密和解密使用同一密钥;

特性:

1.每对通信主机都需要保有一个相同密钥,用于加密和解密;

2.将原始的数据分割成固定大小的块逐个加密;

3.加密解密速度较快

缺陷:

1.加密解密所需要保有的密钥数量过多;

2.密钥分发过于困难

主流加密算法:

DES:Data Encryption Standard,数据加密标准;采用56bit密钥分成64bit块

NSA:美国国家安全局

3DES:

AES:Advanced Encryption Standard,高级加密标准;

AES128bit,AES192bit,AES256bit

当前NSA主流选择

Blowfish

Twofish

IDEA

RC4,RC6

公钥加密算法:

采用密钥对加密

密钥分为私钥和由私钥抽取生成的公钥组成;

私钥:512bit,1024bit,2048bit,4096bit,8192bit,16384bit;

特点:

1.使用密钥对进行加密和解密;使用私钥加密的数据,必须从中抽取出来的公钥解密;使用公钥加密,必须使用与之相对的私钥才能解密;

私钥:通过特定的工具创建生成,由使用者自己留存,务必保证其私钥性;secret key或private key

公钥:从私钥中提取生成,公钥可以公开给所有人使用,public key

2.密钥长度都比较长,加密之后的数据的安全等级较高;

缺陷:

加密数据的时候,消耗的系统资源和时间都较多,很少用来加密大批量数据;

主要工作目的 用途:

数字签名;主要用于让接收方确认发送方的身份;使用发送方的私钥加密数据,到了接收方之后,使用发送方的公钥解密数据;

密钥交换:发送数据方使用接收方的公钥加密对称密钥,然后将加密后的对称密钥发给对方;

数据加密:通常用于加密小数据;

常用的公钥加密算法:

RSA:数据加密,数字签名;

DSA:数字签名算法,只能实现数字签名,有时该算法也被称为DSS(数字签名标准)

ELgamal:收费的算法

单向加密算法:

只能进行加密不能解密;从已知数据中提取密码指纹;

特性:

1.定长输出:

2.雪崩效应:

功能:

保证数据的完整性;

常用的算法:

md5:信息摘要算法的第五版

128bit定长输出;

sha系列算法:

sha-1:安全的哈希算法,160bit定长输出

sha224

sha256

sha384

sha512

密钥交换算法:IKE

公钥加密算法来实现;

DH算法:Deffie-Hellman

加密算法的联合应用:

1.通信双方互相交换证书,并到信任的CA进行证书认证;

2.发送方使用某种对称加密算法对数据进行加密;加密后的数据使用单向加密计算其特征值,发送方再用自己的私钥加密此特征值,以证明数据来源的可靠;发送方使用接收方的证书加密对称密钥;

3.接收方在收到数据之后,先使用自己的私钥解密对称密钥,然后使用发送方的公钥解密特征值,再利用相同的单向加密算法,重新结算加密数据的特征值;比较两个特征值;如果特征值一致,则表明数据完整;再用解密出来的对称密钥解密出原始数据;

证书里面主要包括:

拥有者名称;

拥有者所提交的公钥;

有效期;

证书的版本号;

证书的序列号;

签发算法ID;

签发CA的名称;

主体名称;

发证者的唯一标识;

发证者的数字签名;

扩展信息

PKI:公钥基础设施;

证书的签证机构:CA

注册机构:RA

证书吊销列表:CRL

证书存取库:CAB

CA如何发挥其作用的:

1.通信双方互相交换证书;

2.双方协商加密算法;

3.双方验证证书的真伪

4.用CA的公钥去解密证书中CA的签名,能解密说明证书来源可靠;

5.用同样的加密算法加密证书,取得特征值,与解密出来的特征值比较,如果想同,说明证书完整性可靠;

6.检查证书的有效期是否在合法时间范围,如果过期则证书不被认可;

7.检查证书的主体名称和此次通信的目标是否能够对应;

SSL:安全的套接字层

1994年,网景公司最先声明并实施;

TLS:传输层安全协议;

IETF:互联网工程项目小组 1999年提出

TLS V1.0

2006年,TLS V1.1

2008年,提出TLS V1.2草案,将椭圆曲线加密算法引入TLS;至今未应用

分层设计:

1.最底层:基础算法的原语的实现;AES,md5,sha...

2.向上一层:各种算法的基本实现;

3.再向上一层:各种算法组合实现的半成品;

4.最高层,用各种组件拼装而成的各种成品密码学协议软件;

SSL/TLS的握手的四个阶段:

1.客户端向服务器索要证书并验证证书;

Client Hello发送的信息内容

支持的协议的版本,如:TLS V1.2

客户端生成一个随机数,稍后用户生成会话密钥;

支持的加密算法,如:AES,DES,RSA等

支持的压缩算法

2.双方协商生成会话密钥;

Server Hello发送的信息内容:

确认使用的加密协议的版本号,如:TLS V1.2

服务器生成一个随机数,稍后用于生成会话密钥

确认加密算法及压缩算法;

3.双方采用已经生成的会话密钥进行安全加密的通信;

客户端验证服务器证书,在确认无误后,取出其公钥;

验证服务器证书需要验证下述内容:

验证发证机构(CA);

验证证书的完整性

验证证书的持有者信息;

验证证书有效期

验证证书的吊销列表

客户端发送信息给服务器端:

一个随机数,用于服务器上的公钥加密;

编码格式变更通知,表示随后的信息都将用双方已经协商好的加密算法和密钥进行加密发送;

客户端握手结束:

4.双方互相通告握手结束的信息;

服务器收到客户端发送来的此次握手阶段的第三个随机数;Pre_Master_key;计算生成本次会话所用到的会话密钥,向客户端发送相关信息;

编码变更通知,表示随后的信息都将用双方已经协商好的加密算法和密钥进行加密发送;

服务器端握手结束;

时间: 2024-12-18 07:40:56

Linux学习笔记:Linux服务以及服务的安全的相关文章

Linux学习笔记——Linux服务管理(十)

+++++++++++++++++++++++++ +++++Linux服务管理+++++++++++++++++++++++++++++++ 1. 服务简介与分类 服务启动与自启动的概念: 服务启动:就是在当前系统中让服务运行,并提供功能 服务自启动:自启动是指让服务在系统开机或重启之后,随着系统的启动而自动启动的服务 查询已安装的服务: RPM包安装的服务——命令 :chkconfig --list     #查看服务自启动状态,可以看到所有RPM包安装的服务 源码包安装的服务——查看服务安

[Linux学习笔记] Linux系统安装

准备: <1>软件1-虚拟机: VMware WorkStation 12 Pro 下载地址: VMware WorkStation 12 Pro.exe [ 密码: l5lx ] <2>软件2-CentOS-7系统: 下载地址: CentOS-7-x86_64-DVD-1503-01.iso 下面对这两个软件包做简单的介绍: VMware简介: VMware虚拟机软件(中文名"威睿"),是全球桌面到数据中心虚拟化解决方案的领导厂商.VMware是一个"

[Linux学习笔记] Linux系统引导流程(一)

前面我们已经介绍过以CentOS为例的Linux系统的安装以及Linux常用命令的使用,本节内容我们将介绍Linux系统引导流程.当按下电源的那一刻,到我们看到用户界面,这其中都发生了些什么呢?赶快来一探究竟. 下图为Linux系统引导流程过程图: 以下对Linux引导流程过程做一个简单的说明: 1. POST加电自检 POST(POST ON SELF TEST)首先对每一个设备进行检查,完成后会寻找存有引导记录的设备,找到读入操作系统的引导记录,将系统控制权交给引导记录. 2. MBR引导

[Linux学习笔记] Linux文本编辑器Vim/Vi

文本编辑器Vim: Vim/Vi是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器. 它的作用是建立.编辑.显示文本文件. Vim/Vi没有菜单,只有命令. 插入命令 命令 作用 a 在光标后附加文本 A 在本行行末附加文本 i 在光标前插入文本 I 在本行开始插入文本 o 在光标下插入新行 O 在光标上插入新行 定位命令 命令 作用 h 方向左键. 左移一个字符 j 方向下键. 下移一行 k 方向上键. 上移一行 l 方向右键. 右移一个字符 $ 移至行尾 0 移至行

Linux学习笔记--Linux文件管理类名利详解

Linux文件管理类命令详解 目录管理: ls.cd.pwd.mkdir.rmdir.tree 文件管理: touch.stat.file.rm.cp.mv.nano 日期管理: touch.clock.hwclock.cal 查看文本: cat.tac.more.less.head.tail cat:连接并显示 -n:在显示时显示每一行的行号 -E:在每行结束处显示 $ Ctrl+C:结束命令 分屏显示: more.less more:向后翻 less: q退出命令 head:查看前n行 ta

#Linux学习笔记# Linux文件的属性以及权限说明

1. Linux文件的属性 关于Linux文件的属性的说明和设置请参考鸟叔Linux私房菜:Linux 的文件权限与目录配置 2. 目录和文件的权限意义 在Linux系统中,每个文件都有三种身份的权限配置,而每个身份都有三种权限(rwx).这三种权限对于普通的文件很好理解,如下表所示, 表格 1 普通文件的rwx权限位意义 权限 说明 r 文件内容可读 w 文件内容可修改 x 文件可执行 在Window系统中,文件是否可执行是通过文件扩展名来进行识别,例如.exe或.bat等.而在Linux系统

#Linux学习笔记# Linux文件的所有者、群组和其他人

1.关于所有者.群组和其他人 在Linux系统中,每个文件都具有User.Group和Others三种身份的权限配置.那这三种身份分别表示什么意思呢?配置这三种身份的权限有啥意义呢? (1)文件所有者(User) 由于Linux系统支持多人多任务,因此常常存在多个用户同时使用一个Linux系统的情况.那么,如何确认每个用户私密文件的访问控制呢?这就是文件所有者存在的原因. Linux系统为每个用户提供一个用户主目录,用户的主目录为/home/<username>.例如,下图的/home/lie

#Linux学习笔记# Linux在线帮助文档man page

man是manual的简称,表示手册页.Linux系统的帮助手册页是按照章节(SECTION)来存储了.man手册页分为下面几个章节. 1 普通命令 2 内核提供的系统调用 3 库调用(C库函数) 4 特殊文件(大多在/dev目录下)和设备 5 文件格式规范 6 游戏 7 杂项(及其规范) 8 系统管理命令(通常需要root权限)和守护进程 Linux系统在显示man手册页只会显示某一章节.在使用man命令打开man手册页可以指定要打开的章节编号,例如下面命令打开passwd的第5章节内容, $

[Linux学习笔记] Linux常用命令 - 权限管理命令

Linux权限管理命令 1. 改变文件或目录权限: chmod 命令名称: chmod 命令英文原意: change the permissions mode of a file 命令所在路径: /bin/chmod 执行权限: 所有用户 语法: chmod [{ugo} {+-=} {rwx}] [文件或目录]             [mode=421] [文件或目录] 功能描述: 改变文件或目录权限 代表字符 权限 对文件的含义 对目录的含义 r 读权限 可以查看文件内容 可以列出目录中的

Linux 学习笔记 Linux环境变量初稿

set命令会显示为某个特定进程设置的所有环境变量,但不包括一些没有设置值的默认环境变量 可以通过等号来给环境变量赋值,值可以是数值或字符串 如果要给变量赋一个含有空格的字符串值,必需用单引号来界定字符串的开始和末尾 没有单引号的话,bash shell会以为下个字符串是另一个要执行的命令. (赋值表达式中不要放等号) 创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中 export命令 unset命令 删除环境变量 PASH 冒号分隔的shell查找命令的目录列表 Lin