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.秘钥交换原理
简述:密钥交换的过程
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
-
创建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
-
生成CA私钥
[root@CA ~]# cd /etc/pki/CA/ [root@CA CA]# (umask 066 ; openssl genrsa -out private/cakey.pem 2048)
-
生成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申请证书并颁发
-
为需要使用证书的主机生成私钥
[root@CA ~]# (umask 066;openssl genrsa -out /data/test/test.key 2048)
-
为需要使用证书的主机生成证书申请文件
[root@CA ~]# openssl req -new -key /data/app/app.key -out /data/app/app.csr
PS:默认三项必须和CA一致:国家、省份、组织;
-
CA颁发证书
[root@CA ~]# openssl ca -in /data/app/app.csr -out /etc/pki/CA/certs/app.crt
-
查看证书
[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
-
将证书相关文件发送到用户端使用
[root@CA ~]# cp /etc/pki/CA/certs/app.crt /data/app/
-
吊销证书
[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
-
生成证书吊销列表
[root@CA ~]# echo 001 > /etc/pki/CA/crlnumber [root@CA ~]# openssl ca -gencrl -out /etc/pki/CA/crl.pem
PS:其他
证书申请及签署步骤:
- 生成证书申请请求;
- RA核验;
- CA签署;
- 获取证书;
OpenSSL配置文件:
/etc/pki/tls/openssl.cnf
三种策略:
- match:要求申请填写的信息跟CA设置信息必须一致;
- optional:可选,跟CA设置的信息可以不一致;
- supplied:必须填写这项申请信息;