存档

2013年4月 的存档

怎么查看SQL SERVER 2000是否打过SP4的补丁

2013年4月30日 没有评论

有几次帮客户解决数据库问题,并不知道数据库的版本是否打过sp4补丁,又没有地方可查,网上有给出比较好的解决方案,只要查询版本号就知道。
在查询分析器中输入

select @@version

或者输入

print @@version

如果是安装过SP4的补丁。应该是下面的信息:
Microsoft SQL Server 2000 – 8.00.2039 (Intel X86)
May 3 2005 23:18:38
Copyright (c) 1988-2003 Microsoft Corporation
Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
其他版本信息如下
6.50.201 SQL Server 6.5 RTM
6.50.213 SQL Server 6.5 with Service Pack 1
6.50.240 SQL Server 6.5 with Service Pack 2
6.50.258 SQL Server 6.5 with Service Pack 3
6.50.281 SQL Server 6.5 with Service Pack 4
6.50.415 SQL Server 6.5 with Service Pack 5
6.50.416 SQL Server 6.5 with Service Pack 5a
7.00.623 SQL Server 7.0 / MSDE 1.0 RTM
7.00.699 SQL Server 7.0 SP1 July 1999
7.00.842 SQL Server 7.0 SP2 March 20th, 2000
7.00.961 SQL Server 7.0 SP3 December 15th, 2000
7.00.1063 SQL Server 7.0 SP4
8.00.194 SQL Server 2000 RTM
8.00.384 SQL Server 2000 SP1
8.00.534 SQL Server 2000 SP2 November 30th, 2001
8.00.760 SQL Server 2000 SP3
8.00.2039 SQL Server 2000 SP4

ps: sql2000 sp4后的一个安全补丁SQL2000-KB948110-v8.00.2050-x86x64-CHS

linux(centos)绑定ARP的方法

2013年4月16日 没有评论

ARP协议是“Address Resolution Protocol”(地址解析协议) 的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主 机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标 MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

而ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。

ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

在工作中经常遇到有服务器受到ARP欺骗攻击,严重影响了网络的正常运营,于是想到将网关的ARP条目进行绑定。

本文是关于linux服务器下arp网关的绑定

1、查看网关的arp信息
[root@Vtest ~]# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.103 ether 00:16:ea:27:7b:04 C eth0
192.168.1.1 ether 40:16:9f:6c:39:1e C eth0

说明:
Address: 主机的IP地址
Hwtype: 主机的硬件类型
Hwaddress:主机的硬件地址
Flags Mask:记录标志,”C”表示arp高速缓存中的动态条目,”CM”表示静态的arp条目。

我们需要绑定的就是192.168.1.1所在的一行。

2、建立一个静态IP –>>mac对应的文件
[root@Vtest ~]#echo ’192.168.1.1 40:16:9f:6c:39:1e’>>/etc/ip-mac

3、设置开机自动绑定

arp信息重启后会清空,所以需要开机的时候自动绑定。服务器启动过程最后运行的脚本是rc.local,我们把绑定的命令就加到这个文件的最后一行。

[root@Vtest ~]#echo ‘arp -f /etc/ip-mac’ /etc/rc.local

4、手动绑定一下
[root@Vtest ~]#echo arp -f /etc/ip-mac

[root@Vtest ~]#arp -s 192.168.1.1 40:16:9f:6c:39:1e
5、验证
[root@Vtest ~]# arp -a
(192.168.1.103) at 00:16:ea:27:7b:04 [ether] on eth0
(192.168.1.1) at 40:16:9f:6c:39:1e [ether] PERM on eth0
[root@Vtest ~]# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.103 ether 00:16:ea:27:7b:04 C eth0
192.168.1.1 ether 40:16:9f:6c:39:1e CM eth0

从以上显示的信息来看,已经绑定成功了,第一个命令结果中的”PERM”表示Permanent,永久的意思,即绑定成永久arp条目。到这里绑定就完成了,你的网关arp绑定了么,为了稳定运行,赶快绑定吧。

6、这只能防住一些arp攻击,如果将网内所有ip mac导入ethers文件,能有效的防止arp攻击
安装nmap:

rpm -vhU http://nmap.org/dist/nmap-6.25-1.i386.rpm
rpm -vhU http://nmap.org/dist/zenmap-6.25-1.noarch.rpm
rpm -vhU http://nmap.org/dist/ncat-6.25-1.i386.rpm
rpm -vhU http://nmap.org/dist/nping-0.6.25-1.i386.rpm
扫描同网段所有ip
nmap -sP 192.168.1.0/24 2>&1 | tee ip.log
扫描,结果我的arp表里就有那个网段所有机器的mac,将所有信息复制至/etc/ip-mac文件

解决mysql数据库Forcing close of thread 的错误提示

2013年4月8日 没有评论

今天发现客户的网站老出现打不开的情况,发现连接数有超出的现象,但观察系统事件日志,都是下面的错误:

MySQL: Forcing close of thread **** user:”

事件类型: 警告
事件来源: MySQL
事件种类: 无
事件 ID: 100
日期: 2013-4-8
事件: 12:21:01
用户: N/A
计算机: vps12com0630
描述:
MySQL: Forcing close of thread 123756 user: ”

For more information, see Help and Support Center at http://www.mysql.com.

检查系统资源和连接数都是正常的情况下,没有找到解决办法。

在mysql配置文件my.ini 的 [mysql] 下面加上这个解决问题了!

skip-locking
skip-name-resolve

其他的同类错误要注意查看日志。新版本mysql的写法应该是:

skip-external-locking
skip-name-resolve

nginx.conf配置文件详解

2013年4月1日 没有评论

Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

以下是配置文件 nginx.conf 中文注释说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#使用哪个用户启动 nginx 前面是用户,后面是用户组
user www www;
 
#nginx工作的进程数量
worker_processes 2;
 
# [ debug | info | notice | warn | error | crit ] 日志的位置
error_log /var/htdocs/logs/nginx_error.log crit;
error_log /dev/null;
 
#进程号保存文件
pid /usr/local/nginx/nginx.pid;
 
#每个进程可以打开的最大文件字节数
worker_rlimit_nofile 51200;
 
events
{
# use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];
use epoll; #使用epoll(linux2.6的高性能方式)
worker_connections 51200; #每个进程最大连接数(最大连接=连接数x进程数)
}
 
http
{
#文件扩展名与文件类型映射表
include mime.types;
 
#默认文件类型
default_type application/octet-stream;
 
#日志文件格式
log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
 
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
 
#默认编码
charset utf-8;
 
server_names_hash_bucket_size 128;
#开启高效文件传输模式
sendfile on;
#以下两个选项用于防止网络阻塞
 
tcp_nopush on;
tcp_nodelay on;
 
#长链接超时时间
keepalive_timeout 300;
 
#fastcgi连接超时时间,下面的看字面意思都能理解个大概了,就不解释了.
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_temp_path /dev/shm;
 
#打开gzip压缩
gzip on;
#最小压缩文件大小
gzip_min_length 1k;
#压缩缓冲区
gzip_buffers 4 8k;
#压缩版本(默认1.1,前端为squid2.5使用1.0)
gzip_http_version 1.1;
#压缩类型,默认就已经包含text/html 所以下面就不用再写了,当然写上去的话,也不会有问题,但是会有一个warn
gzip_types text/plain application/x-javascript text/css text/html text/javascript application/xml;
#错误页面
error_page 404 http://yhjhappy234.blog.163.com/;
error_page 403 http://yhjhappy234.blog.163.com/;
#上传文件大小限制
client_max_body_size 2m;
#设定请求缓
client_header_buffer_size 16k;
large_client_header_buffers 4 64k;
#设定负载均衡的服务器列表
#如果在同一台机器上,单独起4组独立的php-cgi进程(每组8个子进程),性能应该不如1组php-cgi进程(32个子进程),因为1组进程,eaccelerator的PHP二进制文件缓存是共享的,1组进程命中率较高。
#不过好处是,碰到某组的页面假死的话,其他端口就可以接管了,实测下来似乎发生502错误的概率降低了很多,或者说我这样配置以后还没有遇到
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
#本机上的Squid开启3128端口
server 192.168.101.26:8080 weight=5;
server 192.168.101.27:8080 weight=1;
server 192.168.101.202:8080 weight=1;
}
#下面开始虚拟主机的配置
server
{
listen 80;
server_name www.kedou.com;
index index.jsp;
root /usr/local/tomcat/webapps/ROOT;
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
#设定本虚拟主机的访问日志
access_log logs/www.kedou.com.access.log main;
 
location ~ .*\.php?$
{
include fcgi.conf;
fastcgi_pass 192.168.101.202:8080
fastcgi_index index.jsp;
}
#如果访问 /img/*, /js/*, /css/* 资源,则直接取本地文件,不通过squid
#如果这些文件较多,不推荐这种方式,因为通过squid的缓存效果更好
location ~ ^/(img|js|css)/ {
root /var/htdocs/kedou;
expires 24h;
}
 
#对 "/" 启用负载均衡
location / {
proxy_pass http://127.0.0.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
 
proxy_temp_file_write_size 64k;
}
 
#设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd;
}
}
}

修改Nginx版本头信息(可选),编辑src/http/ngx_http_header_filter_module.c:

1
# vi +48 src/http/ngx_http_header_filter_module.c

找到下面两行:

1
2
static char ngx_http_server_string[] = "Server: nginx" CRLF;
static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

将其修改为:

1
2
static char ngx_http_server_string[] = "Server: Ninja Web Server" CRLF;
static char ngx_http_server_full_string[] = "Server: Ninja Web Server" CRLF;

保存并关闭文件。现在可以开始编译服务器了,将下面的配置代码添加到nginx.conf中,禁止在所有自动产生的错误页面中显示Nginx版本号:

1
server_tokens off