月度归档:2013年08月
关于一例子cpu100%的处理方法
背景:
一家网站,帝国程序CMS,网站发布内容数据较多,症状是8核心cpu常常都满载
top 查看的情况是 php-cgi 进程满载,判断可能是1)访问量大或者被攻击,2)php代码问题
网站经过CDN,按理说,不应该造成大量的访问,出现问题完全是php代码访问造成,
本来服务器运行的是 spawn-cgi 来启动的php-cgi进程 , 后来改为php-fpm 也仍然是cpu满载,判断问题在php程序,开启 php-fpm 的slow.log 功能,把运行缓慢的php代码,记录起来,立刻发现了问题!!!
根据slow.log 的情况,发现是一些更新网页代码,被当作 script 脚本 在网页里面,而那个更新脚本运行缓慢,当大量用户来的时候,造成了cpu满载,经过更换脚本名称,cpu立刻下降到正常水平。
解决方案:
把一些更新操作用linux的定时任务去完成,从而避免了放到网页里面。
查找log里面,访问非图片的最多ip的方法
tail -n 10000 access.log | egrep -vi "GET .*\.gif|\.jpg|\.png|\.css" | awk '{print $1}' | sort | uniq -c | sort -rn | head -n 20
过滤字符串中图片的规则
grep “\.jpg|\.gif|\.png”
要想使用包含模式匹配字 +, ?, |, (, 和 ) 中的一个扩展模式,需要用 反斜线
grep “.\+\?\([a-Z]|[0-9]\)
呵呵,挺复杂
cpanel 命令行操作修改用户密码
cpanel 修改用户密码的方法 ,参考
http://geeksterminal.com/change-cpanel-password-command/
具体命令如下:
export ALLOW_PASSWORD_CHANGE=1
/scripts/chpass username password
/scripts/ftpupdate
介绍一款好用的javascript日历脚本
apache allow deny 的备忘
web服务器日志的选择性记录
关于最近网络攻击防护的总结
一些服务器出问题,如服务器死机,如网站瘫痪,如被挂木马
整体思路是 如果正在攻击的服务器,就查看当前的 webserver 的log ,根据特征进行屏蔽
有的是 user-agent 一致 有的是 ip 一致,有的是 refer 一致
apache的相应设置可以做如下调整
BrowserMatchNoCase 特征1 bad_bot BrowserMatchNoCase 特征2 bad_bot Order Deny,Allow Deny from env=bad_bot 可以写到 .htaccess 或者配置文件里面 关于特征字串有几点要说的 就是括号和加号 需要加\ 斜线 比如 "Mozilla/5.0 \(compatible; Googlebot/2.1; \+http://www.google.com/bot.html\)" 才可以 同样也可以用rewrite 方法来对付这些 RewriteCond %{HTTP_USER_AGENT} "特征串1" RewriteRule ^(.*)$ http://127.0.0.1 RewriteCond %{HTTP_USER_AGENT} "特征串2" RewriteRule ^(.*)$ http://127.0.0.1 用的参数很多 http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond
针对对特定user-agent 的apahce,nginx攻击的防护
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} “^特征字符串正则表达式$”
RewriteRule ^(.*)$ http://127.0.0.1
nginx 的配置如下
if ( $http_user_agent = “特征串”) { return 444; };
或者
if ( $http_user_agent ~* “特征串”) { return 444; }
注意特征串如果这正则情况下 斜线 / 括号 () 都是要加斜线的