1、堡垒机
1.1 堡垒机(跳板机 jump server)
堡垒机又称为跳板机,英文是Jump server
是一种特殊的计算机系统,它位于网络的边缘,通常用于控制和监控对关键系统的访问。堡垒机的主要作用是提供一个安全的访问点,以减少未经授权的访问和潜在的安全风险。它们通常用于访问服务器、数据库和其他关键的网络资源。
跳板机的关键特性包括:
- 访问控制:确保只有授权用户才能通过跳板机访问内部资源。
- 会话监控:记录所有会话活动,以便进行审计和监控。
- 身份验证和授权:通常需要用户进行身份验证,并根据用户权限限制访问。
- 隔离:跳板机可以隔离内部网络和外部访问者,减少直接暴露的风险。
- 安全协议:支持多种安全协议,如SSH、RDP等,以确保数据传输的安全。
跳板机在企业网络中扮演着重要的角色,特别是在需要远程访问内部资源的场景中。通过使用跳板机,企业可以更好地控制访问权限,提高网络的安全性。
VPN:virtual private network
虚拟私人网络
堡垒机的作用:可以提供验证、分配权限、安全设置
2、CA证书
CA证书,全称为证书颁发机构(Certificate Authority)证书,是一种由可信的第三方机构颁发的数字证书。CA证书的主要作用是验证网络通信双方的身份,确保数据传输的安全性和完整性。
2.1 获取证书的两种方法
-
自签名证书:自己签发自己的公钥
-
使用证书授权机构:
- 生成证书请求(csr):自己申请(csr是申请证书的文件)
- 将证书请求csr发送给CA:将申请包发给CA机构,申请表里有自己的相关基础信息
- CA签名颁发证书:CA机构发证书给你
小拓展:https
HTTPS 协议:就是"HTTP 协议"和"SSL/TLS 协议"的组合。HTTP over SSL 或 HTTP over TLS ,对http协议的文本数据进行加密处理后,成为二进制形式传输
2.2 X.509证书协议
X.509:定义了证书的结构以及认证协议标准
- 版本号
- 序列号
- 签名算法
- 颁发者
- 有效期限
- 主体名称
3、openssl 命令
3.1 openssl 简介
-
两种 运行模式
- 交互模式
- 批处理模式:命令+选项
-
三种 子命令
- 标准命令
- 消息摘要命令
- 加密命令:调用哪种算法加密
只有一个主程序:/usr/bin/openssl
3.1.1 使用openssl 实现对称加密
工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc命令:帮助:man enc
- 加密:
-e
js
[root@7-2 data]# vim a.txt
hello
[root@7-2 data]# cat a.txt
hello
[root@7-2 data]# openssl enc -e -des3 -a -salt -in a.txt -out a.txt.enc
enter des-ede3-cbc encryption password:123123
Verifying - enter des-ede3-cbc encryption password:123123
[root@7-2 data]# ls
a.txt a.txt.enc
[root@7-2 data]# cat a.txt.enc //后缀.enc是加密文件
U2FsdGVkX1+kEGRIiig/qvumhLE2lL56
- 解密:
-d
js
[root@7-2 data]# openssl enc -d -des3 -a -salt -in a.txt.enc -out b.txt //解密,将a.txt.enc文件,解密为b.txt文件
enter des-ede3-cbc decryption password:123123
[root@7-2 data]# ls
a.txt a.txt.enc b.txt
[root@7-2 data]# cat b.txt
hello
3.1.2 使用 openssl 命令 生成加密密码
js
openssl passwd -6 123 //-6也是一种加密算法,centos7不支持,centos8和ubuntu支持。
示例:加密密码
- Ubuntu上加密
js
[root@ubuntu2204 ~]#openssl passwd -6 123
$6$l/5Abyy023t/abIm$yFoURoFsdYbXmYxRtqm0p4mgGlFiZSk7Z1tJQq3BMUnCoqWMDGa0FEKAICJMIM5LgQb.0ptEU1vxEcG8VwNQL.
- 新建用户
js
[root@ubuntu2204 ~]#useradd -p `openssl passwd -6 123` cxk
- 查看
js
[root@ubuntu2204 ~]#getent shadow cxk
cxk:$6$u4qW23G1NSs9jLkU$LYtXj/3EGNQE64/5bd1TRq65r.ZPxs9410.E81FbgJbNNIhctVZQPdreuGyqhxspQbm9G4Dnhj/p8UyIcPQfV1:19943:0:99999:7:::
3.1.3 生成随机密码
js
openssl rand -base64 9 //-base64是输出格式。-base64后面跟的是字节的长度,长度必须要是3的倍数,不然就会出现等号。
小拓展:nginx中怎么升级openssl
3.2 建立私有CA 实现证书申请颁发
3.2.1 证书申请及签署步骤:
1、生成证书申请请求
2、RA核验
3、CA签署
4、获取证书
3.2.2 配置文件详解
openssl
的配置文件:/etc/pki/tls/openssl.cnf
js
[root@7-2 CA]# pwd
/etc/pki/CA //存放CA机构证书
[root@7-2 CA]# tree
.
├── certs //存放用户的证书
├── crl
├── newcerts //存放用户的证书
└── private //存放用户私钥
4 directories, 0 files
js
vim /etc/pki/tls/openssl.cnf
36 [ ca ]
37 default_ca = CA_default //默认ca
38
42 dir = /etc/pki/CA //ca机构的总目录
43 certs = $dir/certs //存放证书
44 crl_dir = $dir/crl //证书吊销列表
45 database = $dir/index.txt //所有用户的证书的数据库索引,存放用户证书的相关信息 默认文件不存在,需要手动新建,但是不需要手写。类似于证书的列表!!!
48 new_certs_dir = $dir/newcerts //存放新证书的
50 certificate = $dir/cacert.pem //The CA certificate ca的自签名证书
51 serial = $dir/serial //The current serial number 证书编号,编号必须是两位,比如1号就是01
52 crlnumber = $dir/crlnumber //the current crl number 吊销证书的编号
54 crl = $dir/crl.pem //The current CRL 吊销证书存放的目录
55 private_key = $dir/private/cakey.pem //The private key 私钥位置
73 default_days = 365 //how long to certify for 默认证书的有效期
74 default_crl_days= 30 //how long before next CRL
75 default_md = sha256 //use SHA-256 by default
76 preserve = no //keep passed DN ordering
3.2.3 三种策略
match
:要求申请填写的信息跟CA设置信息必须一致optional
:可有可无,跟CA设置信息可不一致supplied
:必须填写这项申请信息
js
[ policy_match ]
85 countryName = match //国家
86 stateOrProvinceName = match //州或者省
87 organizationName = match //公司名称
88 organizationalUnitName = optional //公司部门名称
89 commonName = supplied
90 emailAddress = optional
95 [ policy_anything ]
96 countryName = optional
97 stateOrProvinceName = optional
98 localityName = optional
99 organizationName = optional
100 organizationalUnitName = optional
101 commonName = supplied
102 emailAddress = optional
3.3 建立私有CA 实操:
- 创建CA所需要的文件及文件夹
js
[root@7-2 CA]# touch /etc/pki/CA/index.txt //索引。生成证书索引数据库文件
[root@7-2 CA]# echo 01 > /etc/pki/CA/serial //证书列表。指定下一个颁发证书的序列号 必须是01 有格式要求
[root@7-2 CA]# ls /etc/pki/CA/
#若无 默认文件夹需要单独新建
certs crl index.txt newcerts private serial
- 生成证书私钥
有两种方法:
- 方法一:一条命令搞定,生成私钥,并且修改权限
js
cd /etc/pki/CA/
(umask 066; openssl genrsa -out private/cakey.pem 2048) //用genrsa生成加密的私钥文件,名称是cakey.pem,2048是长度,越长越安全。小括号的作用是:只针对命令行,不会影响当前环境
- 方法二:分步骤,先生成私钥,再修改权限
js
[root@localhost CA]# openssl genrsa -out private/cakey.pem 2048
Generating RSA private key, 2048 bit long modulus
....................................................+++
.......................................................................+++
e is 65537 (0x10001)
[root@localhost CA]# ll private/
总用量 4
-rw-r--r--. 1 root root 1675 8月 8 23:50 cakey.pem
[root@localhost CA]# chmod 600 private/cakey.pem
[root@localhost CA]# ll private/
总用量 4
-rw-------. 1 root root 1675 8月 8 23:50 cakey.pem
- 生成CA自签名证书
js
[root@7-2 CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN //国家
State or Province Name (full name) []:jiangsu //省
Locality Name (eg, city) [Default City]:nanjing //市区
Organization Name (eg, company) [Default Company Ltd]:kgc //公司名字
Organizational Unit Name (eg, section) []:it //部门
Common Name (eg, your name or your server's hostname) []:www.cxk.com //域名
Email Address []: //邮箱可以为空
[root@7-2 CA]# ls
cacert.pem certs crl index.txt newcerts private serial //cacert.pem就是生成的证书,后缀可以加上证书的后缀名.crt
#拆解命令:
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem
#拆解说明:
-new:生成新证书签署请求
-x509:专用于CA生成自签证书 协议x509
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径,规定是在/etc/pki/CA/下面
小拓展:证书解密
js
[root@7-2 CA]# openssl x509 -in cacert.pem -noout -text //解码
3.4 用户申请证书
- 生成私钥 (一般以key结尾) 私钥
- 利用生成的私钥 生成 证书申请文件(一般csr文件) csr
- 生成证书文件(一般以crt结尾) crt
- 建立私钥
js
[root@localhost data]#mkdir /data/app1
[root@localhost data]#openssl genrsa -out /data/app1/app1.key 2048
Generating RSA private key, 2048 bit long modulus
...........................................+++
...............................................................................................................................................................................................................+++
e is 65537 (0x10001)
[root@localhost data]#chmod 600 /data/app1/app1.key
(umask 066;openssl genrsa -out /data/app1/app1.key 2048)
- 生成证书申请文件
js
[root@localhost data]#openssl req -new -key /data/app1/app1.key -out /data/app1/app1.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:jiangsu
Locality Name (eg, city) [Default City]:suzhou
Organization Name (eg, company) [Default Company Ltd]:kgc
Organizational Unit Name (eg, section) []:it
Common Name (eg, your name or your server's hostname) []:www.kgc.cn
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
- 颁发证书
js
[root@localhost data]#openssl ca -in /data/app1/app1.csr -out /etc/pki/CA/certs/app1.crt -days 1000
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Aug 8 16:58:52 2024 GMT
Not After : May 5 16:58:52 2027 GMT
Subject:
countryName = CN
stateOrProvinceName = jiangsu
organizationName = kgc
organizationalUnitName = it
commonName = www.kgc.cn
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
FB:49:A4:0C:16:C6:FF:AC:86:BB:7E:21:99:BE:3E:69:2C:B9:B8:41
X509v3 Authority Key Identifier:
keyid:1F:DD:EC:E0:8E:A8:CB:C5:66:45:5D:AE:67:B5:69:6A:1A:08:5C:13
Certificate is to be certified until May 5 16:58:52 2027 GMT (1000 days)
Sign the certificate? [y/n]:
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@localhost data]#cat /etc/pki/CA/index.txt
V 270505165852Z 01 unknown /C=CN/ST=jiangsu/O=kgc/OU=it/CN=www.kgc.cn
[root@localhost data]#cat /etc/pki/CA/serial
02
- 验证证书是否有效
js
[root@localhost data]#openssl ca -status 01
Using configuration from /etc/pki/tls/openssl.cnf
01=Valid (V)
V 代表有效
01 证书编号
[root@localhost data]#openssl ca -status 2
Using configuration from /etc/pki/tls/openssl.cnf
Serial 02 not present in db.
Error verifying serial 2!
[root@localhost data]#sz /etc/pki/CA/certs/app1.crt