网络攻击时有发生,
TCP洪水攻击、注入攻击、DOS等
比较难防的有DDOS等
数据安全,防止对手爬虫恶意爬取,封禁IP
一般就是封禁ip
linux server的层面封IP:iptables
nginx的层面封IP ,方式多种 (但 req还是会打进来, 让nginx 返回 403, 占用资源)
Nginx作为网关,可以有效的封禁ip
单独网站屏蔽IP的方法,把include xxx; 放到网址对应的在server{}语句块,虚拟主机
所有网站屏蔽IP的方法,把include xxx; 放到http {}语句块。
nginx配置如下:
http{
# …
include blacklist.conf;
}
location / {
proxy_pass http://lbs;
proxy_redirect default;
}
#blacklist.conf目录下文件内容
deny 192.168.159.2;
deny 192.168.159.32;
./nginx -s reload #重新加载配置,不中断服务
拓展-自动化封禁思路
编写shell脚本
AWK统计access.log,记录每秒访问超过60次的ip,然后配合nginx或者iptables进行封禁
crontab定时跑脚本
接下来后面就是关于实际真实云主机(基于宝塔面板的环境)编写的shell脚本
blacklist.sh
(之前所写的脚本存在问题,现在已重新修改)
#!/bin/bash
Access_File=/www/wwwlogs/qjuke.com.log
Info_File=/www/wwwlogs/ddos_check.log
Blacklist=/www/server/nginx/conf/blacklist.conf
#从日志上获取短时间内的访问量
awk ‘{hotel[$1]++}END{for(pol in hotel)print pol,hotel[pol]}’