1、解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
服务端:环境准备
[root@centos8-0 ~]
[root@centos8-0 ~]
[root@centos8-0 ~]
> <html>
> <h1>
> Is Works.
> </h1>
> </html>
> EOF
客户端:环境准备
[root@centos6-0 ~]
rz waiting to receive.
[root@centos6-0 ~]
flood_connect.c
[root@centos6-0 ~]
gcc-4.4.7-23.el6.x86_64
[root@centos6-0 ~]
客户端发起DOS攻击
[root@centos6-0 ~]
Starting flood connect attack on 10.0.101.80 port 80
此时在服务端查看主机连接数,显示有大量来自于10.0.101.60主机的连接
[root@centos8-0 ~]
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
ESTAB 0 0 10.0.101.80:22 10.0.101.1:49515
ESTAB 0 36 10.0.101.80:22 10.0.101.1:49510
LISTEN 129 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
ESTAB 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:50382
ESTAB 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:49440
SYN-RECV 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:49802
ESTAB 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:49982
ESTAB 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:49674
SYN-RECV 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:49924
ESTAB 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:49396
ESTAB 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:49506
ESTAB 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:50176
ESTAB 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:50366
SYN-RECV 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:49816
SYN-RECV 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:49860
ESTAB 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:50256
ESTAB 0 0 [::ffff:10.0.101.80]:80 [::ffff:10.0.101.60]:50416
... ...
[root@centos8-0 ~]
679
编写脚本
[root@centos8-0 ~]
ss -ant | awk '{print $5}' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq -c | while read COUNT IP;do
if [ $COUNT -ge 100 ];then
iptables -A INPUT -s $IP -j REJECT
fi
done
脚本给执行权限
[root@centos8-0 ~]
编写任务计划
[root@centos8-0 ~]
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
*/5 * * * * /root/flood_connect_check.sh
隔五分钟后查看iptables状态
[root@centos8-0 ~]
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1940 119K REJECT all -- * * 10.0.101.60 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2、描述密钥交换的过程
对称加密 特性: 加密、解密使用同一个密钥,效率高 将原始数据分割成固定大小的块,逐个进加密 缺点: 密钥过多 密钥分发 数据来源无法确认 常用的加密算法: DES:数据加密标准,56bit 3DES:加密3次DES AES:高级的加密标准,128,192,256bit Blowfish,Twofish IDEA,RC6,CAST5 密钥传输过程:
-
Alice通过密钥对数据进行加密,加密成密文之后传输给互联网另一方Bob; -
Bob收到加密的数据之后也使用相同的密钥对数据进行解密,得到原始数据;
非对称加密
非对称加密:密钥是成对出现的
? 公钥(public key):公开给所有人,主要给别人加密使用
? 私钥(private key):自个保存,必须保证私密性,用于自己加密签名
特点:
? 用公钥加密数据,只能使用与之配对的私钥解密,反之亦然
功能:
? 数据加密:适合加密较小的数据,如:加密对称密钥
? 数字签名:主要用在让接收方确认发送方身份
缺点:
? 密钥长,算法复杂
? 加密解密效率低下
常见算法:
? RSA:运行变长密钥的公共密钥算法,可实现加密和数字签名
? DSA:数字签名算法,是一种标准数字签名标准
? ECC:椭圆曲线密码编码学,比RSA加密算法使用更小的密钥,提供相当的或更高等级的安全
加密传输过程:(数据安全)
-
Alias使用Bob的公钥对数据加密,生成密文发送给Bob;(接收方的公钥加密) -
Bob收到Alias发来的使用Bob的公钥加密的密文数据后,使用自己私钥对数据进行解密,得到原始数据;(接收方使用自己的私钥解密)
数字签名传输过程:(数据来源确认)
- Alias使用自己的私钥加密得到加密的数据;
- Bob使用Alias的公钥对加密的数据解密,确认来源是Alias发来的;
哈希Hash
哈希算法:也称为散列算法,将任意数据缩小成固定大小的“指纹”,称为digest,即摘要
特性:
? 任意长度输入,固定长度输出
? 若修改数据,指纹也会改变,且有雪崩效应,数据的微小改变,生成的指纹值变化非常大
? 无法从指纹中重新生成数据,即不可逆,具有单向性
功能:
? 数据完整性检查
常见的算法:
? md5:128bit
? sha1:160bit
? sha224
? sha256
? sha384
? sha512
常用工具:
? md5sum | sha1sum [–check] file
? openssl,gpg
? rpm -V
传输过程: 综合加密和签名
方法一:
- 发送者使用Hash算法计算得出摘要,然后使用使用私钥作签名,得出结果附加数据,再使用接收者的公钥加密传输给接收者;
- 接收者首先拿自己的私钥解开,得到签名和数据,使用发送者的公钥解开数字签名,得到里面的摘要信息,然后使用相同的哈希算法对数据进行计算得出摘要信息和解开数字签名得到的摘要信息作比对,比对一致,说明数据未篡改,不一致,说明数据在传输过程中被篡改。
方法二:
- 发送者使用Hash算法计算得出hash摘要,然后使用使用私钥作数字签名,得出结果附加至数据后面,使用对称密钥加密数据和数字签名,用接收者的公钥加密对称密钥附加到数据后面传输给接收者;
- 接收者首先拿自己的私钥解开得到对称密钥,解开对称密钥,得到数字签名和数据,使用发送者的公钥解开数字签名得到hash摘要,然后使用相同的hash算法对数据计算得到hash摘要和解开的hash摘要比对,比对一致,说明数据未篡改,不一致,说明数据在传输过程中被篡改。
DH密钥交换
? 由惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(MartinEdward Hellman)在1976年发表
? 它是一种安全协议,让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥,这个密钥一般作为“对称加密”的密钥而被双方在后续数据传输中使用。 ? DH数学原理是base离散对数问题。做类似事情的还有非对称加密类算法,如:RSA。 ? 其应用非常广泛,在SSH、VPN、Https…都有应用,勘称现代密码基石
实现过程:
- 发送者和接收者协商成两个数字,g(公开的整数),p(大素数,(质数被1和自身整除))
- 发送者和接收者各生成隐私数据a,b(不公开),生成的隐私数据a,b必须小于p,
- 计算得出g^a%p,得出结果发送给接收者
- 接收者g^b%p,得出的结果发送给发送者
- 发送者收到g^b%p的结果后,通过计算[(g^b%p)^a]%p = g^ab%p,生成为密钥;
- 接收者收到g^a%p的结果后,通过计算[(g^a%p)^b]%p = g^ab%p,生成为密钥;
范例:
g=23
p=5
A:a=6
g^a%p=23^6%5=4
[(g^b%p)^a]%p=2^6%5=4
B:b=15
g^b%p=23^15%p=2
[(g^a%p)^b]%p=4^15%5=4
3、https的通信过程
1.客户端发起HTTPS请求 用户在浏览器里输入一个https网址,然后连接到服务器的443端口。 2.服务端的配置 采用HTTPS协议的服务器必须要有一套数字证书,(可以自己制作或者向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面)这套证书其实就是一对公钥和私钥。 3.传送服务器的证书给客户端 证书里其实就是公钥,并且还包含了很多信息,如:证书的颁发机构,有效期等。 4.客户端解析验证服务器证书 这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,如:颁发机构,有效期等,如果发现有问题,则会弹出一个警告栏,提示证书存在问题,如果证书没问题,那么就生成一个随机值。然后用证书中公钥对该随机值进行非对称加密。 5.客户端将加密信息传送服务器 这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。 6.服务端解密信息 服务端将客户端发送过来的加密信息用服务器私钥解密后,得到了客户端传过来的随机值。 7.服务端加密信息并发送信息 服务器将数据利用随机值进行对称加密,再发送给客户端。 8.客户端接收并解密信息 客户端用之前生成的随机值解密服务端传过来的数据,于是获取了解密后的内容。
4、使用awk以冒号分隔获取/ettc/passwd文件第一列
[root@centos8-0 ~]
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
systemd-coredump
systemd-resolve
tss
polkitd
unbound
sssd
sshd
liuxiaofu
tcpdump
postfix
chrony
[root@centos8-0 ~]
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
systemd-coredump
systemd-resolve
tss
polkitd
unbound
sssd
sshd
liuxiaofu
tcpdump
postfix
chrony
|