zoukankan      html  css  js  c++  java
  • 第七周练习题

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

    方法一:在awk中已经判断好并发连接数量的ip地址,传给while read执行防火墙规则封掉对应的ip。
    root@centos8 ~]# cat ddos.sh
    #!/bin/bash
    ss -nt |awk -F  '[ :]+' '/ESTAB/{ip[$(NF-2)]++}END{for(i in ip)if(ip[i]>100) print i}'|awk -F ']' '{print $1}' |while read IP;do iptables -A INPUT -s $IP -j REJECT;done

    方法二:取出ip地址并排序,if判断并发超过100的ip,并执行防火墙规则封掉对应的ip。
    root@centos8 ~]# cat deny_dos.sh
    #!/bin/bash
    LINK=100
    while true;do
    ss -nt | awk -F"[[:space:]]+|:" '/^ESTAB/{print $(NF-2)}' |tr -d "]"|sort |uniq -c|while read count ip;do
    if [ $count -gt $LINK ];then
    iptables -A INPUT -s $ip -j REJECT
    fi
    done
    done

    root@centos8 ~]##chmod +x /root/deny_dos.sh
    [root@centos8 ~]#crontab -e
    [root@centos8 ~]#crontab -l
    */10 * * * *   /root/deny_dos.sh

    2、描述密钥交换的过程

    Https秘钥交换过程

    • 客户端要访问一个网站,向支持https的服务器发起请求。

    • 客户端向服务器发送自己支持的秘钥交换算法列表。

    • 服务器选取一种秘钥交换算法加上CA证书返回给客户端。

    • 客户端验证服务器是否合法,并生成一个随机数然后用协商好的加密算法加密生成随机秘钥,并用刚才从CA证书中拿到的公钥对其加密后发送给服务器。

    • 服务器收到后用自己的私钥解密(中间人没有服务器的私钥,所以没有办法看到传输的数据,另外确认秘钥交换算法是在第一步,中间人是不知道秘钥交换算法(中间人是无法在第一步做手脚的,那等同于它自己就是一个真实客户端发起了一个新的请求,唯一一种情况攻击人有一个合法CA下发的证书,且客户端(一般为安卓设备)没有对CA下发的证书中的内容网站地址和当前请求地址做对比校验),就算攻击者有公钥,因为不知道协商协议,所以做不出来随机秘钥,顶多就是在传输过程中将报文拦截下来,乱改,但是给到服务器后,私钥是解不开乱改之后的密文的)

    • 服务器私钥解密之后,拿到对称秘钥,并且用它再加密一个信息,返回给浏览器。

    • 最关键的一步就是在客户端采用 RSA 或 Diffie-Hellman 等加密算法生成 Pre-master,这个随机秘钥是用来计算最终的对称秘钥的,用公钥加密之后攻击人是不知道这个这个随机秘钥的,只有服务器才能解的开。

    Https有可能会有中间人攻击,当然浏览器自身会对CA证书做校验,但是如果自己开发的过程中,尤其是在安卓客户端,只是验证证书是否是由CA签出来的,这个时候如果中间人也有一个从CA签出来的证书,而恰好客户端又没有做校验,那么就会被冒名顶替

    3、https的通信过程

    1. 客户端发起HTTPS请求 用户在浏览器里输入一个https网址,然后连接到服务器的443端口 2. 服务端的配置 采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。这套证书其实就是一对公钥和私钥 3. 传送服务器的证书给客户端 证书里其实就是公钥,并且还包含了很多信息,如证书的颁发机构,过期时间等等 4. 客户端解析验证服务器证书 这部分工作是有客户端的TLS来完成的,首先会验证证书是否有效,比如:颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机秘钥。然后用证书中公钥对该随机秘钥进行非对称加密 5. 客户端将加密信息传送到服务器 这部分传送的是用证书加密后的随机秘钥,目的就是让服务端得到这个随机秘钥,以后客户端和服务端的通信就可以通过这个随机秘钥来进行加密解密了 6. 服务端解密信息 服务端将客户端发送过来的加密信息用服务器私钥解密后,得到了客户端传过来的随机秘钥 7. 服务器加密信息并发送信息 服务器将数据利用随机秘钥进行对称加密,再发送给客户端 8. 客户端接收并解密信息 客户端用之前生成的随机秘钥解密服务段传过来的数据,于是获取了解密后的内容

    4、使用awk以冒号分隔获取/etc/passwd文件第一列


    [14:18:00 root@centos8 ~]#awk -F : '{print $1}' /etc/passwd
    root
    bin
    daemon
    adm
    lp
    sync
    shutdown
    halt
    mail
    operator
    games
    ftp
    nobody
    dbus
    systemd-coredump
    systemd-resolve
  • 相关阅读:
    oracle内存粒度
    知乎--软件架构设计 性能系列
    VAMEI 图解的博客
    泰晓科技
    高性能高并发系统的稳定性保障
    如何提高Linux下块设备IO的整体性能?
    Unix操作系统LD_PRELOAD简介
    浅析keepalived vip漂移原理与VRRP协议
    SQL:将查询结果插入到另一个表的三种情况
    C# Graphics中有关绘图质量的几个Mode
  • 原文地址:https://www.cnblogs.com/tanll/p/15470962.html
Copyright © 2011-2022 走看看