现在位置:首页 > [技术相关]网站运维日志

[技术相关]网站运维日志

陈源    2015-8-6  2898  1评论

   2016-07

发现遭遇了对CDN服务的DDos攻击,于是启用了下载pdf和ppt的强制DDos防护和防盗链措施。

对攻击者:你们这群人啊Naive。。。反正CDN不用我出钱。。。这个攻击也对我的服务没有任何影响,倒是与人斗其乐无穷

【Todo】对云南电信和江苏电信加入了黑名单,请记得提醒我之后取消这个限制。

以下为2016/07/24日志统计信息,以下IP的C段已全站全服务拉黑


# IP 次数 流量

1 114.80.188.50 6851 153.168 MB

2 115.231.45.56 2722 143.438 MB

3 116.55.252.96 3153 85.750 MB

4 115.231.38.32 3488 82.664 MB

5 119.84.11.106 3454 79.935 MB

6 119.84.11.104 3449 79.846 MB

7 61.147.89.16 2824 66.586 MB

8 61.147.94.8 2776 62.243 MB

9 61.147.94.2 2887 60.025 MB

10 112.117.217.26 3013 59.933 MB

11 61.147.94.3 2819 56.072 MB

12 119.84.11.92 3468 55.303 MB

14 222.186.19.18 2703 49.960 MB

15 222.186.19.9 2332 49.452 MB

16 112.117.217.75 1544 32.527 MB

17 112.117.217.23 1028 30.102 MB

18 222.73.133.54 1246 28.948 MB

19 222.73.133.20 813 28.228 MB

22 119.84.110.115 1083 21.909 MB


从25日日志补充:

45.118.70.*


写了个毕业资格自审,戳首页右侧链接可以发现,目前仅仅考虑了我们求生的培养方案。



   2016-03

啊。。。发现好久没更新网站了,赶紧来更新一发~

[域名]

 使用bak.qs1401.com,解析到daocloud提供的免费资源上


[折腾笔记]

  在这个要啥没啥的docker中真是折腾啊。。 。在DaoCloud提供的nginx的Docker上安装了php5:apt-get install php php-cgi php-cli php-dev php-gd -y,apt-get大法好~

  首先写好sources.list建议使用mirrors.163.com的源,替换掉原来的/etc/apt/sources.list

  Docker中很多东西都有问题,执行top说“TERM environment variable not set.” 解决方案:先运行一次export TERM=linux即可

  反弹shell(命令见下文)得到的并不是tty终端,直接top还是不行的,这时候需要top -bn 1

  为便于管理这个docker,写了一个bash循环地向我的vps反弹shell: 

 #!/bin/bash

 while true; do 

   nohup bash -i >& /dev/tcp/ip/port 0>&  #其中的ip和port改为自己的vps,主机上用nc -lvnp port

  done

[服务器]

  利用python做了一个白洪欢老师校内主页的镜像(http://10.71.45.100/bhh/),但因为老师不同意故夭折了Orz

  效果图:




使用到的技术:

  nginx设置反向代理,只有404的时候才代理,加速已缓存内容的读取分发

  Python通过代理连接到学校内网,根据用户的请求下载需要的文件,并且按照原样创建子目录保存。代码文件:bhh.py →下载

  nginx.conf中的相关片段:

location = / {
    proxy_pass http://127.0.0.1:8000;
}
location /{
    root C:/bhh_cache;#应该与python下载缓存文件夹一致
    error_page 404 = @foobar;
}
location @foobar{
    proxy_cache_key $host$uri$is_args$args;
    proxy_cache_valid 200 304 10d;
    expires 10d;
    proxy_pass http://127.0.0.1:8000;
}




2015-07

[域名]

    买下中文域名“求生1401.com” 65RMB/年

    买下英文域名“qs1401.com” 48RMB/年

    申请了qs1401.tk,zheda.tk(目前不再使用),结果被360误杀,投诉后解封

[内容]

    使用主机屋的免费空间部署emlog

    选择模板-绿色梧桐响应式模版

    发了第一篇文章“欢迎来到浙江大学求是科学班(生物)1401的网站”

    自定义文章排序、学习资料并不想显示到主页中,修改了emlog_blog表,加入一列top2(int),一列isdisplay(int默认1),修改include\controller\log_controller.php,将其中的sql语句改为$sqlSegment ='and isdisplay=1 ORDER BY top DESC ,top2 DESC,date DESC';

    为了那篇2015级的培养方案(那些课程要求的表格对齐啊,而且编辑框里面显示的效果和网页实际效果不一致啊),修改了约40次——加个空格减个空格试试,刷新一下看效果。。。

[服务器]

    想制作一个gpa.qs1401.com,购买了主机屋的付费服务(3个子域名),付费10RMB,结果发现价格变成了20RMB/月,放弃该空间并重新申请了一个免费的(目前使用www.qs1401.com/gpa)

    由于不想备案,主机屋空间需要使用韩国线路,故决定搬迁到江苏的vps上,解析test.qs1401.com,地址为test.qs1401.com:20452,受该vps的限制(没有独立ip),只能带端口访问

    www.qs1401.com还是使用主机屋免费空间,但页面就是一个iframe无缝载入test.qs1401.com:20452,原内容变为镜像站jx.qs1401.com

    开发出两个php,在主站挂了的时候可以方便地切换到备用线路(其实就是文件复制

    发现keycdn(官网https://www.keycdn.com),使用香港的服务器加速访问test.qs1401.com:20452,修改www.qs1401.com的解析为该cdn,避免了使用韩国线路造成的无法访问

    镜像站jx.qs1401.com尝试使用百度云加速,发现效果很差


2015-08

[域名]

    qs1401.com和*.qs1401.com(泛解析)都解析到191.101.10.12

    jx.qs1401.com仍然使用主机屋的免费空间,但仅仅用于跳转到qs1401.aliapp.com

    中美网络线路疑似被严重干扰,VPS访问速度太渣,于是www.qs1401.com仅仅用来做跳转到qs1401.aliapp.com

    悲催地忘记延期了,发现主机屋又恢复了发帖延期的设置,决定取消对jx.qs1401.com的解析

[服务器]

    使用keycdn后发现某些时候页面打开速度特别慢,长达十多秒,于是决定还是购买vps

    购买了Host1plus(官网:http://www.host1plus.com)的vps,3美元/月,CPU 0.5核,内存512M,访问速度还行

    选择ubuntu和lnmp一键部署,安装完成后修改了主站域名解析到该vps上

    部署了nginx绑定域名以方便打开谷歌学术,申请了Wosign免费的ssl证书:g.qs1401.com

    分析access.log日志发现大量来自杭州市阿里巴巴的攻击行为,结果是使用了阿里云的安全体检Orz...

    匹配含有关键词的某行的正则匹配符:^.*UFO.*$\n

    玩玩重启mysql,发现mysql有异常,kill进程后无法启动。。。悲催了。。。紧急把主页302重定向到test.qs1401.com:20452,php代码:<?php header("Location: http://test.qs1401.com:20452/");?>

    用apt-get install mysql后安装成功,但数据库位置不一致,把原数据库数据搬过来后发现php无法连接到mysql,解决方案:http://www.jb51.net/article/48797.htm(注意修改php.ini要改对位置);另外注意权限设置chown mysql:mysql mysql

    服务器监听80端口,如果不是www.qs1401.com就跳转至www.qs1401.com;监听20452端口以支持过去使用过的test.qs1401.com:20452(现在不再指向江苏的镜像服务器);监听443端口,提供g.qs1401.com谷歌学术的镜像站(因被Google给ban了,放弃)

    目前发现vps访问速度特别慢,于是决定做301转发到qs1401.aliapp.com,rewrite ^(.*)$ http://qs1401.aliapp.com$1 permanent;取消镜像站点的设置,再也不用管数据同步的问题咯

[内容]

    使用InstantClick技术(官网:http://instantclick.io),在用户把鼠标移动到超链接时便开始加载页面内容,加速网站访问速度。副作用很多:原使用的Lytebox、原分享功能、jQuery修改页面都失效了,还有就是访问者只要把鼠标放在了链接上就会访问量+1,修复了一下:放弃Lytebox,修改分享功能,将jQuery修改页面改为服务器端就改好

    目前由于InstantClick还存在的bug:①访问者只要把鼠标放在了链接上就会访问量+1;②页面右侧的jiathis的分享只有F5刷新才会出现,求教如何解决~

    目前手机版存在图片变形的问题,待修复。。。现在已经修复,见下文

    在主站nginx配置里面加入了404转301的代码,这样图片就没必要上传两遍了(以后编辑文章在qs1401.aliapp.com,然后只要导出数据库,导入数据库,图片不必同步啦),风险是阿里云挂了就看不到图片了,然而这样访问量数据就以镜像站为准了,不好玩。。。代码参考了stackoverflow:

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
            error_page 404 = @foobar;
            #rewrite ^(.*)$ http://qs1401.aliapp.com$1 permanent;
        }
        location @foobar{
            rewrite ^(.*)$ http://qs1401.aliapp.com$1 permanent;
        }

    测试一张图片看看ha~(此测试目前失效,不再直接使用域名www.qs1401.com,现在数据库中所有图片已经替换为cdn.qs1401.com):

    如果当前域名是www.qs1401.com,你拖动本图片在新窗口中显示会发现域名自动跳转为了qs1401.aliapp.com

    

    然后修复了早已发现的页数显示不对的问题,错误出在我修改了代码和数据库,但首页显示页数的时候文章总数是取的缓存值,而不是真正显示出来的值,方法:参考tag功能给出的代码,相关代码在include\controller\log_controller.php:$lognum = $Log_Model->getLogNum('n', $sqlSegment);

    处理了一下文章排序,分类排序也修了一下,显示分类排序也会按照我给出的权重来排

    修复了手机上图片显示变形的问题,代码在main.css加入了height:auto;


   2015-09

[服务器]

    阿里云的ACE开始收费,最低0.01RMB/h,按量收费标准:CPU 1RMB/h,内存128MB 0.01RMB/h,流量0.8RMB/1GB,具体收费策略:http://help.aliyun.com/knowledge_detail.htm?knowledgeId=6501905

    感慨于iGEM官网2015.igem.org访问速度实在太慢,于是使用nginx配置了镜像站http://igem.qs1401.com,使用了nginx的HttpSubsModule模块把所有文本内容(包括css)2015.igem.org替换为了igem.qs1401.com,参考http://www.361way.com/nginx-httpsubsmodule/2928.html,并且使用了proxy_cache。不过悲催的副作用是,https使用的ssl模块忘记了编译进去,现在不支持https访问了Orz...(现在也使用了upyun的CDN,配置nginx为只要是图片文件名后缀,就301转到cdn上)

    启用upyun的CDN服务,价格标准:流量0.29元/GB(阿里云ACE 0.8元/GB),CDN动态请求0.2 元/万次,存储费用0.0043 元/GB/天(相当于0.129元/GB/月,阿里云0.158元/GB/月),HTTPS请求0.05 元/万次

    

   2015-10

[PHP]

    百度“求生1401”收录的第一个竟然是bak.qs1401.com的镜像站,于是决定把index.php重定向到主站,代码:

if(isset($_SERVER["HTTP_REFERER"])&&(strpos($_SERVER["HTTP_REFERER"],"qs1401")===FALSE)) {
        header("Location: http://qs1401.aliapp.com/");
        die();
}

    从其它网站点击进入bak.qs1401.com,就会跳转到主站


   2015-12

[备案]

    收到阿里云的ACE说会受少部分人恶意应用的影响会阻断aliapp.com的解析,被逼得备案咯。。。心累地等了一个星期管局并没有打电话Orz...备案期间停止了一切解析

    目前中美线路太渣,已经停止对igem.qs1401.com和g.qs1401.com的支持。

    暂时把qs1401.com别名CNAME到qs1401.aliapp.com,把qs1401.aliapp.com跳转到qs1401.com,让用户习惯一下用qs1401.com访问

    备案后就可以使用国内的cdn自有域名服务了,果断cdn.qs1401.com跑起(CNAME到qs1401.b0.upaiyun.com)~



   2016-01

[域名]

    把原来的竺院学生助理报名系统的115.28.202.185改为跳转至ckc.qs1401.com

    增加一个站点binfo.qs1401.com供生物信息学导论课程提交作业,提交的作业用b.qs1401.com访问

[后端]

    整站由nginx监听80和443端口,主站全站https

    binfo.qs1401.com使用PHP统一通行证认证、文件上传、使用BAT调用sed.exe处理文件替换

    b.qs1401.com后端为apache,以受限用户运行,后端仅支持python cgi(吐槽一下效率好低的python)

[ACE]

    不再使用qs1401.aliapp.com,请更新收藏夹为https://www.qs1401.com

[安全]

    全站所有进程全部放在沙盘内部运行,并且在沙盘设置中设置了“降低管理员和超级用户组的权限”(类似与DropMyRights软件),现在即使用户上传了一句话木马,也不能执行cmd和系统级别的操作(亲测有效Orz),所有数据和进程均不能影响系统数据(似乎漏了MySQL)。

    目前的服务器架构——nginx(5个工作进程)监听80端口,PHP(xxfpm管理,5个php-cgi.exe)监听本地的8002端口,b.qs1401.com转发到Apache和PHP,Apache自身不支持PHP、支持Python cgi,并且留下一个cmd.exe负责修改nginx.conf后执行nginx -s reload。

    沙盘在设置降低权限后不能新创建cmd.exe,所以不应该关闭这个之前启动的cmd。

    另外,本站管理目录设置为需要特定的User-Agent才允许访问;全站禁止特定的UA;部分站点IP限制;主站www.qs1401.com全CDN并启用WAF。