运维

Linux宝塔环境下WordPress防CC攻击方法

MarginNote 3 - Mac端PDF阅读批注工具 激活码价格:¥69.00
赤友 NTFS for Mac 助手 -  磁盘硬盘格式读写软件注册激活码价格:¥35.00
虫洞 -  iPhone安卓投屏操控 电脑手机多屏协同,价格:¥45.00
namesilo全网最便宜域名注册商,输入折扣码:nsilo20立减1美元!

攻击者借助代理服务器生成指向受害主机的合法请求,实现DDOS和伪装就叫:CC(ChallengeCollapsar)。Linux宝塔环境下WordPress防CC攻击方法

1.Nginx优化:Nginx没有过多的优化,一般Nginx会都被php拖死。
2.宝塔中Nginx自带的防火墙防护效果并不理想。
3.php优化:服务器挂掉基本都是php进程太多导致的。NginxWeb服务,php是工作程序。Linux宝塔环境下WordPress防CC攻击方法4.如图解析最少15个人在厂里,最多50个人同时干活,如果有35个人以上没干活就开除掉。
5.根据CPU核数设定起始进程数和最小空闲,这样可以发挥正常状态的最大优势,加快处理速度 设置为15*核数 ,即1核15进程,双核30进程。
6.根据内存设置最大进程,防止出现内存爆炸,导致fpm挂起或者mysql等其他服务挂逼。设置为1G*(40-50),即1G内存40-50,2G内存80-100。
7.设置上面两项可以更有效率的使用服务器。
8.如上设置并不能防止CC攻击,但是为我接下来需要说的提供了前提。

采用redis高性能数据库,合理的访问策略验证并在超大攻击时开启验证码访问,让网站远离CC攻击。
1.安装Redis,在宝塔软件管理找到,安装;
2.安装php Redis扩展,选择您程序使用的对应php安装扩展,装错不发起到作用;
3.在网站入口,如WordPressindex.php头部加入如下代码:

header('Content-Type: text/html; charset=UTF-8'); //原有代码,复制下列代码放在下面
 //CC攻击停止后会尽快解除验证码,回到正常状态
 //防CC配置$IPmax = 30; //开启验证码条件 值>=php最大进程数,适当设置更大会降低验证码触发条件,但会增大502错误几率(php挂起) 
 $IPfor = 60; //周期 这个值基本不用动
 $IPban = 60; //扔入黑名单 60秒内访问超过60次即拉黑IP
 $banTime = 3600*24; //黑名单时长 扔小黑屋时长,这种代理IP放一天感觉都少了 = =!
 $ip = ip();
 //连接本地的 Redis 服务$redis = new Redis();$redis->connect('127.0.0.1', 6379);
 //拦截黑名单if($redis->exists($ip.'ban')){
	exit('您被关进了小黑屋,podipod软库网丨www.podipod.com');}
 //扔黑名单检测if($redis->get($ip.'ok') >= $IPban){
	$redis->setex($ip.'ban', $banTime, '1');}
 if($redis->exists($ip.'ok')){
	$redis->incrby($ip.'ok',1); //记录IP 自增1}else{
	$redis->setex($ip.'ok',$IPfor,1);}
 //按需开启防CC 小黑屋IP不会触发该条件,所以当一段时间以后就会解除验证码。除非攻击者换一批代理继续攻击。如此往复if(count($redis->keys("*ok")) > $IPmax){
	//验证
	if($_COOKIE['key'] == ''){
		if($_GET['cc']){
			$key = md5($ip.$_GET['cc']);
			setcookie("key",$key);
		}
	}
	//拦截代码
	if($_COOKIE['key'] && $_COOKIE['cc'] && $_COOKIE['key'] == md5($ip.$_COOKIE['cc'])){
		//通过
	}else{
		if($_GET['cc']){
			$key = md5($ip.$_GET['cc']);
			setcookie("key",$key);
		}else{
			$cc = rand(1000,9999);
			setcookie("cc",$cc);
			//这里只是简单的构造了一下验证码,有能力可以自己更改的更安全和完美。
			echo '<!DOCTYPE html>
			<html>
			<body>
			<form action="">请输入:'.$cc.' :<input type="text" name="cc" value=""><input type="submit" value="继续访问"></form> 
			<p>访问异常,请输入验证码。</p>
			</body>
			</html>';
		}
		exit();
	}}function ip() {
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $ip = getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    $res =  preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
    return $res;}
(1)

本文由 podipod软库网 作者:DevOps 发表,转载请注明来源!

关键词:, , ,
ToDesk - 安全好用流畅远程控制软件 替代TeamViewer,价格:¥108.00
Eagle - 图片收集管理必备软件 激活码价格:¥119.00
PDF Expert 2 - Mac上优秀的PDF阅读编辑工具,价格:¥119.00

热评文章

发表评论