WEB站点攻防指南(一):wordpress应对基于404请求的CC攻击

最近几个月,网站访问量和爬虫索引量都有所增加,随之而来的服务器压力问题也与日剧增。经常出现,一大早收到阿里云停服通知的事。

目前本博客使用的是阿里云的虚拟空间(万网被阿里收购的那部分业务),虽说访问量有所增加,但也没达到一个月被停站4次的强度。

根据发生的时间点(凌晨1点到5点左右),初步推断是因为爬虫爬取频率太高。便更新了rebots.txt的规则:除了几个知名的爬虫(谷歌、百度等),其他全部禁止。——当然,如果遇到流氓爬虫,他们是根本不在乎rebots.txt规则的。

不过,网站还是时不时的被停服,安装并配置了“All In One WP Security”插件,随后通过这个插件发现网站有大量地账号注册行为,造成数据库暴增。幸好“All In One WP Security”有套比较完善的防机器注册的防护功能,这样,大量注册账号的攻击算是被拦截住了。同时,通过这个插件的防火墙和黑名单机制,设置了恶意IP访问地拦截功能,但收效甚微,每天都会有大量404的访问日志。——起初以为404只是消耗流量,并没有十分关注,只是定期地给黑名单里添加一些恶意IP。

好景不长,没几天,网站还是被攻停了。几次联系阿里云技术人员,排查了些恶意IP(当时发现了大量阿里云的IP,要么是安全检测的IP,要么是肉鸡),也没起到理想效果。在又一次停服后,我不得不降低了百度的抓取频次,起了几天左右,最后还是被停服了。——至此,阿里云一个月四次的启动机会被用完了。距离下个月还有十几天~😭

继续阅读WEB站点攻防指南(一):wordpress应对基于404请求的CC攻击

网站杂病诊疗

预防第一

  1. 启用缓存+静态化,减少重复计算的开销;
  2. 配置CDN加速,把静态资源的压力分摊;
  3. 隔离敏感资源(管理后台、备份文件、日志文件、安装入口等)的访问,防止DOS攻击;
  4. 全站静态化+DNS智能解析,把不同线路的流量分摊到不同服务器上;

预警第二

  1. 设置阀门预警,关注DDOS攻击;
  2. 定期分析日志(流量、404等),及时发现恶意UA和IP;
  3. 及时更新UA黑名单和IP黑名单,阻断后续的攻击;

急诊第三

  1. 闭站保护(这点阿里云做得很好,一天给关了两次😂);
  2. 及时止损(七牛的融合CDN不会自动停止服务,需要在收到预警后,人工干预——把异常IP加入黑名单或者停用服务);
  3. 以恶制恶,在被攻击的现场,把域名解析到127.0.0.1或者192.168.1.1或者网警的IP;

使用apache反向代理cpanel,实现后端服务器隐藏

一、应用场景

a) 后端服务器

cpanel 虚拟主机。

网站的ip访问路径如:http://192.168.88.27/~mydomain/

b) 前端服务器

可以进行apachevhost配置与反向代理配置的服务器,如:vps

本文使用ubuntu server 14/16作为前端服务器。要绑定的域名如:mydomain.com

二、安装apache

a) 登陆服务器并更新系统库

sudo apt-get update
sudo apt-get dist-upgrade

以上两个命令需要等待一段时间执行完成。

b) 安装并启动apache

sudo apt-get install apache2 #安装apache服务
sudo service apache2 restart

c) 安装所需的apache模块

cd /etc/apache2/mods-available/
a2enmod vhost_alias xml2enc #安装vhost模块
a2enmod proxy* #安装所有的代理模块
a2enmod rewrite #安装重写模块,用于301重定向
sudo service apache2 restart

三、配置apache vhost与反向代理

a) 绑定域名的vhost配置

比如要绑定的域名为mydomain.com,后端cpanel网站的访问路径为http://192.168.88.27/~mydomain/

cd /etc/apache2/sites-enabled/
sudo vim mydomain.com.conf #需要熟悉vim的基本用法

进行如下配置,按【i】键进入编辑模式左下角会提示INSERT

<VirtualHost *:80>
   ServerAdmin webmaster@mydomain.com
   DocumentRoot "/var/www/"
   ServerName www.mydomain.com

#反向代理配置
ProxyPass  / http://192.168.88.27/~mydomain/
ProxyPassReverse  / http://192.168.88.27/~mydomain/

#cookie的代理
ProxyPassReverseCookieDomain 192.168.88.27 www.mydomain.com
ProxyPassReverseCookiePath  /~mydomain/ /

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
   ServerAdmin webmaster@mydomain.com
   DocumentRoot "/var/www/"
   ServerName mydomain.com

#301重定向
RewriteEngine On  
RewriteRule ^/(.*)$ http://www.mydomain.com/$1 [R=301,L] 

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

b) 重启apache

sudo service apache2 restart

c) 域名解析

把域名mydomain.comwww.mydomain.com解析到前端服务器的公网ip上。

阿里云主机发布wordpress网站

一、登陆阿里云主机后台,获取主机信息并修改主机的环境参数

a) 获取阿里云主机的ftp账号与数据库账号

b) 修改云主机的php版本

c) 启动云主机的php的模块

二、通过ftp工具把wordpress程序进行上传

a) 通过ftp工具(我用的flashfxp连接云主机 继续阅读阿里云主机发布wordpress网站