网站被攻击?通过禁止IP频繁访问防止网站被防攻击

网站被攻击,不要过度惊慌失措,先查看一下网站服务器是不是被黑了,如果发现某个ip访问网站太频繁了就加入到黑名单禁止访问,这不是一个很好的办法,但情急之下向不更好的解决方式,只是权宜之计,以后再进行深入的研究一下。

这个方法总结为一句话就是:通过禁止IP频繁访问防止网站被防攻击

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

header('Content-type: text/html; charset=utf-8');

$ip=$_SERVER['REMOTE_ADDR'];//获取当前访问者的ip

$logFilePath='./log/';//日志记录文件保存目录

$fileht='.htaccess2';//被禁止的ip记录文件

$allowtime=60;//防刷新时间

$allownum=5;//防刷新次数

$allowRefresh=120;//在允许刷新次数之后加入禁止ip文件中

  

if(!file_exists($fileht)){

  file_put_contents($fileht,'');

}

$filehtarr=@file($fileht);

if(in_array($ip."\r\n",$filehtarr)){

  exit('警告:你的IP已经被禁止了!');

}

//加入禁止ip

$time=time();

$fileforbid=$logFilePath.'forbidchk.dat';

if(file_exists($fileforbid)){

  if($time-filemtime($fileforbid)>30){

    @unlink($fileforbid);

  }else{

    $fileforbidarr=@file($fileforbid);

    if($ip==substr($fileforbidarr[0],0,strlen($ip))){

      if($time-substr($fileforbidarr[1],0,strlen($time))>120){

        @unlink($fileforbid);

      }else if($fileforbidarr[2]>$allowRefresh){

        file_put_contents($fileht,$ip."\r\n",FILE_APPEND);

        @unlink($fileforbid);

      }else{

        $fileforbidarr[2]++;

        file_put_contents($fileforbid,$fileforbidarr);

      }

    }

  }

}

//防刷新

$str='';

$file=$logFilePath.'ipdate.dat';

if(!file_exists($logFilePath)&&!is_dir($logFilePath)){

  mkdir($logFilePath,0777);

}

if(!file_exists($file)){

  file_put_contents($file,'');

}

$uri=$_SERVER['REQUEST_URI'];//获取当前访问的网页文件地址

$checkip=md5($ip);

$checkuri=md5($uri);

$yesno=true;

$ipdate=@file($file);

foreach($ipdate as $k=>$v){

  $iptem=substr($v,0,32);

  $uritem=substr($v,32,32);

  $timetem=substr($v,64,10);

  $numtem=substr($v,74);

  if($time-$timetem<$allowtime){

    if($iptem!=$checkip){

      $str.=$v;

    }else{

      $yesno=false;

      if($uritem!=$checkuri){

        $str.=$iptem.$checkuri.$time."\r\n";

      }else if($numtem<$allownum){

        $str.=$iptem.$uritem.$timetem.($numtem+1)."\r\n";

      }

      else{

        if(!file_exists($fileforbid)){

          $addforbidarr=array($ip."\r\n",time()."\r\n",1);

          file_put_contents($fileforbid,$addforbidarr);

        }

        file_put_contents($logFilePath.'forbided_ip.log',$ip.'--'.date('Y-m-d H:i:s',time()).'--'.$uri."\r\n",FILE_APPEND);

        $timepass=$timetem+$allowtime-$time;

        exit('警告:不要刷新的太频繁!');

      }

    }

  }

}

if($yesno){

  $str.=$checkip.$checkuri.$time."\r\n";

}

file_put_contents($file,$str);


那么如何使用高防来帮助网站防御DDOS攻击呢

1.隐藏网站源站ip提供安全性

隐藏源站服务器IP地址。cdn域名解析只针对解析记录值,不针对源服务器IP,从而隐藏源服务器IP地址。cdn可以多个高防节点可抵御大规模流量攻击,拦截并清洗大量的流量,减少因为流量攻击对业务造成的影响。高防CDN对外露出的是各网络节点的ip地址段,利用CDN网络节点IP实现对源站的业务转发,攻击者没法根据业务交互获得真实的用户源站,进而确保了源站的安全性。

2.高防cdn的防御机制

根据不同的攻击类型进行调整高防防护策略,以此更有效的拦截清洗攻击,把攻击对网站的影响降低。

3.缓存加速能力好

cdn本身可以就近抓取缓存文件,可以根据DNS智能解析来实现调度,还可以对业务网站中的静态数据资源进行提速,还可以对动态、静态资源的加速分发减少源服务器带宽消耗。速度提高啦,体验度增强,节省运营成本。

DDoS攻击防御方法

过滤不必要的服务和端口:可以使用Inexpress、Express、Forwarding等工具来过滤不必要的服务和端口,即在路由器上过滤假IP。只开放服务端口成为目前很多服务器的流行做法,例如WWW服务器那么只开放80而将其他所有端口关闭或在防火墙上做阻止策略。

异常流量的清洗过滤:通过DDOS硬件防火墙对异常流量的清洗过滤,通过数据包的规则过滤、数据流指纹检测过滤、及数据包内容定制过滤等顶尖技术能准确判断外来访问流量是否正常,进一步将异常流量禁止过滤。单台负载每秒可防御800-927万个syn攻击包。

分布式集群防御:这是目前网络安全界防御大规模DDOS攻击的有效办法。分布式集群防御的特点是在每个节点服务器配置多个IP地址(负载均衡),并且每个节点能承受不低于50G的DDOS攻击,如一个节点受攻击无法提供服务,系统将会根据优先级设置自动切换另一个节点,并将攻击者的数据包全部返回发送点,使攻击源成为瘫痪状态。

高防智能DNS解析:高智能DNS解析系统与DDOS防御系统的完美结合,它颠覆了传统一个域名对应一个镜像的做法,智能根据用户的上网路线将DNS解析请求解析到用户所属网络的服务器。同时智能DNS解析系统还有宕机检测功能,随时可将瘫痪的服务器IP智能更换成正常服务器IP。

当发生DDOS攻击时,网络监控系统会侦测到网络流量的异常变化并发出报警。在系统自动检测或人工判断之后,可以识别出被攻击的虚拟机公网IP地址。这时高防CDN调用系统的防DDOS攻击功能将恶意攻击阻挡下来。

你可能感兴趣的:(安全,web安全)