Recently in LJAMP Category

解决php soap wsdl error一例

| No Comments | No TrackBacks

备忘,查了半天:
客户在访问我提供的WebService(预定义,即WSDL模式)的时候,在Linux服务器上运行example的时候是ok的,但是在他的windows开发机上运行失败。
报了俩错:
WARNING是I/O warning : failed to load external entity,
FATAL ERROR是: Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL:Couldn't load from 'somewhere' in somefileStack trace: #0 somefile: SoapClient->SoapClient('https://tg.qq.c...', Array) #1 {main} thrown in somefile on line 

官方文档说requirements是GNOME Xml Library, 就是libxml必须高于2.5.4
但是实际上WSDL的SoapClient还必须加载cURL模块,如果服务端是https,则还需要加载openssl模块
在windows下就是需要php_curl.dll和php_openssl.dll, curl同时依赖于libeay32.dll, ssleay32.dll, openssl依赖于libeay32.dll

accesslog中好玩的一些东西

| 1 Comment | No TrackBacks

闲的无聊看自己的access log, 发现几条好玩的记录:

61.143.61.81 - - [18/May/2010:04:37:04 +0800] "GET /cert/bazs.cert HTTP/1.0" 404 212 "-" "Mozilla/4.0"
222.81.81.128 - - [21/May/2010:13:26:05 +0800] "GET /cert/bazs.cert HTTP/1.0" 404 212 "-" "Mozilla/4.0"
202.101.104.125 - - [22/May/2010:07:46:02 +0800] "GET /cert/bazs.cert HTTP/1.0" 404 212 "-" "Mozilla/4.0"

cert/bazs.cert 是宫刑部的爬虫么?

============华丽的分割线============

63.220.4.250 - - [23/May/2010:00:20:51 +0800] "GET /include/dialog/zhmnselect_soft_post.php HTTP/1.1" 404 237 "-" "Mozilla/4.0"
63.220.4.250 - - [23/May/2010:00:20:51 +0800] "GET /include/dialog/select_soft_post.php HTTP/1.1" 404 233 "-" "Mozilla/4.0"

select_soft_post.php 是dedeCMS5.5中的文件, 貌似是有个页面变量未初始化的bug...

============终于是个大陆的爬虫了============

218.65.59.6 - - [23/May/2010:04:17:17 +0800] "GET /pgjxupfile.htm HTTP/1.1" 404 212 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:18 +0800] "GET /upfile.htm HTTP/1.1" 404 208 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:18 +0800] "GET /upfile.htm HTTP/1.1" 404 208 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:18 +0800] "GET /cvqwupfile_adpic.asp HTTP/1.1" 404 218 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:19 +0800] "GET /upfile_adpic.asp HTTP/1.1" 404 214 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:19 +0800] "GET /upfile_adpic.asp HTTP/1.1" 404 214 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:19 +0800] "GET /edyzupfile_article.asp HTTP/1.1" 404 220 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:20 +0800] "GET /upfile_article.asp HTTP/1.1" 404 216 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:20 +0800] "GET /upfile_article.asp HTTP/1.1" 404 216 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:20 +0800] "GET /uzafupfile_flash.asp HTTP/1.1" 404 218 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:21 +0800] "GET /upfile_flash.asp HTTP/1.1" 404 214 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:21 +0800] "GET /upfile_flash.asp HTTP/1.1" 404 214 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:21 +0800] "GET /ewpqupfile_photo.asp HTTP/1.1" 404 218 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:22 +0800] "GET /upfile_photo.asp HTTP/1.1" 404 214 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:22 +0800] "GET /upfile_photo.asp HTTP/1.1" 404 214 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:22 +0800] "GET /nrdrupfile_soft.asp HTTP/1.1" 404 217 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:23 +0800] "GET /upfile_soft.asp HTTP/1.1" 404 213 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:23 +0800] "GET /upfile_soft.asp HTTP/1.1" 404 213 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:23 +0800] "GET /kypxupload.asp HTTP/1.1" 404 212 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:24 +0800] "GET /upload.asp HTTP/1.1" 404 208 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:24 +0800] "GET /upload.asp HTTP/1.1" 404 208 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:24 +0800] "GET /axwwupload_Dialog.asp HTTP/1.1" 404 219 "-" "Mozilla/4.0"
218.65.59.6 - - [23/May/2010:04:17:25 +0800] "GET /upload_Dialog.asp HTTP/1.1" 404 215 "-" "Mozilla/4.0"
 

global-htags安装备忘

| No Comments | No TrackBacks

os: ubuntu 9.04
htags: 5.6.1 (apt-get install global)

运行global-htags(manual)生成html文件时,提示缺少文件

htags: skeleton file '/usr/share/gtags/global.cgi.tmpl' not found.

除了global.cgi.tmpl之外,还缺少bless.sh.tmpl和style.css, 这三个文件没有打包。
详细地址参见: http://cvs.savannah.gnu.org/viewvc/global/global/htags/
而gtags本身已经废弃了,所以需要创建gtags目录
mkdir -p /usr/share/gtags/
wget http://cvs.savannah.gnu.org/viewvc/*checkout*/global/global/htags/global.cgi.tmpl.in
wget http://cvs.savannah.gnu.org/viewvc/*checkout*/global/global/htags/bless.sh.tmpl
wget http://cvs.savannah.gnu.org/viewvc/*checkout*/global/global/htags/style.css

懒得下载的话,自行编译也可以 -_-#!

==========分割线==========

htags页面搜索提示500 International Error

在Apache2的ErrorLog提示Premature End of Script Headers, 解决办法是:
将HTML/cgi-bin/global.cgi第一行的 #! @PERL@ 改成 #!/usr/bin/perl

如果搜索时提示Error: Tag file (GTAGS) not found. 需要检查GPATH, GRTAGS, GSYMS, GTAGS四个文件是否在HTML的同级目录

==========分割线==========

遗憾的是: htags在php方面只支持php4, 未表明支持php5, 似乎是对php的oo没有支持

==========分割线==========

windows下的sshfs client

| No Comments | No TrackBacks

sshfs是基于GNU/Linux和fuse的软件,大家都很熟悉,不熟悉可以参考这里.

sshfs一般都是在Linux上使用, 但是sshfs client有一个windows实现, 名叫dokan. 官方网站说支持xp, vista和2k3。一般来说win7下使用兼容模式可以跑legacy程序,不幸的是dokan不行.  兼容模式可以运行,但是没法读取,CPU全满。在2k3下dokan倒是跑的挺好.

--------

要不是samba协议没法在公网跑...实在是不想折腾sshfs@windows这种不靠谱的玩意啊

关于bash的history

| No Comments | No TrackBacks

bash history的格式
.bash_history默认是只有操作命令,没有操作时间
abs说跟history相关的有一个$HISTTIMEFORMAT(Bash Ver >= 3.0)
通过设置HISTTIMEFORMAT可以实现操作时间的记录
如果设置了HISTTIMEFORMAT这个变量,history就会记录下命令操作时的timestamp并写入history
给HISTTIMEFORMAT赋值会使执行history自动格式化出时间
HISTTIMEFORMAT仅仅用于history显示,记录到文件的始终是timestamp
HISTTIMEFORMAT的格式参照man strftime, ubuntu需要装manpages-dev,centos貌似都带

history不实时保存, 容量和多控制台操作保存问题
以下内容扔bashrc还是profile看个人习惯了, 记得export就好
shopt -s histappend
PROMPT_COMMAND='history -a'

清除.bash_history

暴力的方法是: history -c
不暴力的方法是: 先vim fakefile, 进去之后:vsp .bash_history, 保存了也看不到vim在操作.bash_history
至于.bash_history的最后修改时间,也不是没有办法,再说谁在意呢?

统计No.10
history | awk '{CMD[$2]++ ;count++ ;}END {for (a in CMD) print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n 10

安装Companion.JS

| No Comments | No TrackBacks

Companion.JS@IE ~= Firebug@Firefox

安装Companion.JS之前需要安装Microsoft Script Debugger

Microsoft Script Debugger for XP , 2k, 2k3, NT下载地址

eclipse的vim风格插件

| 1 Comment | No TrackBacks

eclipse的vim插件有:
免费的VimPluginVrapper,收费的viPlugin
VimPlugin需要gvim的支持, 但是使用的时候发现gvim loading非常的慢,而且貌似只能启用一个vim like编辑窗口, 非常的不好用不稳定, eclipse3.5死了好多次
Vrapper比较的不错,但是貌似不支持command line? %s替换都不能,不过command提示在编辑器的下方,比viPlugin在窗口的最下方,感觉好很多。
Vrapper和VimPlugin默认都是网络安装, Vrapper网络安装的时候会提示There are no categorized items, 需要点击取消Group items by category才能显示

viPlugin很好用, 很赞, 没有网络安装...破解的话写入Xq@a*4到/PATH_TO_ECLIPSE_ROOT/viPlugin.license即可

putty/pietty使用PublicKey登录openSSH

| No Comments | No TrackBacks

PuTTYgen下载地址: Putty Download Page
生成一对公钥私钥,保存
将公钥导入到目标主机的~/.ssh/authorized_keys

点击Options的Connection
Data中填入用户名
ssh/Auth中Browse私钥
确定保存
再次登录即可

==========

禁止publickey 方式登录
Disable login using public key in SSH

==========

其实,SecureCRT更好用更专业,但是需要破解...除了exe本身不自带sftp功能之外,对我而言,pietty和SecureCRT真没什么差别,pietty貌似更简单更好用

slowloris的等等,其他

| No Comments | No TrackBacks

啥叫DDOS? 某同学在内网测试并发2000个视频请求导致内网无法访问就是DDOS...

slowloris的流量消耗相比洪水DDOS来说低了不少,但是有点出乎我意料的少, retry5秒 10k并发才200Kbits/s的均速, 难怪通过Tor主机也能攻击, 我用slowloris测试攻击内网的的Dell1950纯属浪费,  或许应该找几个真实的生产服务器试试slowloris的效果?

curl看了几个有名的站,不是IIS+squid就是Nginx,后面还负载均衡..., 这年头谁用lone Apache啊...

===============================

It basically uses a concept of keeping an HTTP session alive indefinitely (or as long as possible) and repeating that process a few hundred times

rfc2616上没有说是header上做手脚怎么样怎么样的,一贯遵循rfc的IIS,我人肉telnet模拟了一下slowloris的发包,发了个X-a:b 之后再怎么CRLF也拿不到数据了, 也没有发现IIS会主动断掉或者怎么样的, 果然是搞不清IIS的实现...这或许是闭源的好处? 有时候看看IIS的实现也是个不错的事情(1, 2)

下面是解决办法:

Apache HTTP DoS tool mitigation

Mitigating the Slowloris HTTP DoS Attack

其实slowloris的这个方法有点老了, 大概在2000年就有人用了? 当然这个攻击的技术含量没法跟人家低速洪水攻击10cent的路由器比。

 

最近Slowloris很受推崇,评价很高,可以用很少的带宽实现攻击效果,下班之后试用了一把。
Multiple HTTP Server Low Bandwidth Denial of Service (slowloris.pl)
下载地址在这里
攻击原理:
攻击方先发送一个http header:
GET / HTTP/1.1\r\n
Host: Target host\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n
Content-Length: 42\r\n
结果就少了一个\r\n, Apache说: 我等!
攻击方再发一坨X-a: b\r\n
Apache已经找不到人生的目标了,继续等...,
攻击方不停的新建连接,等到Apache连接数耗尽,目标达到

受影响(affects)的httpd:
    Apache 1.x/2.x, dhttpd, GoAhead WebServer, Squid, others...?
不受影响(Not affects)的httpd:
    IIS6.0,IIS7.0, lighty, others...?


Slowloris有几个很重要的基本参数:
tcp connection timeout:默认5秒
re-try timeout:默认100秒
connections:1000
Multithreading:Enabled
剩下的就是perldoc ./slowloris.pl的事情了,没装perldoc直接去看文件末尾也能看懂

试验1:
全默认参数, 尝试攻击CentOS 5.2 x64自行编译的Apache2.2.8,mpm_prefork模式,MaxClients850, 硬件DellPE1950, XeonE5405@2.00GHZ x 4, 8GB内存, 146GB10krpmSAS硬盘
结果:成功!

试验2:
全默认参数, 尝试攻击CentOS 5.2 x64自行编译的squid,默认的filedescriptors = 1024, 硬件配置同上
结果:有效果,不满意,平均访问5次只有1次被拒绝

试验3:
re-try timeout 5秒, 尝试攻击CentOS 5.2 x64自行编译的squid,默认的filedescriptors = 1024, 硬件配置同上
结果:有进步,平均访问3次只有1次能正常

试验4:
re-try timeout 5秒, connections:2000, 尝试攻击CentOS 5.2 x64自行编译的squid,默认的filedescriptors = 1024, 硬件配置同上
结果:完全拿不到返回结果了...NagiosNRPE也报错,嘿嘿

试验5:
re-try timeout 5秒, connections:2000, 尝试攻击CentOS 5.2 x64自行编译的squid,编译时将filedescriptors设定为65536, 硬件配置同上
结果:强大的squid啊...攻击完全没效果

试验6:
re-try timeout 5秒, connections:10000, 尝试攻击CentOS 5.2 x64自行编译的squid,编译时将filedescriptors设定为65536, 硬件配置同上
结果:嘿嘿, 把squid列到affects里面不是没有原因滴, 基本上可以判定完全无法访问

试验7:
re-try timeout 5秒, connections:3000, 尝试攻击Ubuntu 8.04LTS apt-get安装的Nginx0.6.31,硬件配置Xeon2.8GHZx4, 4GB内存
结果: 完全无效,Nginx撑连接果然很强悍, 某人说某web2.0网站因配置出了点错导致Nginx撑了70W连接,木有垮掉

试验8:
to be continue...


攻击方:
1. 找了个国外的位于Tor匿名网络内主机,但是资源受限, 最多2k并发, 用来攻击Apache
2. Core2 4300@1.80GHZ 双核 + 2GB内存 ubuntu desktop 8.04.2跑10K个connection木有问题,但是20k个就会报out of memory最后segment fault退出, slowloris的攻击能力可能仅限于内存


实验结果:
Slowloris很好很强大!单独的一个Apache直接就可以死翘翘了lol, squid也有危险
攻击的时候去访问网页,会一直卡在等待结果的状态,一旦终止攻击脚本,立刻就可以拿到返回结果
相比SYN,Slowloris有一定缺陷,攻击停止的时候会在Apache的AccessLog中突然产生大量连续重复的日志,返回值400 305, 很容易被追踪到。没有修改脚本的话,攻击squid的时候日志中会出现Unsupported method in request 'X-a: b__'
Lighty暂时没测试, 据说即使Nginx受到影响,但是适当的配置timeout num limit_conn limit_per 可以解决掉slowloris。

Apache和squid的生命周期真的已经到尽头了么?

参考链接:
Slowloris
Slowloris blog
Bugzilla@Squid-cache: Squid vulnerable to Dos via partial HTTP requests
SLOWLORIS A NGINX (ATAK TYPU DOS) <-波兰语,英文版在此
Apache vs Nginx : Web Server Performance Deathmatch
Slowloris HTTP DoS工具试用
Slowloris HTTP DoS