论坛风格切换
  • 12125阅读
  • 0回复

[linux服务器]服务器被test攻击 [复制链接]

上一主题 下一主题
离线云天河
 

发帖
52
金币
186
威望
36
只看楼主 倒序阅读 使用道具 楼主  发表于: 2014-09-23
关键词: Array
云主机被攻击,流量被占满了。

查看了nginx日志后,发现有个user agent头为test攻击


咨询了云主机那边有没有办法禁止非法user agent头,他们说不行,看来只得用服务器来禁了。

nginx配置文件里面加上,禁止非get/post/head请求

  1. if ($request_method !~ ^(GET|HEAD|POST)$ ) {
  2. return 444;
  3. }

不过发现这样不行,于是使用下面的方法
  1. if ($http_user_agent ~ "test") {
  2. return 403;
  3. }

于是好了,所有的请求变成403了



不过万一他改了test头怎么办呢,看来还得彻底一点,把肉鸡ip都给禁了

写了个deny_text.sh
  1. #!/bin/bash
  2. awk -F"-" '/test/ {print $1}' /usr/local/nginx/logs/access.log |sort -nr|uniq -c |sort -n|awk '{print $1"="$2}'>/home/fw/bad_ip_tmp.txt
  3. sort /home/fw/bad_ip_tmp.txt|uniq >/home/fw/bad_ip.txt
  4. DEFINE="2"
  5. for i in $(cat /home/fw/bad_ip.txt)
  6. do
  7. NUM=`echo $i |awk -F"=" '{print $1}'`
  8. IP=`echo $i|awk  -F"=" '{print $2}'`
  9. if [ $NUM -ge $DEFINE ];
  10. then
  11. iptables -L -n|grep $IP > /dev/null
  12. if [ $? -gt 0 ];
  13. then
  14. #iptables -I INPUT -s $IP -j DROP
  15. iptables -A INPUT -s $IP -p tcp --dport 80 -j DROP
  16. fi
  17. fi
  18. done

意思是从nginx日志里面找到相关的ip,把ip记录到一个文件里。

最后开启iptables,配置一下
  1. /sbin/iptables -A INPUT -s 116.100.11.206 -p tcp --dport 80 -j DROP
把这些ip加进去,禁止掉80端口的访问。




快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
提到某人:
选择好友
上一个 下一个