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  --允许可以远程登录的用户名单 (服务端的用户)

也可以拒绝 某些用户

 

posted @ 2020-08-01 10:34  浅唱I  阅读(2359)  评论(0编辑  收藏  举报