Linux基础:Day06
背景:
早起的互联网 -- 1980年代 ,我们需要共享数据,传输数据;所传输或者共享的数据均为明文;
随着互连网发展,安全称为了国家的一种战略资源;
我们做的,比如编程,运维 -- 手工业;
安全属于一种科学研究 -- 安全的算法都是需要,以数学难题为基础来进行研究;
每个国家都疯狂去研究自己的加密算法,以及去破译别人的加密算法;美国--禁止出口长于256位的加密算法;
数据必须被加密
1、对称秘钥加密
同一个秘钥进行加密,用一个秘钥进行解密;
优点:效率高
缺点:秘钥维护非常困难;秘钥交换非常困难;
2、非对称秘钥加密
秘钥对(公钥,私钥)
A -- B
A私钥 A公钥
B可以同过使用A的公钥对数据进行加密,再传输给A;
有点:维护秘钥方便;数据比较安全;
缺点:效率低下(非常低下),和对称加密相比,差距为1000倍左右;
1、流加密
01010100100101011100100101001010
Cisco 0101
01010101010101010101010101010101
异或 -------------------------------------------
00000... (相同为0 不同为1)
00000...
Cisco 0101
01010101010101010101010101010101
异或 --------------------------------------------
01010100100101011100100101001010
1111 1111
----- -----
0010 1101
0101 0100 1001 0101 1100 1001 0100 1010
VI值 / | / | ... ... ... ...
0000 | / |
----------------------------------------------------------------
0101 0001
测试数据的完整性,保证数据没有被篡改;
原理:获取B机器对数据的hash值,A机器对获取的数据再进行一次hash;拿A自己hash的结果,与获取到的B机器的hash结果进行比较;
如果相同,则说明数据完整;否则,数据不可信任;
1、不可逆性 -- 单向加密
2、雪崩效应 -- 修改一个字符,输出的结果完全不同
随机生成密钥对 ,再将密钥对加上数据报文一起做HASH -- HMAC
这种方式即完成了原认证同时也完成完整性校验;
非对称秘钥的另外一个作用:
数字签名 (数据加密(太慢,不使用)、秘钥交换)
在做秘钥交换的时候,我们是用了 -- 公钥机密私钥解密
数字签名 私钥加密 -- 公钥解密
只有自己拥有自己的私钥,用自己的私钥对数据进行加密;
对端,使用自己的公钥进行解密,如果能解密说明数据源是正确的;否则,不可信任;
*4、证书机制 -- PKI(Openssl)*
我们通过PKI(公共秘钥基础设施)架构,来实现上面提到的三点认证机制;
PKI包括:
CA -- 证书服务器 CA服务器,用来做证书签发;
RA -- 搭建CA的机构,注册证书的机构;
CRL -- 整数吊销列表;
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根证书文件
以https为例
http -- > 80
客户端 -- 服务器端
tcp三次握手
http请求 ->
<- http的响应
https --> 443
客户端 -- 服务器端
tcp三次握手
ssl 握手
1、建立TCP会话的过程,ssl是需要借助tcp会话的 -- 三次握手的过程
2、ssl的握手认证
服务器端发送证书 给客户端
客户端验证(检查发行者的名称,找到发行者公钥,进行解密,验证发行者)
检查网站名称,和这个证书名称的名字是否一致,如果不是,则不行;
检查整数的信息是否完整,通过单向加密,确认证书信息是否完整;
最后检测这个证书是否已经被吊销;是否处于证书吊销列表中;
3、客户端生成对称秘钥,并将秘钥交换给对端
使用对端的公钥加密对称秘钥,发送给对端
【一般情况下,服务器端是不需要验证客户端整数的】
4、客户端请求对端url下的资源;
5、服务器端对客户端请求的资源进行加密
(保持连接和短连接) 短连接每次连接都会生成新的秘钥;
openssl的命令使用格式:
openssl 子命令
openssl help
man 子命令 //查看到子命令的帮助信息
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-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)
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
#!/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 做无密码登录;
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'
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
#
[ ! -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
pssh -h /root/host_ip.txt -i bash /root/your_scripts.sh
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的更多相关文章
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- 大数据每日干货第四天(linux基础之一目录结构与常用命令)
为了和qq空间同步,也写的第四天,前面几天明天会发布,本来打算把每天学的东西记录下来,通过朋友给的建议要发的话稍微系统化下,从大数据需要的linux基础,到离线数据分析包括hadoop. ...
- Linux课程实践一:Linux基础实践(SSH)
一.SSH服务 1. 安装SSH (1)查看是否已经安装过ssh服务 rpm -qa |grep ssh (2)进行安装 sudo apt-get install openssh-server Ubu ...
- 还是不想改报告,伊阿忆啊哟-Linux基础继续
hi 虽然今天是最最美好的周六(前不着工作日后不着工作日),但老子还要来改报告,但额就是不想改,你拿我有啥办法啊... 争取完结Linux基础 一.Linux常用命令(三) 4.帮助命令 4.1 帮助 ...
- 原来今天是感恩节-Linux基础继续&MySQL和PHP
hi 原来今天是感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了. 一.Linux基础(二) ...
- 买错的电影票,含着泪也得看-LAMP搭建&Linux基础
hi 没说过,上周五室友过生请客,在龙湖里吃嗨了喝爽了,回去的路上侃侃而谈.说好的这周一起去看年内最后的大片,火星救援的,谁知道老子眼神不好,买错了电影的时间...把周六的约定提前到了今儿个下午,ma ...
- Linux基础3(文件权限)
文件权限 1.普通权限 (登陆用户对文件或目录的读写执行的权限) 普通权限对管理员用户无效 文件和目录 都有4中类型的用户u 所有者 : 文件.目录的创建者g 所属组 : 文件.目录属于的用户组o 其 ...
- Linux课程实践一:Linux基础实践(基础操作)
一.软件源维护 1. 基本操作 (1)查看源列表 sudo vim /etc/apt/sources.list deb:二进制软件安装包 deb-src:源码包 (2)备份软件源列表 sudo cp ...
- 实践一:Linux基础实践
一.Linux基础实践 1.1 1. 掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 这部分内容在许多学长学姐的报告里都有很详细的讲解,我在此就不赘述 ...
- Linux基础精华
Linux基础精华 (继续跟新中...) 常用命令: Linux shell 环境 让你提升命令行效 率的 Bash 快捷键 [完整版] 设置你自己的liux alias Linux的Find使用 L ...
随机推荐
- 【Oracle】RAC的多实例数据迁移至单机的多实例。
思路:一般的思路可以通过RMAN进行数据的恢复.由于数据库可以停机,因此,这次试用数据泵(expdp,impdp)进行数据 的导入导出. 1.源数据库导出 通过编写导出shell脚本导出数据,如下: ...
- JVM02——JVM运行时内存
在上一篇文章中,我们介绍了 JVM 的内存区域,本文我们将继续围绕 JVM 展开话题,介绍 JVM 运行时内存.关注我的公众号「Java面典」了解更多 Java 相关知识点. Java 堆从 GC 的 ...
- vue之冒泡阻止
用了Element ui写页面 <el-dropdown-menu slot="dropdown"> <el-dropdown-item> <el-s ...
- foobox更新日志
2020-1-31, 6.1.5.1a 版(*) 跟进汉化版修正.(*) MusicTag升级到 1.0.4.0.(*) 部分图标改良,其他优化和修正.(+) 丰富网络功能,增加一个搜索源,一个榜单源 ...
- 数据结构和算法:Python实现二分查找(Binary_search)
在一个列表当中我们可以进行线性查找也可以进行二分查找,即通过不同的方法找到我们想要的数字,线性查找即按照数字从列表里一个一个从左向右查找,找到之后程序停下.而二分查找的效率往往会比线性查找更高. 一. ...
- 【简说Python WEB】Web应用部署
目录 [简说Python WEB]Web应用部署 应用层 缓存层 数据层 Gunicorn 的应用 1.安装Gunicorn 2.Gunicorn的启动 Nginx 的应用 1.docker方式部署安 ...
- linux环境下的时间编程
Linux下提供了丰富的api以供开发者们处理和时间相关的问题.然而这些接口看似各自为政实则有有着千丝万缕的联系,在学习和时间中引发了各种各样的混乱.因此时间处理成为了许多Linux开发者的梦魇,遇到 ...
- ECCV 2018 目标检测 | IoU-Net:将IoU的作用发挥到极致
常见的目标检测算法缺少了定位效果的学习,IoU-Net提出IoU predictor.IoU-guided NMS和Optimization-based bounding box refinement ...
- Django ajax的简单使用、自定义分页器
一. ajax初识 1. 前后端传输数据编码格式contentType 使用form表单向后端提交数据时,必须将form表单的method由默认的get改为post,如果提交的数据中包含文件,还要将f ...
- udp和tcp特点 实现文件上传
本周课程安排: 网络编程结束 并发网络开头 进程 线程 IO模型 上周内容回顾: 1.osi七层:应用层,表示层,会话层,传输层,网络层,数据链路层,物理连接层 也有人把他们归纳为五层: 应用层, 传 ...