No.MN55-week9DOS攻击案例秘钥交换过程HTTPS通信原理私有证书创建

2021-7-12

1.DOS攻击生产案例

案例:解决DOS攻击生产案例,根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。

脚本:实现攻击阻止

#!/bin/bash
#
#**********************************
# Author:      whr
# Date:        2021-06-29
# FileName:    networkattack.sh
# Url:         http://www.wade.com
# Copyright(C):2021All rights reserved
#*********************************
#
log=/home/mymonitor.log
[ -f ${log} ] || touch ${log}

#
# def: add ip in the iptables
#
add_iptables(){
    while read line;do
    ip=$(echo ${line} | awk '{print $2}')
    count=$(echo ${line} | wc -l)
    if [ ${count} -gt 100 ] && [ $(iptables -L -n | grep "${ip}" | wc -l) -lt 1 ];then
    iptables -A INPUT -s ${ip} -j REJECT
    echo "${line} is dropped" >> /tmp/droplist.log
    fi
    done < ${log}
}

#
# def: main interface
#
main(){
    while true;do
    ss -an | grep EST | awk '{print $(NF-1)' | awk -F '[:]' '{print $1}' | sort | uniq -c > ${log}
    add_iptables
    sleep 300
    done
}

main

2.秘钥交换原理

简述:密钥交换的过程
No.MN55-week9DOS攻击案例秘钥交换过程HTTPS通信原理私有证书创建

1. 客户端向服务器发起HTTPS请求;客户端并向服务器发送自己支持的秘钥交换算法列表;
2. 服务器选取一种秘钥交换算法加上CA证书返回给客户端;
3. 客户端验证服务器合法性,并生成一个随机数用协商好的加密算法加密生成随机秘钥,并用从CA证书中拿到的公钥对其加密后发送给服务器;
4. 服务器收到后用自己的私钥解密;
5. 服务器私钥解密之后,拿到对称秘钥,并且用它再加密一个信息,返回给浏览器;

3.HTTPS通信原理

简述:https的通信过程

1. 客户端发起HTTPS请求;浏览器输入https网址,连接到服务器的443端口;
2. 服务器端配置一套数字证书(包含一对公钥和私钥);
3. 传送服务器的证书给客户端;提供公钥,即证书颁发机构,过去时间等;
4. 客户端解析验证服务器发送的证书;验证服务器公钥的有效性,如果有异常弹出警告,没问题就生成一个随机数,用证书中公钥对该随机数进行非对称加密;
5. 客户端将加密信息传送给服务器;让服务器对加密的随机数和客户端进行加密解密实现通信;
6. 服务器端解密信息;通过客户端发送的加密信息用私钥解密后,得到客户端发送的随机数;
7. 服务器加密信息并发送;服务器利用随机数进行对称加密,再发送给客户端;
8. 客户端接受并解密信息;客户端用之前生成的随机解密服务器传来的数据,获取解密后的内容;

4.私有CA证书

案例:创建私有CA并进行证书申请。

4.1创建私有CA

  1. 创建CA所需要的文件

    #CentOS8 生成证书索引数据库文件
    [root@CA ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts,private}
    [root@CA ~]# touch /etc/pki/CA/index.txt
    #指定第一个颁发证书的序列号
    [root@CA ~]# echo 001 > /etc/pki/CA/serial
    
  2. 生成CA私钥

    [root@CA ~]# cd /etc/pki/CA/
    [root@CA CA]# (umask 066 ; openssl genrsa -out private/cakey.pem 2048)
    
  3. 生成CA自签名证书

    #国家代码:https://country-code.cl/
    
    #交互式生成自签名证书
    [root@CA ~]# openssl req -new -x509 -key private/cakey.pem -days 3650 -out 
    
    #非交互式生成自签名证书
    [root@CA ~]# openssl req -utf8 -newkey rsa:1024 -subj "/C=CN/ST=beijing/L=haidian/0=mgn55=n55/CN=www.cnblogs.com" -keyout app.key -nodes -x509 -days 3650 -out app.crt
    

4.2申请证书并颁发

  1. 为需要使用证书的主机生成私钥

    [root@CA ~]# (umask 066;openssl genrsa -out /data/test/test.key 2048)
    
  2. 为需要使用证书的主机生成证书申请文件

    [root@CA ~]# openssl req -new -key /data/app/app.key -out /data/app/app.csr
    

    PS:默认三项必须和CA一致:国家、省份、组织;

  3. CA颁发证书

    [root@CA ~]# openssl ca -in /data/app/app.csr -out /etc/pki/CA/certs/app.crt
    
  4. 查看证书

    [root@CA ~]# cat /etc/pki/CA/certs/app.crt
    [root@CA ~]# openssl x509 -in /etc/pki/CA/certs/app.crt -noout -text
    #已颁发证书
    [root@CA ~]# cat /etc/pki/CA/index.txt
    #下一个证书编号
    [root@CA ~]# cat /etc/pki/CA/serial
    #查看证书有效性
    [root@CA ~]# openssl ca -status 01
    
  5. 将证书相关文件发送到用户端使用

    [root@CA ~]# cp /etc/pki/CA/certs/app.crt  /data/app/
    
  6. 吊销证书

    [root@CA ~]# openssl ca -revoke /etc/pki/CA/newcerts/01.pem
    [root@CA ~]# cat /etc/pki/CA/index.txt
    [root@CA ~]# openssl ca -status 01
    
  7. 生成证书吊销列表

    [root@CA ~]# echo 001 > /etc/pki/CA/crlnumber
    [root@CA ~]# openssl ca -gencrl -out /etc/pki/CA/crl.pem
    

PS:其他

证书申请及签署步骤:

  1. 生成证书申请请求;
  2. RA核验;
  3. CA签署;
  4. 获取证书;

OpenSSL配置文件:

/etc/pki/tls/openssl.cnf

三种策略:

  1. match:要求申请填写的信息跟CA设置信息必须一致;
  2. optional:可选,跟CA设置的信息可以不一致;
  3. supplied:必须填写这项申请信息;
上一篇:二进制方式搭建Kubernetes集群


下一篇:Kubernetes 1.20.4 HA集群搭建基于[Ubuntu]&Rancher HA部署