安全及数字认证等使用

偏重实现ca数字认证及实现基于key的登录

安全及数字证书

dig -t mx magedu.com 查询对应的邮件服务器

md5sum file 查看该文件的哈希值(单向散列);也可支持多文件同时检测是否变动

md5sum –check file等价于md5sum -c file

sha1sum file 以另一种算法来看哈希值

应用程序:RPM

文件完整性的两种实施方式

被安装的文件

MD5单向散列

rpm –verify package_name (or -V)

发行的软件包文件

GPG公钥签名

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*

rpm –checksig pakage_file_name (or -K)

使用gpg实现对称加密

对称加密file文件

gpg -c file 加密该文件

ls file.gpg

在另一台主机上解密file

gpg -o file -d file.gpg 其中d是解密,o是生成新的文件

在hostA主机上生成公钥/私钥对(最好在虚拟机上操作,方便鼠标点)

gpg –gen-key

在hostA主机上查看公钥

gpg –list-keys

在hostA主机上导出公钥到wang.pubkey

gpg -a –export -o wang.pubkey

在hostB主机上导入公钥

gpg –import wang.pubkey

用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg

gpg -e -r wangxiaochun file(e是加密;r是用指定的公钥;最后是源文件)

复制加密文件到hostA主机

scp fstab.gpg hostA:

在hostA主机解密文件

gpg -d file.gpg

gpg -o file -d file.gpg

删除公钥和私钥

gpg –delete-keys wangxiaochun

gpg –delete-secret-keys wangxiaochun

CA和证书

PKI :公共秘钥体系

签证机构:CA(Certificate Authority)

注册机构:RA

证书吊销列表:CRL

证书内容:Sca(Pca)+Ca+其他信息

 

openssl命令

对称加密:

工具:openssl enc, gpg

算法:3des, aes, blowfish, twofish

enc命令:

帮助:man enc

使用openssl enc 进行对称加密:(enc是对称加密;-des3是加密算法的一种;-a使用base64;-salt盐可加入乱码,保证每次加密结果都不一样)

openssl enc -des3 -a -salt -in file -out file.out 然后输入两遍想设置的口令即可

解密:openssl enc -d -des3 -a -salt -in file.out (想生成新文件后面加-out f1)

 

openssl dgst -md5 file 也可以计算文件的哈希值,同md5sum file一样

可以对想设置的口令加密

openssl passwd -1 -salt SALT(最多8位)

openssl passwd -1 -salt centos

生成随机数

帮助:man sslrand

openssl rand -base64|-hex NUM

NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2;-base64时是 六进制数

 

生成私钥

(umask 066;openssl genrsa -out private.key 1024) 生成私钥(可将其加密,在1024前加-des)

openssl rsa -in test.key -out text2.key 可将加密的key解密生成新文件2

生成秘钥

从私钥中提取出公钥

openssl rsa -in PRIVATEKEYFILE -pubout -out PUBLICKEYFILE

openssl rsa -in test.key -pubout -out test.key.pub

实验:向ca申请证书

1.建立ca

touch /etc/pki/CA/index.txt 生成证书索引数据库文件

echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号

还有一个吊销证书的序列号记录文件也需要手动创建并echo 01 >

  • 建立root ca
  • 生成私钥

(umask 066;openssl genrsa -out private/cakey.pem 2048)

  • 自签名证书

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650

(加-x509是自签名操作,使用私钥生成证书,最后定义有效期十年;随后分别输入策略需要填写的国家、地区、城市等)

openssl x509 -in cacert.pem -noout -text 可以正常查看自签名证书内容

2.用户或服务器

  • 生成私钥

同上,文件可随意命名,一般放在所需app的配置文件

  • 生成证书申请文件

openssl req -new -key app.key -out app.csr

通过生成的私钥app.key来生成申请文件app.csr

  • 将申请文件发给ca

scp命令

3.ca颁发证书

openssl ca -in app.csr -out certs/app.crt -days 100

4.证书发送给客户端

将app.crt文件发送即可

 

重要的配置文件是:/etc/pki/tls/openssl.conf

19-1

certs :放证书的

crl_dir :放证书吊销列表

database :索引文件、数据库,其中包含了很多与证书相关的数据(默认不存在,需手动创建)

new_certs_dir :存放新证书的目录

certificate :ca的证书

serial :下一个要颁发的证书的编号(16进制数)(默认不存在,需手动创建)

crlnumber :下一个吊销证书的编号(默认不存在,需手动创建)

private_key  :私钥文件必须按规定名字命名并放到指定路径下

19-2

上图是默认是各种有效期

19-3

上图是策略的选择(optional可选、match必须匹配)

countryName           = 国家

stateOrProvinceName    = 省

organizationName       = 公司

organizationalUnitName  = 部门

commonName          = 通用名(必须填写的)填网站的域名

 

吊销证书:openssl ca -revoke 证书索引号

生成吊销列表:openssl ca -gencrl -out crl.pem

查询证书状态:openssl ca -status 证书索引名(v表示有效,r表示已经吊销)

在window中查看证书,后缀一般是crt或者cer

SSH

ssh:secure shell, protocol, 22/tcp, 安全的远程登录

具体的软件实现:

OpenSSH: ssh协议的开源实现,CentOS默认安装

两种方式的用户登录认证:

基于password

基于key

OpenSSH介绍—相关包:

openssh

openssh-clients

openssh-server

针对 ssh客户端时

ssh的配置文件:/etc/ssh/ssh_config

通过ssh输入密码连接某主机时,是记录了对方的公钥,以此来确认是本人登录,而在下次就可以不询问yes or no,其中checkhostip 便是这个询问功能(基于非对称秘钥加密)

StrictHostKeyChecking no 首次登录不显示检查提示

跳板机(堡垒机)的实现

查看在防火墙中被拉黑的ip:iptables -vnL

ssh -t ip1 ip2 通过连接主机1再连接主机2,实现跳过防火墙等阻碍

ssh wang@ip 以王的身份去登录该ip主机

基于密钥的登录方式

Ø1 首先在客户端生成一对密钥(ssh-keygen)

Ø2 并将客户端的公钥ssh-copy-id 拷贝到服务端

Ø3 当客户端再次发送一个连接请求,包括ip、用户名

Ø4 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:acdf

Ø5 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

Ø6 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

Ø7服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

 

基于密钥的认证

u(1) 在客户端生成密钥对(直接ssh-keygen即可)(-p可以后补)

ssh-keygen -t rsa [-P ”] [-f “~/.ssh/id_rsa”]

u(2) 把公钥文件传输至远程服务器对应用户的家目录(命令直接接ip即可自动复制改名)

ssh-copy-id [-i [identity_file]] [user@]host

重设私钥口令:

ssh-keygen –p

验证代理(authentication agent)保密解密后的密钥,这样口令就只需要输入一次;在GNOME中,代理被自动提供给root用户,否则运行ssh-agent bash

 

钥匙通过命令添加给代理(退出再进仍要手动启动)

ssh-add

scp命令

两种格式:

scp [options] [user@]host:/sourcefile /destpath(这是将远程文件复制到本机)

scp [options] /sourcefile [user@]host:/destpath

常用选项:

-C: 压缩数据流

-r: 递归复制

-p: 保持原文件的属性信息

-q: 静默模式

-P PORT: 指明remote host的监听的端口

rsync命令

基于ssh和rsh服务实现高效率的远程系统之间复制文件

使用安全的shell连接做为传输方式

rsync –av /etc server1:/tmp 复制目录和目录下文件

rsync –av /etc/ server1:/tmp 只复制目录下文件

比scp更快,只复制不同的文件

选项:

-n 模拟复制过程

-v 显示详细过程

-r 递归复制目录树

-p 保留权限

-t 保留时间戳

-g 保留组信息

-o 保留所有者信息

-l 将软链接文件本身进行复制(默认)

-L 将软链接文件指向的文件复制

-a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)

sftp命令

是一种交互式文件传输工具,用法和传统的ftp工具相似,是基于ssh服务实现的安全的文件上传和下载;使用ls cd mkdir rmdir pwd get put等指令,可用?或help获取帮助信息

sftp [user@]host

sftp> help

pssh命令

pssh是一个python编写可以在多台服务器上执行命令的工具,也可实现文件复制

u选项如下:

u–version:查看版本

u-h:主机文件列表,内容格式”[user@]host[:port]”

u-H:主机字符串,内容格式”[user@]host[:port]”

u-l:登录使用的用户名

u-p:并发的线程数【可选】

u-o:输出的文件目录【可选】

u-e:错误输入文件【可选】

u-t:TIMEOUT 超时时间设置,0无限制【可选】

u-O:SSH的选项

u-v:详细模式

u-A:手动输入密码模式

u-x:额外的命令行参数使用空白符号,引号,反斜线处理

u-X:额外的命令行参数,单个参数模式,同-x

u-i:每个服务器内部处理信息输出

u-P:打印出服务器返回信息

例如:

通过pssh批量关闭seLinux

u pssh -H root@192.168.1.10 -i “sed -i “s/SELINUX=enforcing/SELINUX=disabled/” /etc/selinux/config”

批量发送指令

pssh -H root@192.168.1.10 -i setenforce 0

pssh -H xuewb@192.168.1.10 -i hostname

u当不支持ssh的key认证时,通过 -A选项,使用密码认证批量执行指令

u pssh -H xuewb@192.168.1.10 -A -i hostname

u将标准错误和标准正确重定向都保存至/app目录下

u pssh -H 192.168.1.10 -o /app -e /app -i “hostname”

pscp.pssh

功能是将本地文件批量复制到远程主机

upscp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote

Pscp-pssh选项

-v 显示复制过程

-a 复制过程中保留常规属性

-r 递归复制目录

将本地curl.sh 复制到/app/目录

pscp.pssh -H 192.168.1.10 /root/test/curl.sh /app/

pscp.pssh -h host.txt /root/test/curl.sh /app/

将本地多个文件批量复制到/app/目录

pscp.pssh -H 192.168.1.10 /root/f1.sh /root/f2.sh /app/

将本地目录批量复制到/app/目录

pscp.pssh -H 192.168.1.10 -r /root/test/ /app/

pslurp.pssh

功能是将远程主机的文件批量复制到本地

upslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par][-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir] remote local(本地名)

Pslurp-pssh选项

-L 指定从远程主机下载到本机的存储的目录,local是下载到本地后的名称

-r 递归复制目录

批量下载目标服务器的passwd文件至/app下,并更名为user

pslurp -H 192.168.1.10 -L /app/ /etc/passwd user

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98912

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班