安全及数字证书
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
certs :放证书的
crl_dir :放证书吊销列表
database :索引文件、数据库,其中包含了很多与证书相关的数据(默认不存在,需手动创建)
new_certs_dir :存放新证书的目录
certificate :ca的证书
serial :下一个要颁发的证书的编号(16进制数)(默认不存在,需手动创建)
crlnumber :下一个吊销证书的编号(默认不存在,需手动创建)
private_key :私钥文件必须按规定名字命名并放到指定路径下
上图是默认是各种有效期
上图是策略的选择(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