纯手工打造每一篇开源资讯与技能干货,数十万程序员和Linuxer已经关注。
导读
闲来无事,登岸服务器,发现有个IP不绝的推测路径、试图往服务器上传文件(木马)。
于是查察了之前的日记,无奈鄙站被攻击者盯上了,不绝的有差别的IP试图上传木马。看来暴徒还是有的。由于不想让鄙站沦为肉鸡,以是就想写个简单的脚本,来制止攻击者的IP访问。
攻击者:
195.154.216.165--[28/Nov/2015:23:10:40+0800]"POST/wp-content/themes/twentyten/404.phpHTTP/1.1"40427"HTTP/1.1"404564"https://www.z-dig.com/11m.php""Mozilla/4.0(compatible;MSIE9.0;WindowsNT6.1)""-"195.154.216.165--[28/Nov/2015:23:10:41+0800]"POST/yanyu/?q={${eval%28$_POST[u]%29}}HTTP/1.1"4041569"https://www.z-dig.com/11m.php""Mozilla/4.0(compatible;MSIE9.0;WindowsNT6.1)""-"195.154.216.165--[28/Nov/2015:23:10:42+0800]"POST/ztxxw/Images/images.aspHTTP/1.1"4041569"https://www.z-dig.com/11m.php""Mozilla/4.0(compatible;MSIE9.0;WindowsNT6.1)""-"
[root@z-digwww]#grep'195.154.216.165'2015-11-28.access.log|wc-l[root@z-digwww]#
[root@z-digwww]#curlipinfo.io/195.154.216.165;echo''{"ip":"195.154.216.165","hostname":"fr.07.gs","city":"","region":"","country":"FR","loc":"48.8600,2.3500","org":"AS12876ONLINES.A.S."}[root@z-digwww]#
法国的哥们竟然试了180多次!辛劳了。
用shell和定时任务来实现吧。_
网站跑在Nginx上,以是可以利用Nginx的Deny来拒绝攻击者的IP访问。
那么思绪就出来了,定期(五分钟或非常钟)获取攻击者的IP,将IP放入到黑名单(Nginx设置文件),并reload使其见效。
由于前期规划的比力好,网站的访问日记放在了一个指定的目次,Nginx的错误日记也放在了一个指定的目次。网站的访问日记逐日举行切割。Nginx的错误日记没有举行切割。
下面就是我的思绪和操纵步调:
通过Nginx的错误日记(为什么不利用访问日记)来获取攻击者的IP。之前没有对Nginx的错误日记举行定时切割,为了方便统计攻击者的IP以是,编写脚本并参加定时任务,使错误日记每小时切割一次,而且每小时对黑名单文件举行清空。
错误日记切割、清空黑名单脚本:
[root@z-digs]#catrotate-nginx-error-logs.sh#!/bin/bash#Rotatenginxerrorlogsandcleanblockip'sconfigurefile#Nginxpidfile:/application/nginx/logs/nginx.pid#Nginxerrorlogsdirectory:/data/logs/nginx#BlockIp'sconfigurefile:/application/nginx/conf/website/blockip.conf#Defaultlogname:error.log#Author:Mr.Zhou#E-mail:zhou@z-dig.comNGX_PID=/application/nginx/logs/nginx.pidNGINX_CMD=/application/nginx/sbin/nginxLOGS_DIR=/data/logs/nginxLOG_NAME=error.logBLOCK_IP_FILE=/application/nginx/conf/website/blockip.confcd$LOGS_DIR/usr/bin/rename$LOG_NAME$(/bin/date+%F-%H-d"lasthour").$LOG_NAME$LOG_NAME/bin/kill-USR1$(cat$NGX_PID)$BLOCK_IP_FILE$($NGINX_CMD-sreload)[root@z-digs]#
获取攻击者IP脚本:
该脚本从Nginx的错误日记中统计出高出20次试图推测路径或上传文件的IP,并将这些IP参加到Nginx的设置文件。如有新增长的IP则reloadNginx使设置文件见效,若没有新增IP则不举行reload。
[root@z-digs]#catblock-ip.sh#!/bin/bash#Author:Mr.Zhou#Email:zhou@z-dig.com#Website:https://www.z-dig.com#blockipERR_LOG=/data/logs/nginx/error.logBLOCK_IP_FILE=/application/nginx/conf/website/blockip.confBLOCKED_IP=/dev/shm/blocked-ip.txtBLOCK_IP=/dev/shm/block-ip.txtNGINX_CMD=/application/nginx/sbin/nginx/bin/cp$BLOCK_IP_FILE$BLOCKED_IP/bin/sed-nr's#.*[^0-9](([0-9]+.){3}[0-9]+).*#1#p'$ERR_LOG|/bin/awk'{IP[$1]++}END{for(iinIP)printIP[i],i}'|/bin/awk'{if($120)print"deny"$2";"}'$BLOCK_IP/bin/grep-v-f$BLOCK_IP_FILE$BLOCK_IP$BLOCK_IP_FILE$($NGINX_CMD-sreload)[root@z-digs]#
将拒绝指定IP访问的设置文件(黑名单)单独存放,并在nginx主设置文件中include进去。
[root@z-digconf]#grepblockip.confnginx.confincludewebsite/blockip.conf;[root@z-digconf]#
blockip.conf文件格式如下:
[root@z-digwebsite]#catblockip.confdeny195.154.211.220;deny195.154.188.28;deny195.154.188.186;deny180.97.106.161;deny180.97.106.162;deny180.97.106.36;deny195.154.180.69;deny195.154.211.26;deny221.229.166.247;deny180.97.106.37;deny195.154.216.164;deny195.154.216.165;[root@z-digwebsite]#
将脚本放入定时任务实行:
每小时对Nginx的错误日记举行切割而且清空一次被拒绝访问IP的设置文件,若不清空的话,此IP将终生不能访问,若它再次攻击则会再次进入黑名单,_。清空下令放在了切割脚本的尾部。
可以本身决定统计频率,根据指定的频率实行脚本,获取攻击者的IP,若此IP已经在黑名单中,则会忽略掉(由于错误日记一小时切割一次,以是在一小时内会出现重复的IP)。然后把剩下的新攻击者的IP追加到黑名单。并reloadNginx。若没有新增的攻击者IP则什么都不做。
[root@z-dig~]#crontab-l#rotatenginxlogeveryday0000***/bin/bash/application/s/rotate-nginx-logs.sh/dev/null#rotatenginxerrorlogeveryhourandcleantheblockipfile00*/1***/bin/bash/application/s/rotate-nginx-error-logs.sh/dev/null#checkhacker'sipeverytenminutes*/10****/bin/bash/application/s/block-ip.sh/dev/null[root@z-dig~]#
以下是脚本运行一段时间的攻击者IP
[root@z-dig~]#cat/application/nginx/conf/website/blockip.confdeny195.154.211.220;deny195.154.188.28;deny195.154.188.186;deny180.97.106.161;deny180.97.106.162;deny180.97.106.36;deny195.154.180.69;deny195.154.211.26;deny221.229.166.247;deny180.97.106.37;deny195.154.216.164;deny195.154.216.165;[root@z-dig~]#
过段时间,再列出一份黑名单IP,看是否有变革。
[root@z-dig~]#cat/application/nginx/conf/website/blockip.confdeny195.154.188.224;[root@z-dig~]#curlipinfo.io/195.154.188.224;echo''{"ip":"195.154.188.224","hostname":"195-154-188-224.rev.poneytelecom.eu","city":"","region":"","country":"FR","loc":"48.8600,2.3500","org":"AS12876ONLINES.A.S."}[root@z-dig~]#grep'195.154.188.224'/data/logs/nginx/error.log|wc-l[root@z-dig~]#grep'195.154.188.224'/data/logs/nginx/error.log|grep-v'accessforbidden'|wc-l[root@z-dig~]#[root@z-dig~]#tail-n1/data/logs/nginx/error.log2015/11/3010:47:53[error]30754#0:*37828accessforbiddenbyrule,client:195.154.188.224,server:www.z-dig.com,request:"GET/HTTP/1.1",host:"www.z-dig.com",referrer:"https://www.z-dig.com"[root@z-dig~]#
看来多少还是管点用的。一共accessforbiddenbyrule了102-24=78次。
得当的改改脚本,生存黑名单的汗青数据,定期将大于1000的IP直接放入iptables!
原文来自:https://www.ttlsa.com/nginx/nginx-deny-ip-access/
本文地点:https://www.linuxprobe.com/nginx-deny-ip-access.html编辑:杨鹏飞,考核员:岳国帅
让您学习到的每一节课都有所劳绩
《Linux就该这么学》是由资深运维专家刘遄及天下多名红帽架构师(RHCA)基于最新RHEL7体系共同编写的高质量Linux技能自学教程,极其适实用于Linux技能入门教程或讲课辅助讲义。
?刘遄老师QQ:5604241微信:gnu_chuan
?学员助教QQ:5604674
?Linux技能交换A群(满):560843
?Linux技能交换B群:340829
?Linux技能交换C群:463590
?Linux技能交换D群:915246(新群,火热加群中……)
?官方站点:www.linuxprobe.com
?电脑在线阅读结果更佳:
https://www.linuxprobe.com/chapter-00.html
按住图片3秒,即可主动关注。
点击左下角查察更多热门技能
本文链接:https://addon.ciliseo.com/220v-ci-li-zuan-dian-lu-tu-220v-ci-li-zuan-kai-guan-zen-yang-jie-xian.html
网友评论
ajtenyitdv
回复230v磁力钻电路图清晰易懂,开关接线简单高效。
lblwzkmdh
回复20v磁力钻电路图清晰易懂,开关接线简单方便,高效稳定的工作表现值得信赖!
aqueblwyc
回复上文缺少具体的问题,所以我不能直接提供答案,如果您能描述需要我解答的具体问题是什么领域(例如科学、数学或者其他类),或指明一道特定的题目或者直接的一个事情的发生等情况造成的过程和行为之间的逻辑关系等细节信息的话我会很乐意帮助您进行简短回答的创作!
jyjlwg
回复20v磁力钻电路图清晰易懂,开关接线简单高效。