安全及数字认证等使用

偏重实现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

(0)
上一篇 2018-05-19 18:50
下一篇 2018-05-19 21:28

相关推荐

  • shell脚本基础知识

    1.shell脚本是一种非编译,弱类型的语言,解释型语言弱类型 不需要声明直接使用解释型 执行之时,不需编译直接执行 2.shell的作用:解释执行用户的命令;用户输入一条命令,shell就解释一条,交互式;用户事先写一个shell脚本(Script),其中有很多命令,让shell一次把这些命令执行完,而不用一条一条地敲命令,批处理(Batch ) 3.解释…

    2018-05-14
  • 进程管理

    ps top dstat iotop bg fg nohup 并行

    2018-05-05
  • 程序包编译

    程序包编译安装:Application-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作 成二进制格式的rpm包,而后再安装源代码–>预处理–>编译–>汇编–>链接–>执行源代码组织格式:多文件:文件中的代码之…

    Linux笔记 2018-04-22
  • N31-第二周作业—文件的管理

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3、请使用命令行展开功能来完成以下练习:
    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   ├── rc.d
    │   │   └── init.d
    │   └── sysconfig
    │   └── network-scripts
    ├── lib
    │   └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │   └── local
    │   ├── bin
    │   └── sbin
    └── var
    ├── lock
    ├── log
    └── run
    4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    2018-07-05
  • Linux第1-5天的基础命令。

      alias 是显示当前shell中所有别名。 我们可以将一些常用且较长的命令进行简化,就是别名。 alias 新的命令 = ‘原命令’     unalias 删除别名 -p  是查看系统中已经设置的别名   bc   是linux中的计算器语言    ^C  退出   clock 显示硬件时间 -s 使系统时间和硬件时间同…

    Linux笔记 2018-03-31