linux之ssl加密 ssh远程登录 scp 传输文件
ssl加密 ssh远程登录 scp 传输文件
1.openssl加密
openssl version:显示版本
enc: 子命令 对称加密程序工具
常用的对称加密算法:DES DES3 AES
数据加密标准(DES)是美国的一种由来已久的加密标准,它使用对称密钥加密法。DES3它使用3条64位的密钥对数据进行三次加密`, 是DES的一个更安全的变形。AES是下一代的加密算法标准,速度快,安全级别高。
1.)参数选项:
openssl
-e:加密
-d:解密
-ciphername:ciphername为相应的对称加密算命名字,如-des3、-ase128、-cast、-blowfish等等
-a/-base64:使用base-64位编码格式
-salt:自动插入一个随机数作为文件内容加密,默认选项
-in FILENAME:指定要加密的文件的存放路径
-out FILENAME:指定加密后的文件的存放路径
2.加密 解密 格式:
openssl enc [-e] -加密算法 [-a -salt] -in INPUT_FILE -out OUTPUT_FILE
调用Openssl enc加密子命令, -e指定加密算法, -a 使用base-64位编码格式;-salt 插入一个随机数, -in 被加密的文件 ,-out加密后输出的文件
例如:
openssl enc -des3 -a -salt -in ./fstab -out ./fstab.openssl
加密 使用-des3的算法 文件位置 加密后的文件位置
解密格式:
openssl enc -d -对应解密算法 [-a -salt] -in 密文INPUT_FILE -out 明文OUTPUT_FILE
例如:openssl enc -d -des3 -a -salt -in ./fstab.openssl -out fstab.out
-d解密 对应的算法 文件路径 解密后的文件
3.加密 解密 案例
openssl enc -e -des3 -a -salt -in anaconda-ks.cfg -out anaconda-ks.cfg.ssl
-e加密 对这个文件加密 加密后的文件路径
openssl enc -d -des3 -a -salt -in anaconda-ks.cfg.ssl -out anaconda-ks.cfg.ming
-d解密
diff anaconda-ks.cfg anaconda-ks.cfg.ming 比较两者不同
2.单向加密常见命令:特点 格式
散列算法、信息摘要算法 md5sum sha1sum sha256sum......
只能加密,不能解密,逆推无解
使用openssl工具调用dgst子命令
格式
openssl [dgst] [单项加密算法] FILE
openssl dgst -md5 /tmp/fstab 文件
案例 生成校验码openssl dgst -md5
openssl dgst -md5 anaconda-ks.cfg -----生成校验码
dgst子命令 -md5 文件
Diff 然后对比一下,
3.openssl生成随机数命令rand 格式openssl rand
1.)格式:openssl rand -base64 | -hex NUM
案例 生成随机数
openssl rand -base64 16
openssl rand -hex 16
4.公钥加密
算法: RSA算法(RSA加密算法是一种非对称加密算法)
加密工具(很少用)pgp openssl rsautl
签名算法和工具RSA DSA ELGamal
1.命令:genrsa --->生成密钥对 (可以选择性进行加密)
2.格式:
openssl genrsa -out FILE NUM_BITS
genrsa生成rsa -out文件位置 位数
例如:
openssl genrsa -out rsakey.private 2048生成私钥 文件必须一样
penssl rsa -in rsakey.private -pubout 输出公钥 基于私钥生成公钥
案例 生成私钥,基于私钥生成公钥 保存
openssl genrsa -out anan.private 2048 ---生成私钥
openssl rsa -in anan.private -pubout ---基于私钥生成公钥
openssl rsa -in anan.private -out anan.out---保存公钥为anan.out文件
保存公钥
ssh远程登录 命令格式 配置文件
/etc/ssh/ssh_configssh的客户端配置文件
/etc/ssh/sshd_configsshd的服务端的配置文件:
命令使用方式:
ssh [USER@HOST] [COMMAND]
ssh [-l user用户] host [主机IP command] 可以不登录执行远程主机的某命令
-p:指定连接端口
如:
ssh -l root 192.168.10.254 ls -l /root >> file
ssh root@192.168.10.2 ls -l /root/ >> file1 --指定文件file1
案例 远程登录
启动服务,关闭防火墙,
ssh root@192.168.10.1
用户 那个主机的ip 用户为服务端的
2.输出到文件中
查看服务端的网卡
ssh root@192.168.10.1 ifconfig ens33
ssh root@192.168.10.1 ifconfig ens33 >> file1 将内容输入到文件file1
6.无密码登录
1.在客户端生成秘钥对:ssh-keygen -t rsa
ssh-keygen -t rsa [-P ‘’ ] [-f “~/.ssh/id_rsa”]
-P指定加密密码,为空
ssh-keygen -t rsa ---生成密钥对,无密码 (回车即可)
2将公钥传输至远程服务器对应用户的家目录,远程要使用来登录的那个用户 (我用来登录的用户)
命令格式 ssh-copy-id -i USERNAME@IP
无密码登录root服务端
ssh-copy-id -i root@192.168.10.1 --上传到root用户,下次登录不需要密码
服务端root的密匙
服务端用户kk的密匙
7.客户端scp工具:实现远程跨主机文件复制 推送 拉取
1.命令格式
scp [option] SRC... DEST/
-r:递归复制目录 -p:保留属性 -P:指定端口
sftp工具:基于ssh的加密ftp工具,功能强大
2.)推送(PULL):
scp /本地路径下的文件 USER@HOST:/路径
本地文件 远程用户的 :/路径
scp file1 root@192.168.10.1:/tmp
将file1文件 推送到 10.1主机的root用户 保存到tmp目录下
服务端查看
3.)拉取(PUSH):
scp USER@HOST:/路径下文件 /本地路径下的文件
scp anaconda-ks.cfg root@192.168.10.4:/tmp
将服务端的 cfg文件 发送到10.4主机rootyh 文件存放位置tmp目录
也之前没有密匙,所有会提示 yes/no 然后输入密码即可
查看客户端
4.)在服务端 将客户机的文件传输到服务端
scp root@192.168.10.4:/tmp/yum.log /root
在服务端 将10.4的root用户的tmp下的文件传输到 服务端root下
查看
8.控制远程登录用户名单
服务端建立用户 sshuser1 sshuser2
客户端进行登录 除了这两个用户 ,其余都不能远程登录,包括root用户
在配置文件 /etc/sshd/sshd_config 文件加入这一行
AllowUsers sshuser1 sshuser2 --允许可以远程登录的用户名单 (服务端的用户)
也可以拒绝 某些用户
sshuser1 用户登录
user3 用户不能登录
root 用户不能登录
9.总结 网络通信安全
1.)网络通信,两个主机间进行通信,基于套接字(IP:PORT)
套接字: Ip标识的是网络上的主机或服务器,端口标识的是主机上的某一个服务 两者结合称为套接字
TCP/IP四层模型:
1.链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序、计算机中对应的网络接口卡
2.网络层(互联网层):处理分组在网络中的活动,比如分组的选路。
3.运输层:主要为两台主机上的应用提供端到端的通信。
4.应用层:负责处理特定的应用程序细节。
2.)网络中进行通信,网络通信协议安全性在初期并不高。
数据源(包括数据内容和报头)都是以明文的方式进行传输的,很容易被抓取和拷贝。
3.)数据在网络中传输,容易遭受安全攻击,包括:
篡改(modification);拦截或访问信息后,攻击者可以修改信息使其对己有利。
伪装(masquerading):攻击者假扮成某人。例如,伪装为银行的客户,从而盗取银行客户的银行卡密码和个人身份号码。
重放(replaying):即攻击者获得用户所发信息的拷贝后再重放这些信息。
拒绝服务(denial of service):可能减缓或完全中断系统的服务。攻击者可以通过几种策略来实现其目的。发送大量虚假请求,以致服务器由于超负荷而崩溃;
4.)网络安全体现在
私密性:: 避免未经授权的公开
完整性:: 避免未经授权的更改
可用性:: 对授权实体随时可用
5.)如何确保数据传输网络中的安全,其安全机制:
加密(encipherment):隐藏或覆盖信息使其具有机密性。(通过加密算法)
信息完整性(data integrity):附加于一个短的键值,该键值是信息本身创建的特殊程序。接收方接收信息和键值,再从接收的信息中创建一个新的键值,并把新创建的键值和原来的进行比较。如果两个键值相同,则说明信息的完整性被保全。
数字签名(digital signature):发送方对信息进行电子签名,接收方对签名进行电子检验。发送方使用与公钥有联系的私钥(唯一)签名
身份认证交换(authentication exchange):两个实体交换信息以相互证明身份。
流量填充(traffic padding):在数据流中嵌入一些虚假信息,从而阻止对手企图实用流量分析。
路由控制(routing control):在发送方和接收方之间不断改变有效路由,避免对手在特定的路由上进行偷听。
公证(notarization):选择一个双方都信赖的第三方控制双方的通信,避免否认。
访问控制(access control):用各种方法,证明某用户具有访问该信息或系统资源的权利。密码和PIN即是这方面的例子。
6.)安全性相关的服务体现
信息机密性:保护信息免于窃听和流量分析。
信息完整性:保护信息免于被恶意方篡改,插入,删除和重放。
身份认证(authentication):提供发送方或接收方的身份认证。
对等实体身份认证:在有通信连接的时候在建立连接时认证发送方和接收方的身份;
数据源身份认证:在没有通信连接的时候,认证信息的来源。
不可否认性(nonrepudiation):保护信息免于被信息发送方或接收方否认。
访问控制(access control):保护信息免于被未经授权的实体访问。访问的含义是非常宽泛的,包含对程序的读、写、修改和执行等。
7.密码算法和协议
1.)对称加密:加密和解密使用同一个秘钥
(算法公开,但是基于秘钥才能破解密文)
特性:
将原始数据分割为固定大小的块,逐一加密。
由于此机制,缺陷为秘钥过多,秘钥分发太复杂。
常见加密算法有DES 3DES AES......
2.公钥加密:
秘钥成对出现,分为公钥和私钥,可用于身份认证(数字签名)和秘钥交换,也可进行数据加密(通常极少)。
秘钥交换:发送方用对方的公钥加密一个对称秘钥,发送给对方。
数字签名:接收方确认发送方的身份
数据加密:对数据进行加密(极少使用)
特性:公钥加密,私钥解密,公钥公开,私钥私密
①公钥公开给所有人,私钥只有自己知道,必须保证私密性,解密需配对。
②通常情况下对秘钥进行加密存,放在文本中
③如使用公钥加密的数据,只能使用配对的私钥解密,反之一样。
常见算法:RSA DSA(只能用于数字签名) ......
8.完整通信详解:
我要给客户机发送数据,
首先对特征码进行第一次加密,在对数据和特征码包装二次加密,
接收方首先解开二次加密,得到数据和特征码,
接收方在用解密算算法解开特征码,
进行比较,如果不同则说明被篡改.
10.SSL (Secure Sockets Layer)安全的套接字层 TLS:安全传输层协议
1.)SSL 是指安全套接字层,
是一项标准技术,确保互联网连接安全,保护两个系统之间发送的任何敏感数据,防止网络犯罪分子读取和修改任何传输信息,包括个人资料。
两个系统可能是指服务器和客户端(例如,浏览器和购物网站),或两个服务器之间(例如,含个人身份信息或工资单信息的应用程序)。可确保在用户和站点之间,或两个系统之间传输的数据无法被读取。使用加密算法打乱传输中的数据,防止数据通过连接传输时被黑客读取。
2.)TLS:安全传输层协议
(传输层安全)是更为安全的升级版 SSL。由于 SSL 这一术语更为常用,因此我们仍然将我们的安全证书称作 SSL。
如果某个网站受 SSL 证书保护,其相应的 URL 中会显示 HTTPS(超文本传输安全协议)。单击浏览器地址栏的挂锁图标,即可查看证书(CA)详细信息,包括颁发机构和网站所有者的公司名称。
11.OPENSSL:开源的SSL协议 telnet协议
三个组件:
①openssl:多用途的命令行工具
②libcrypto公共加密库
③libssl库:实现ssl和tls
1.ssh协议:
安全的外壳协议 监听TCP的22端口,实现安全的远程登录
2.openssh:
ssh的开源实现方案,目前使用ssh v2版本的协议。
以远程终端进行控制和操作主机的相关资源,服务端构建C/S架构的终端。
1. telnet协议:
早期远程终端控制,使用telnet协议,监听在tcp的23端口。安全性比较差,没有加密认证等相关功能。
yum -y install telnet 启动需要基于超级守护进程xinetd的守护进程来进行辅助启动。
注意:telnet属于非加密的明文传输(tcpdump可以实现直接抓包获取账号密码),默认不能直接使用超级用户登录,
12ssh远程连接的工作模式:安全通信过程方式:
安全通信过程方式:
1.)客户端基于TCP三次握手连接服务端,服务端三次握手完成后,发送自己主机秘钥的公钥给客户端。
基于秘钥交换算法进行协商,发起账号登录信息,进行连接,连接之后互相传输数据都是安全的密文数据。
2.)客户端生成一对秘钥,将公钥放置远程服务器用户家目录,后期登录直接基于秘钥认证,即可无密登录。
Ssh v2版本:双方主机协议选择安全的MAC(强制认证方式,将认证的工作交给第三方安全工具来完成,如selinux)方式,基于DH算法做秘钥交换,基于RSA或DSA算法实现身份验证。
SSH协议在Linux中基于openssh工具实现,属于C/S架构,
客户端--->ssh 服务端---> sshd
客户端工具:
Linux客户端:ssh远程连接 scp远程传输 sftp远程安全加密
windows客户端:Xshell securecrt
服务端工具:sshd
4.)SSH-windows的客户端,例如Xshell
13.SSH服务端 文件解读
配置文件:需要安装openssh-server程序,才会生成 /etc/ssh/sshd_config
注意:配置文件需紧贴在文本左侧,不能留空格,否则语法错误。
参数详解
远程连接使用ssh -X 选项
AllowUsers user1 user2 user3 限制用户登录白名单
建议:①不要使用默认端口
②限制可登陆的用户
③不要使用sshV1版本
④设置空闲会话超时时长
⑤配合利用防火墙
⑥不要使用简单密码。尽量使用秘钥登录
⑦尽量避免使用root用户直接登录,可以使用sudo提权。
⑧经常查看日志记录,便于分析。
文件解读
17 #Port 22 ----监听端口为22 ,如果改 则远程登录时-P 指定端口
18 #AddressFamily any
19 #ListenAddress 0.0.0.0 ----ipv4的地址,可以指定监听的ip
20 #ListenAddress :: ----ipv6的地址
47 AuthorizedKeysFile .ssh/authorized_keys --指定存放密匙文件
96 UsePAM yes ---使用PAM认证
110 #PermitUserEnvironment no ---不能使用空密码登录
37 #LoginGraceTime 2m ----登录宽限时间
38 #PermitRootLogin yes ----禁止超级用户直接登录
39 #StrictModes yes ----严格(不建议打开)
40 #MaxAuthTries 6 ---单位时间内尝试密码次数
41 #MaxSessions 10 ----最大开启会话窗口
102 X11Forwarding yes --是否支持远程连接开启程序的图形视窗
远程连接使用 ssh -X 选项 -X 允许X11转发 就是连接一些图形界面
116 #UseDNS no 是否启用DNS 建议关闭,为no
AllowUsers user1 user2 --允许可以远程登录的用户名单 (服务端的用户)
也可以拒绝 某些用户