• 售前

  • 售后

热门帖子
入门百科

通过awk和shell来限制IP多次访问之学不会你打死我

[复制链接]
爱晚风愁制 显示全部楼层 发表于 2022-1-15 10:27:40 |阅读模式 打印 上一主题 下一主题
学不会你打死我

今天我们用shell脚本,awk工具来分析日志来判断是否存在扫描器来进行破解网站密码——限制访问次数过多的IP地址,通过Iptables来进行限制。代码在末尾
首先我们要先查看日志的格式,分析出我们需要筛选的内容,日志的内容在**/var/log/文件下,这次我们分析的是访问HTTP的日志,该目录在/var/log/httpd/access_log**

根据一分钟之内的访问量来判断访问量。利用awk的特点我们可以分析出,时间在第四列,IP地址在第一列,由于我们要根据一分中之内
的访问次数来限制IP,所以我们要设置时间变量来控制时间。
然后通过awk进行日志筛选来选择出符合条件的IP。
最后通过Iptables对符合要求的IP地址进行设置,使其拒绝访问;
这是我们自己搭建的一个web服务器


我们对网页进行连续访问,然后在日志中出现记录


然后我们开启shell脚本


shell脚本立即执行,并且打印出起始时间和结束时间

我们查看我们的lalala文件


可以看出该IP对网页进行了24次访问,我们的ip.txt文件中记录符合条件(一分钟访问次数超过10次)的IP地址。


基于ip.txt文件中IP地址,使用Iptables来进行拒绝访问80和443端口


到此,就结束了。

shell脚本代码如下:
  1. #!/bin/bash
  2. logfile=/var/log/httpd/ #定义物理路径
  3. start_time=`date -d"1 minutes ago" +"%d/%m/%Y:%H:%M:%S"` #设置时间格式,"%d天/%m月/%Y年:%H时:%M分:%S秒"
  4. echo $start_time  #打印出起始时间
  5. last_time=`date +"%d/%m/%Y:%H:%M:%S"` #设置结束时间
  6. echo $last_time #打印出结束时间
  7. sed -i 's/Jan/01/g' $logfile/access_log  #由于date读出的时间为01与日志时间中Jan格式不同,所以通过sed来将Jan替换为01,通过-i进行文件修改
  8. tac $logfile/access_log | awk -v st="$start_time" -v et="$last_time" '{t=substr($4,2);if(st<=t && t<=et){print $1}}'| uniq -c | sort -nr >> $logfile/lalala #tac将文件倒序输出,然后通过awk -v设置变量,来判断它与起始时间和结束时间来判断符合条件的IP地址,由于awk的第四列打印出来时格式为‘[13/Jan/2022:22:19:46’ 与 起始时间的格式不匹配,所以我们通过或substr()函数来进行截取,然后经过uniq 去重;-c进行统计,sort 排序,然后将符合条件的IP地址和访问的次数,写入lalala文件中;
  9. line=`cat $logfile/lalala | awk '{if($1 > 10)print $2}'`  #通过判断访问的次数来进行限制,第一列为访问的次数,第二列为IP,通过awk进行筛选;
  10. for ip in $line
  11. do
  12. echo $ip >> $logfile/ip.txt
  13. done    #通过for语句将符合条件的IP地址打印出来输入至ip.txt文件中;
  14. ip_1=`cat $logfile/ip.txt`
  15. for i in $ip_1
  16. do
  17. iptables -t filter -I INPUT -p tcp -s $i -m multiport --dport 80,443 -j DROP
  18. done #通过iptables功能将IP进行拒绝访问
复制代码
来源:https://blog.caogenba.net/m0_53183117/article/details/122486277
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作