第七周作业

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

access_log文件在参考文档的Linux基础部分相关文件的logs目录里,网络连接数没法模拟,选择了web日志。
判断access_log文件的记录中,每5分钟内是否有IP访问次数超过100,超过则添加iptables规则拒绝;

命令执行:awk -f test.awk -F '[[ ]' -v tseconds=300 /root/access_log

如下存储为test.awk:

#!/usr/bin/awk -f
#t是设置的时间段,多长时间内涨到100次的IP算是攻击者
function basetime (t){
{
#将access_log文件中的第5列时间值处理一下,变成date -d命令能用的格式
sub(/:/," ",$5);gsub(/\//,"-",$5);
cmd=sprintf("%s\"%s\"%s","date -d ",$5," +%s");
}
{cmd|getline min;
#加上用户设置的t值(tseconds),就是这个范围的最大时间
max=min+t;
close(cmd)
return
}
}
#这个函数用于处理超过第一阶段max的时间,需要将这个新时间重新格式化,存储到min2和max2里,之后会赋值给min3和max3,用于和access_log文件中获取的$5字段的时间值进行比较
function timetrans (t,tr){
cmd2=sprintf("%s\"%s\"%s","date -d ",tr," +%s");
cmd2|getline min2;
max2=min2+t;
#strftime将"自1970年以来到min2的秒数"这个时间重新变为特定格式
min2=strftime("%d-%B-%Y %H:%M:%S",min2);
max2=strftime("%d-%B-%Y %H:%M:%S",max2); 
#打开的管道和文件最好执行关闭,否则会影响之后的二次执行的值
close(cmd2);
return;
}
#NR是pattern,函数属于action
#BEGIN部分只会在读取文件前执行一次,因此将一些创建和计算的工作放在这里
BEGIN{
"cat /root/access_log | wc -l"|getline wc;
close("cat /root/access_log | wc -l")
#这个是创建一个文件,之后用于存储达到100计数器的那些IP
{if(system("ls /root/firewallblocklist.txt &> /dev/null") != 0){
    system("touch /root/firewallblocklist.txt")}
 else{system("echo -n > firewallblocklist.txt")}
}
}

#第一行时得到一个基准时间范围用于第一阶段的比较,如果之后日志中出现一个超过max3的时间,窗口就开始滑动;
#窗口的min会滑动到超过max3的新时间,窗口的max会滑动到"新时间+tseconds"的新值
NR==1{basetime(tseconds);
min3=strftime("%d-%B-%Y %H:%M:%S",min);
max3=strftime("%d-%B-%Y %H:%M:%S",max);
}
NR>=1 && NR <= wc{sub(/:/," ",$5);gsub(/\//,"-",$5);
#如果access_log里用户发起连接的时间在这个范围内,就将计数器+1
    if ($5 >= min3 && $5 <= max3){
#计数器是以第一列IP为下标,统计其出现的次数
    count[$1]+=1;
    #到100就执行防火墙规则
        if(count[$1] == 100){
            print "ConnectionTimes between "min3" and "max3" >"$1"   "count[$1] >> "firewallblocklist.txt";
            close("firewallblocklist.txt")
            if(system("iptables -C INPUT -s "$1" -j REJECT &> /dev/null") != 0){
            system("iptables -A INPUT -s "$1" -j REJECT")}
            else{next}
        }
        else{next}
    }
    else if($5 > max3){
#这部分到else if应该都可以删掉,毕竟是劳动成果就放着了,反正也匹配不到
        if(count[$1] == 100){
        print "ConnectionTimes between "min3" and "max3" >"$1"   "count[$1] >> "firewallblocklist.txt";
        close("firewallblocklist.txt")
            if(system("iptables -C INPUT -s "$1" -j REJECT &> /dev/null") != 0){
            system("iptables -A INPUT -s "$1" -j REJECT")
            }
            else{next}
        }
        else if (count[$1] != 100){
        timetrans(tseconds,$5);
        count[$1]=0;
        max3=max2;
        min3=min2;
        }
}
}
END{
for(i in count){
print i,count[i]
}
}

1.1 执行后的结果

[root@centos8mini ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  172.16.101.197       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.16.102.29        anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.111.243       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.101.149       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.16.101.125       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.101.171       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.18.118.159       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.109.196       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.16.102.48        anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.73.73         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.107.134       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.108.6         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.101.165       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.112.9         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.111.94        anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.10.10         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.18.118.160       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.37.22         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.0.222         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.112.14        anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.108.10        anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.18.118.127       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.0.199         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.230       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.228       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.101.110       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.1.125         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.109.91        anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.0.76          anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.225       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.223       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.18.119.149       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.224       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.18.119.151       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.9.51          anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.18.119.153       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.220       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.215       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.208       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.0.227         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.65.65         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.195       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.209       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.191       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.0.144         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.205       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.194       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.0.200         anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.187       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.189       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.182       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.183       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.200       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.179       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.186       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.184       anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.0.44          anywhere             reject-with icmp-port-unreachable
REJECT     all  --  172.20.116.174       anywhere             reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@centos8mini ~]# 

2、描述密钥交换的过程

2.1 使用非对称加密方式交换

Pa(对称Key):使用接收方的公钥将对称秘钥进行加密,接收方使用自己的私钥解密后得到对称Key

2.2 使用DH算法进行秘钥交换

  1. A和B 协商生成公开的整数g=23, 大素数p=17
  2. A和B各自生成隐私数据a和b的值,其中[a(6)|b(13)] < p(17)
  3. A和B各自执行ga%p=8和gb%p=10,将计算结果发给对方
  4. A和B将接收到的gb%p和ga%p的值,再次执行[(gb%p)a]%p = 9和[(ga%p)b]%p = 9
  5. 在A和B上,相当于都执行了gab%p,这样两端就能生成出相同的值,将这个值作为对称秘钥,也就完成了秘钥的交换
[root@centos8mini ~]# g=23
[root@centos8mini ~]# p=17
[root@centos8mini ~]# a=6
[root@centos8mini ~]# b=13
[root@centos8mini ~]# echo 23^6%17|bc
8
[root@centos8mini ~]# echo 23^13%17|bc
10
[root@centos8mini ~]# echo 8^13%17|bc
9
[root@centos8mini ~]# echo 10^6%17|bc
9
[root@centos8mini ~]# 

3、https的通信过程

image.png

1、服务器端向权威机构申请证书;

2、客户端通过浏览器访问HTTPS网站时,服务器端会将证书发送给客户端,客户端会校验证书的有效性

  • 包括权威CA颁发,有效期有效等

3、如果证书有效,客户端会在浏览器中生成随机的Key,并使用证书的公钥进行加密Ps(Key)

4、服务器使用自己的私钥解开后,就能得到Key的值;

5、服务器使用这个Key对后续的传输内容进行加密,客户端则直接使用Key解密数据

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

这道题怎么和第一道题难度差这么多

awk -F: '{print $1}' /etc/passwd
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • 1、编写脚本selinux.sh,实现开启或禁用SELinux功能 1.1 提示输入参数方式 [root@cent...
    一心1977阅读 245评论 0 0
  • 1、自建yum仓库,分别为网络源和本地源 一。配置网络源 首先用rpm安装autofs包 (用于神秘文件夹 /...
    N45080阅读 353评论 0 0
  • 基础命令 为了在 sudo 中设置权限提升,您需要编辑 sudoers 文件。 你不应该直接编辑文件,而是使用:s...
    米开朗基乐阅读 1,885评论 0 5
  • 1、编写脚本selinux.sh,实现开启或禁用SELinux功能 read -p "please input c...
    Gustav_man阅读 99评论 0 0
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,032评论 0 4