HTTP 500 服务器内部错误的解决方法

IIS500错误,是因为微软的一个BUG所造成的。下面是解决办法:

主要是由于IWAM账号(在我的计算机即是IWAM_MYSERVER账号)的密码错误造成了HTTP 500内部错误。

在详细分析HTTP500内部错误产生的原因之前,先对IWAM账号进行一下简要的介绍:IWAM账号是安装IIS5时系统自动建立的一个内置账号,主要用于启动进程之外的应用程序的Internet信息服务。IWAM账号的名字会根据每台计算机NETBIOS名字的不同而有所不同,通用的格式是IWAM_MACHINE,即由“IWAM”前缀、连接线“_”加上计算机的NETBIOS名字组成。我的计算机的NETBIOS名字是MYSERVER,因此我的计算机上IWAM账号的名字就是IWAM_MYSERVER,这一点与IIS匿名账号ISUR_MACHINE的命名方式非常相似。

IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用,账号密码被三方分别保存,并由操作系统负责这三方保存的IWAM密码的同步工作。按常理说,由操作系统负责的工作我们大可放心,不必担心出错,但不知是BUG还是其它什么原因,系统的对IWAM账号的密码同步工作有时会失败,使三方IWAM账号所用密码不统一。当IIS或COM+应用程序使用错误IWAM的密码登录系统,启动IIS Out-Of-Process Pooled Applications时,系统会因密码错误而拒绝这一请求,导致IIS Out-Of-Process Pooled Applications启动失败,也就是我们在ID10004错误事件中看到的“不能运行服务器{3D14228D-FBE1-11D0-995D-00C04FD919C1} ”(这里{3D14228D-FBE1-11D0-995D-00C04FD919C1} 是IIS Out-Of-Process Pooled Applications的KEY),不能转入IIS5应用程序,HTTP 500内部错误就这样产生了。

三.解决办法

知道了导致HTTP 500内部错误的原因,解决起来就比较简单了,那就是人工同步IWAM账号在Active Directory、IIS metabase数据库和COM+应用程序中的密码。

具体操作分三步,均需要以管理员身份登录计算机以提供足够的操作权限(IWAM账号以IWAM_MYSERVER为例)。

(一)更改Active Directory中IWAM_MYSERVER账号的密码

因IWAM账号的密码由系统控制,随机产生,我们并不知道是什么,为完成下面两步的密码同步工作,我们必须将IWAM账号的密码设置为一个我们知道的值。

1、选择“开始”->“程序”->“管理工具”->”Active Directory用户和计算机”,启动“Active Directory用户和计算机”管理单元。

2、单击“user”,选中右面的“IWAM_MYSERVER”,右击选择“重设密码(T)…”,在跳出的重设密码对方框中给IWAM_MYSERVER设置新的密码,这儿我们设置成“Aboutnt2001”(没有引号的),确定,等待密码修改成功。

(二)同步IIS metabase中IWAM_MYSERVER账号的密码

可能因为这项改动太敏感和重要,微软并没有为我们修改IIS metabase中IWAM_MYSERVER账号密码提供一个显式的用户接口,只随IIS5提供了一个管理脚本adsutil.vbs,这个脚本位于C:\inetpub\adminscripts子目录下(位置可能会因你安装IIS5时设置的不同而有所变动)。

adsutil.vbs脚本功能强大,参数非常多且用法复杂,这里只提供使用这个脚本修改IWAM_MYSERVER账号密码的方法:

adsutil SET w3svc/WAMUserPass Password

“Password”参数就是要设置的IWAM账号的新的密码。因此我们将IIS metabase中IWAM_MYSERVER账号的密码修改为“Aboutnt2001”的命令就是:

c:\Inetpub\AdminScripts>adsutil SET w3svc/WAMUserPass “Aboutnt2001”

修改成功后,系统会有如下提示:

WAMUserPass: (String) “Aboutnt2001”

(三)同步COM+应用程序所用的IWAM_MYSERVER的密码

同步COM+应用程序所用的IWAM_MYSERVER的密码,我们有两种方式可以选择:一种是使用组件服务MMC管理单元,另一种是使用IWAM账号同步脚本synciwam.vbs。

1、使用组件服务MMC管理单元

(1)启动组件服务管理单元:选择“开始”->“运行”->“MMC”,启动管理控制台,打开“添加/删除管理单元”对话框,将“组件服务”管理单元添加上。

(2)找到“组件服务”->“计算机”->“我的电脑”->“COM+应用程序”->“Out-Of-Process Pooled Applications”,右击“Out-Of-Process Pooled Applications”->“属性”。

(3)切换到“Out-Of-Process Pooled Applications”属性对话框的“标志”选项卡。“此应用程序在下列账户下运行”选择中“此用户”会被选中,用户名是“IWAM_MYSERVER”。这些都是缺省的,不必改动。在下面的“密码”和“确认密码”文本框内输入正确的密码“Aboutnt2001”,确定退出。

(4)系统如果提示“应用程序被一个以上的外部产品创建。你确定要被这些产品支持吗?”时确定即可。

(5)如果我们在IIS中将其它一些Web的“应用程序保护”设置为“高(独立的)”,那么这个WEB所使用的COM+应用程序的IWAM账号密码也需要同步。重复(1)-(4)步,同步其它相应Out of process application的IWAM账号密码。

2、使用IWAM账号同步脚本synciwam.vbs

实际上微软已经发现IWAM账号在密码同步方面存在问题,因此在IIS5的管理脚本中单独为IWAM账号密码同步编写了一个脚本synciwam.vbs,这个脚本位于C:\inetpub\adminscripts子目录下(位置可能会因你安装IIS5时设置的不同而有所变动)。

synciwam.vbs脚本用法比较简单:

cscript synciwam.vbs [-v|-h]

“-v”参数表示详细显示脚本执行的整个过程(建议使用),“-h”参数用于显示简单的帮助信息。

我们要同步IWAM_MYSERVER账号在COM+应用程序中的密码,只需要执行“cscript synciwam.vbs -v”即可,如下:

cscript c:\inetpub\adminscripts\synciwam.vbs -v

Microsoft (R) Windows Script Host Version 5.6

版权所有(C) Microsoft Corporation 1996-2000。保留所有权利。

WamUserName:IWAM_MYSERVER

WamUserPass:Aboutnt2001

IIS Applications Defined:

Name, AppIsolated, Package ID

w3svc, 0, {3D14228C-FBE1-11d0-995D-00C04FD919C1}

Root, 2,

IISHelp, 2,

IISAdmin, 2,

IISSamples, 2,

MSADC, 2,

ROOT, 2,

IISAdmin, 2,

IISHelp, 2,

Root, 2,

Root, 2,

Out of process applications defined:

Count: 1

{3D14228D-FBE1-11d0-995D-00C04FD919C1}

Updating Applications:

Name: IIS Out-Of-Process Pooled Applications Key: {3D14228D-FBE1-11D0-995D-00C04FD919C1}

从上面脚本的执行情况可以看出,使用synciwam.vbs脚本要比使用组件服务的方法更全面和快捷。它首先从IIS的metabase数据库找到IWAM账号”IWAM_MYSERVER”并取出对应的密码“Aboutnt2001”,然后查找所有已定义的IIS Applications和Out of process applications,并逐一同步每一个Out of process applications应用程序的IWAM账号密码。

使用synciwam.vbs脚本时,要注意一个问题,那就是在你运行synciwam.vbs之前,必须保证IIS metabase数据库与Active Directory中的IWAM密码已经一致。因为synciwam.vbs脚本是从IIS metabase数据库而不是从Active Directory取得IWAM账号的密码,如果IIS metabase中的密码不正确,那synciwam.vbs取得的密码也会不正确,同步操作执行到“Updating Applications”系统就会报80110414错误,即“找不到应用程序{3D14228D-FBE1-11D0-995D-00C04FD919C1}”。

好了,到现在为止,IWAM账号在Active Directory、IIS metabase数据库和COM+应用程序三处的密码已经同步成功,你的ASP程序又可以运行啦!

Telnet的命令模式

除了在Telnet是如何工作的例子介绍的以外,Telnet还有很多的特点。Telnet可发送除了”escape”的任何字符到远程主机上。因为”escape”字符在Telnet中是客户机的一个特殊的命令模式,它的默认值是”Ctrl-]”。但要注意不要与键盘上的Esc键混淆,我们可以设定”escape”为任意某个字符,只是对Telnet来说以为着该字符不可能再被传送到远程主机上,而Esc键是一非打印字符,Telnet用它来删除远程系统中的命令。而且还应记住,”escape”字符并不总以”Ctrl-]”来表示。
可以仅仅键入Telnet,后面不带机器字句。这种情况下所看到的是Telnet>,这是告知Telnet在等待键入命令,比如键入问号”?”那么就得到一个有用的命令表:

telnet: ?
Commands may be abbreviated, Command are:
open connect to a site
close close currect connection
quit exit telnet
display display operating parameters
send transmit special characters (‘send ?’ for more)
set set operating parameters(‘set ?’ for more)
status print status information
toggle toggle operating parameters(‘toggle ?’ for more)
mode try to enter line-by-line or character-at-a-time mode
? print help information

虽然命令很多,甚至还有子命令,但只有一些是常用的。现在介绍以下的几个:
Close:
该命令用语终止连接。它自动切断与远程系统的连接,也可以用它退出Telnet,在冒失的进入一个网络主机时,想退出的话,就可以用到这个命令。

open:
用它来与一个命名机器连接,要求给出目标机器的名字或IP地址。如果未给出机器名,Telnet就将要你选择一个机器名。必须注意,在使用”Open”命令之前应该先用”close”来关闭任何已经存在的连接。

Set ECHO:
用于本地的响应是On或是Off。作用是是否把输出的内容显示在屏幕上。和DOS的ECHO基本上是一样。如果机器是处于ECHO ON的话,想改变为OFF,那么就可以输入SET ECHO,想再改变回ECHO OFF,那么就再键入SET ECHO就可以了。(这儿说的比较简短,如果有不明白的,可以与我联系)

Set escape char:
建立”escape”字符到某个特殊的符号,若想用某种控制符号来代替,可以用”asis”或者键入符号”^”加字母b(如:^b)。在正常工作时,是不需要用”escape”这个字符的,并且这个被用作”escape”的符号不应该再被使用。这类似于许多程序中对键盘上的每一个键设定其真正的涵义。但如果正在运行一个 daisy-chained 应用系统,那么可以重新议定”escape”字符的特征便是很有用的。例如:用Telnet从系统A到系统B,接着又用Telnet注册进入系统C。如果正在系统C上工作时出了故障,那么当”escape”代表符是相同时,就没法中断系统B到系统C的连接。键入”escape”代表符,将总是处于系统A的命令模式。如果在每个Telnet部分使用不同的”escape”代表符,便可以通过键入适当的符号,来选择其中一个命令模式,这也可以用于其他的应用中(像终端仿真)。

Quit:
用它可顺利地推出Telnet程序。

Z:
用语保留Telnet但暂时回到本地系统执行其他命令。并且在Telnet中的连接以及其他的选择在Telnet恢复时仍被保留。

Carriage Return:
用于不具体的一个命令从命令模式返回到所连接的远程机器上。另外,还有许多其他的命令可以推出命令模式。下面举一个例子,是从注册进入到porky.math.ukans.edu ,然后进入命令模式,然后返回porky::

telnet porky.math.ukans.edu
Trying 129.237.128.11…
Connected to porky.math.ukans.edu.
Escape character is ‘^]’.
SunOS UNIX(porky)
login:wl
password:
Last Login: Tue Mar 28 05:35 from ns.bta.net.cn
SunOS Release 4.1.3_U1(SLIPPERY1) #3: Sun Nov 20 23:47:23 CST 1999
No match.
if:Expression syntax.
porky/serv/wl%cd/
porky/%CTRL-]
telnet:?
Commands may be abbreviated, Command are:
open connect to a site
close close currect connection
quit exit telnet
display display operating parameters
send transmit special characters (‘send ?’ for more)
set set operating parameters(‘set ?’ for more)
status print status information
toggle toggle operating parameters(‘toggle ?’ for more)
mode try to enter line-by-line or character-at-a-time mode
? print help information
telnet:set escape ^b
escape character is ’^b’
porky/%logout
ns.bta.net.cn%

注意:set命令也可以退出命令模式。当然,如果不行,可以回车输入一空行,也能回到porky

服务器端口详细解释

端口可分为3大类:
1) 公认端口(Well Known Ports):从0到1023,它们紧密绑定于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
2) 注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
3) 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
本节讲述通常TCP/UDP端口扫描在防火墙记录中的信息。记住:并不存在所谓ICMP端口。如果你对解读ICMP数据感兴趣,请参看本文的其它部分。
0 通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口,当你试图使用一种通常的闭合端口连接它时将产生不同的结果。一种典型的扫描:使用IP地址为0.0.0.0,设置ACK位并在以太网层广播。
1 tcpmux 这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者,缺省情况下tcpmux在这种系统中被打开。Iris机器在发布时含有几个缺省的无密码的帐户,如lp, guest, uucp, nuucp, demos, tutor, diag, EZsetup, OutOfBox, 和4Dgifts。许多管理员安装后忘记删除这些帐户。因此Hacker们在Internet上搜索tcpmux并利用这些帐户。
7 Echo 你能看到许多人们搜索Fraggle放大器时,发送到x.x.x.0和x.x.x.255的信息。
常见的一种DoS攻击是echo循环(echo-loop),攻击者伪造从一个机器发送到另一个机器的UDP数据包,而两个机器分别以它们最快的方式回应这些数据包。(参见Chargen)
另一种东西是由DoubleClick在词端口建立的TCP连接。有一种产品叫做“Resonate Global Dispatch”,它与DNS的这一端口连接以确定最近的路由。
Harvest/squid cache将从3130端口发送UDP echo:“如果将cache的source_ping on选项打开,它将对原始主机的UDP echo端口回应一个HIT reply。”这将会产生许多这类数据包。
11 sysstat 这是一种UNIX服务,它会列出机器上所有正在运行的进程以及是什么启动了这些进程。这为入侵者提供了许多信息而威胁机器的安全,如暴露已知某些弱点或帐户的程序。这与UNIX系统中“ps”命令的结果相似
再说一遍:ICMP没有端口,ICMP port 11通常是ICMP type=11
19 chargen 这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时,会发送含有垃圾字符的数据流知道连接关闭。Hacker利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。由于服务器企图回应两个服务器之间的无限的往返数据通讯一个chargen和echo将导致服务器过载。同样fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包,受害者为了回应这些数据而过载。
21 ftp 最常见的攻击者用于寻找打开“anonymous”的ftp服务器的方法。这些服务器带有可读写的目录。Hackers或Crackers 利用这些服务器作为传送warez (私有程序) 和pr0n(故意拼错词而避免被搜索引擎分类)的节点。
22 ssh PcAnywhere建立TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点。如果配置成特定的模式,许多使用RSAREF库的版本有不少漏洞。(建议在其它端口运行ssh)
还应该注意的是ssh工具包带有一个称为make-ssh-known-hosts的程序。它会扫描整个域的ssh主机。你有时会被使用这一程序的人无意中扫描到。
UDP(而不是TCP)与另一端的5632端口相连意味着存在搜索pcAnywhere的扫描。5632(十六进制的0x1600)位交换后是0x0016(使进制的22)。
23 Telnet 入侵者在搜索远程登陆UNIX的服务。大多数情况下入侵者扫描这一端口是为了找到机器运行的操作系统。此外使用其它技术,入侵者会找到密码。
25 smtp 攻击者(spammer)寻找SMTP服务器是为了传递他们的spam。入侵者的帐户总被关闭,他们需要拨号连接到高带宽的e-mail服务器上,将简单的信息传递到不同的地址。SMTP服务器(尤其是sendmail)是进入系统的最常用方法之一,因为它们必须完整的暴露于Internet且邮件的路由是复杂的(暴露+复杂=弱点)。
53 DNS Hacker或crackers可能是试图进行区域传递(TCP),欺骗DNS(UDP)或隐藏其它通讯。因此防火墙常常过滤或记录53端口。
需要注意的是你常会看到53端口做为UDP源端口。不稳定的防火墙通常允许这种通讯并假设这是对DNS查询的回复。Hacker常使用这种方法穿透防火墙。
67和68 Bootp和DHCP UDP上的Bootp/DHCP:通过DSL和cable-modem的防火墙常会看见大量发送到广播地址255.255.255.255的数据。这些机器在向DHCP服务器请求一个地址分配。Hacker常进入它们分配一个地址把自己作为局部路由器而发起大量的“中间人”(man-in-middle)攻击。客户端向68端口(bootps)广播请求配置,服务器向67端口(bootpc)广播回应请求。这种回应使用广播是因为客户端还不知道可以发送的IP地址。
69 TFTP(UDP) 许多服务器与bootp一起提供这项服务,便于从系统下载启动代码。但是它们常常错误配置而从系统提供任何文件,如密码文件。它们也可用于向系统写入文件。
79 finger Hacker用于获得用户信息,查询操作系统,探测已知的缓冲区溢出错误,回应从自己机器到其它机器finger扫描。
98 linuxconf 这个程序提供linux boxen的简单管理。通过整合的HTTP服务器在98端口提供基于Web界面的服务。它已发现有许多安全问题。一些版本setuid root,信任局域网,在/tmp下建立Internet可访问的文件,LANG环境变量有缓冲区溢出。此外因为它包含整合的服务器,许多典型的HTTP漏洞可能存在(缓冲区溢出,历遍目录等)
109 POP2 并不象POP3那样有名,但许多服务器同时提供两种服务(向后兼容)。在同一个服务器上POP3的漏洞在POP2中同样存在。
110 POP3 用于客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少有20个(这意味着Hacker可以在真正登陆前进入系统)。成功登陆后还有其它缓冲区溢出错误。
111 sunrpc portmap rpcbind Sun RPC PortMapper/RPCBIND。访问portmapper是扫描系统查看允许哪些RPC服务的最早的一步。常见RPC服务有:rpc.mountd, NFS, rpc.statd, rpc.csmd, rpc.ttybd, amd等。入侵者发现了允许的RPC服务将转向提供服务的特定端口测试漏洞。
记住一定要记录线路中的daemon, IDS, 或sniffer,你可以发现入侵者正使用什么程序访问以便发现到底发生了什么。
113 Ident auth 这是一个许多机器上运行的协议,用于鉴别TCP连接的用户。使用标准的这种服务可以获得许多机器的信息(会被Hacker利用)。但是它可作为许多服务的记录器,尤其是FTP, POP, IMAP, SMTP和IRC等服务。通常如果有许多客户通过防火墙访问这些服务,你将会看到许多这个端口的连接请求。记住,如果你阻断这个端口客户端会感觉到在防火墙另一边与e-mail服务器的缓慢连接。许多防火墙支持在TCP连接的阻断过程中发回RST,着将回停止这一缓慢的连接。
119 NNTP news 新闻组传输协议,承载USENET通讯。当你链接到诸如:news://comp.security.firewalls/. 的地址时通常使用这个端口。这个端口的连接企图通常是人们在寻找USENET服务器。多数ISP限制只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送spam。
135 oc-serv MS RPC end-point mapper Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111端口的功能很相似。使用DCOM和/或RPC的服务利用机器上的end-point mapper注册它们的位置。远端客户连接到机器时,它们查询end-point mapper找到服务的位置。同样Hacker扫描机器的这个端口是为了找到诸如:这个机器上运行Exchange Server吗?是什么版本?
这个端口除了被用来查询服务(如使用epdump)还可以被用于直接攻击。有一些DoS攻击直接针对这个端口。
137 NetBIOS name service nbtstat (UDP) 这是防火墙管理员最常见的信息,请仔细阅读文章后面的NetBIOS一节
139 NetBIOS File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows“文件和打印机共享”和SAMBA。在Internet上共享自己的硬盘是可能是最常见的问题。
大量针对这一端口始于1999,后来逐渐变少。2000年又有回升。一些VBS(IE5 VisualBasic Scripting)开始将它们自己拷贝到这个端口,试图在这个端口繁殖。
143 IMAP 和上面POP3的安全问题一样,许多IMAP服务器有缓冲区溢出漏洞运行登陆过程中进入。记住:一种Linux蠕虫(admw0rm)会通过这个端口繁殖,因此许多这个端口的扫描来自不知情的已被感染的用户。当RadHat在他们的Linux发布版本中默认允许IMAP后,这些漏洞变得流行起来。Morris蠕虫以后这还是第一次广泛传播的蠕虫。
这一端口还被用于IMAP2,但并不流行。
已有一些报道发现有些0到143端口的攻击源于脚本。
161 SNMP(UDP) 入侵者常探测的端口。SNMP允许远程管理设备。所有配置和运行信息都储存在数据库中,通过SNMP客获得这些信息。许多管理员错误配置将它们暴露于Internet。Crackers将试图使用缺省的密码“public”“private”访问系统。他们可能会试验所有可能的组合。
SNMP包可能会被错误的指向你的网络。Windows机器常会因为错误配置将HP JetDirect remote management软件使用SNMP。HP OBJECT IDENTIFIER将收到SNMP包。新版的Win98使用SNMP解析域名,你会看见这种包在子网内广播(cable modem, DSL)查询sysName和其它信息。
162 SNMP trap 可能是由于错误配置
177 xdmcp 许多Hacker通过它访问X-Windows控制台,它同时需要打开6000端口。
513 rwho 可能是从使用cable modem或DSL登陆到的子网中的UNIX机器发出的广播。这些人为Hacker进入他们的系统提供了很有趣的信息。
553 CORBA IIOP (UDP) 如果你使用cable modem或DSL VLAN,你将会看到这个端口的广播。CORBA是一种面向对象的RPC(remote procedure call)系统。Hacker会利用这些信息进入系统。
600 Pcserver backdoor 请查看1524端口
一些玩script的孩子认为他们通过修改ingreslock和pcserver文件已经完全攻破了系统– Alan J. Rosenthal.
635 mountd Linux的mountd Bug。这是人们扫描的一个流行的Bug。大多数对这个端口的扫描是基于UDP的,但基于TCP的mountd有所增加(mountd同时运行于两个端口)。记住,mountd可运行于任何端口(到底在哪个端口,需要在端口111做portmap查询),只是Linux默认为635端口,就象NFS通常运行于2049端口。
1024 许多人问这个端口是干什么的。它是动态端口的开始。许多程序并不在乎用哪个端口连接网络,它们请求操作系统为它们分配“下一个闲置端口”。基于这一点分配从端口1024开始。这意味着第一个向系统请求分配动态端口的程序将被分配端口1024。为了验证这一点,你可以重启机器,打开Telnet,再打开一个窗口运行“natstat -a”,你将会看到Telnet被分配1024端口。请求的程序越多,动态端口也越多。操作系统分配的端口将逐渐变大。再来一遍,当你浏览Web页时用“netstat”查看,每个Web页需要一个新端口。
?ersion 0.4.1, June 20, 2000
http://www.robertgraham.com/pubs/firewall-seen.html
Copyright 1998-2000 by Robert Graham (mailto:firewall-seen1@robertgraham.com.
All rights reserved. This document may only be reproduced (whole or
in part) for non-commercial purposes. All reproductions must
contain this copyright notice and must not be altered, except by
permission of the author.
1025 参见1024
1026 参见1024
1080 SOCKS
这一协议以管道方式穿过防火墙,允许防火墙后面的许多人通过一个IP地址访问Internet。理论上它应该只允许内部的通信向外达到Internet。但是由于错误的配置,它会允许Hacker/Cracker的位于防火墙外部的攻击穿过防火墙。或者简单地回应位于Internet上的计算机,从而掩饰他们对你的直接攻击。WinGate是一种常见的Windows个人防火墙,常会发生上述的错误配置。在加入IRC聊天室时常会看到这种情况。
1114 SQL
系统本身很少扫描这个端口,但常常是sscan脚本的一部分。
1243 Sub-7木马(TCP)
参见Subseven部分。
1524 ingreslock后门
许多攻击脚本将安装一个后门Sh*ll 于这个端口(尤其是那些针对Sun系统中Sendmail和RPC服务漏洞的脚本,如statd, ttdbserver和cmsd)。如果你刚刚安装了你的防火墙就看到在这个端口上的连接企图,很可能是上述原因。你可以试试Telnet到你的机器上的这个端口,看看它是否会给你一个Sh*ll 。连接到600/pcserver也存在这个问题。
2049 NFS
NFS程序常运行于这个端口。通常需要访问portmapper查询这个服务运行于哪个端口,但是大部分情况是安装后NFS 杏谡飧龆丝冢?acker/Cracker因而可以闭开portmapper直接测试这个端口。
3128 squid
这是Squid HTTP代理服务器的默认端口。攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet。你也会看到搜索其它代理服务器的端口:8000/8001/8080/8888。扫描这一端口的另一原因是:用户正在进入聊天室。其它用户(或服务器本身)也会检验这个端口以确定用户的机器是否支持代理。请查看5.3节。
5632 pcAnywere
你会看到很多这个端口的扫描,这依赖于你所在的位置。当用户打开pcAnywere时,它会自动扫描局域网C类网以寻找可能得代理(译者:指agent而不是proxy)。Hacker/cracker也会寻找开放这种服务的机器,所以应该查看这种扫描的源地址。一些搜寻pcAnywere的扫描常包含端口22的UDP数据包。参见拨号扫描。
6776 Sub-7 artifact
这个端口是从Sub-7主端口分离出来的用于传送数据的端口。例如当控制者通过电话线控制另一台机器,而被控机器挂断时你将会看到这种情况。因此当另一人以此IP拨入时,他们将会看到持续的,在这个端口的连接企图。(译者:即看到防火墙报告这一端口的连接企图时,并不表示你已被Sub-7控制。)
6970 RealAudio
RealAudio客户将从服务器的6970-7170的UDP端口接收音频数据流。这是由TCP7070端口外向控制连接设置的。
13223 PowWow
PowWow 是Tribal Voice的聊天程序。它允许用户在此端口打开私人聊天的连接。这一程序对于建立连接非常具有“进攻性”。它会“驻扎”在这一TCP端口等待回应。这造成类似心跳间隔的连接企图。如果你是一个拨号用户,从另一个聊天者手中“继承”了IP地址这种情况就会发生:好象很多不同的人在测试这一端口。这一协议使用“OPNG”作为其连接企图的前四个字节。
17027 Conducent
这是一个外向连接。这是由于公司内部有人安装了带有Conducent “adbot” 的共享软件。Conducent “adbot”是为共享软件显示广告服务的。使用这种服务的一种流行的软件是Pkware。有人试验:阻断这一外向连接不会有任何问题,但是封掉IP地址本身将会导致adbots持续在每秒内试图连接多次而导致连接过载:
机器会不断试图解析DNS名─ads.conducent.com,即IP地址216.33.210.40 ;216.33.199.77 ;216.33.199.80 ;216.33.199.81;216.33.210.41。(译者:不知NetAnts使用的Radiate是否也有这种现象)
27374 Sub-7木马(TCP)
参见Subseven部分。
30100 NetSphere木马(TCP)
通常这一端口的扫描是为了寻找中了NetSphere木马。
31337 Back Orifice “elite”
Hacker中31337读做“elite”/ei’li:t/(译者:法语,译为中坚力量,精华。即3=E, 1=L, 7=T)。因此许多后门程序运行于这一端口。其中最有名的是Back Orifice。曾经一段时间内这是Internet上最常见的扫描。现在它的流行越来越少,其它的木马程序越来越流行。
31789 Hack-a-tack
这一端口的UDP通讯通常是由于”Hack-a-tack”远程访问木马(RAT, Remote Access Trojan)。这种木马包含内置的31790端口扫描器,因此任何31789端口到317890端口的连接意味着已经有这种入侵。(31789端口是控制连接,317890端口是文件传输连接)
32770~32900 RPC服务
Sun Solaris的RPC服务在这一范围内。详细的说:早期版本的Solaris(2.5.1之前)将portmapper置于这一范围内,即使低端口被防火墙封闭仍然允许Hacker/cracker访问这一端口。扫描这一范围内的端口不是为了寻找portmapper,就是为了寻找可被攻击的已知的RPC服务。
33434~33600 traceroute
如果你看到这一端口范围内的UDP数据包(且只在此范围之内)则可能是由于traceroute。参见traceroute部分。
41508 Inoculan
早期版本的Inoculan会在子网内产生大量的UDP通讯用于识别彼此。参见
http://www.circlemud.org/~jelson/software/udpsend.html
http://www.ccd.bnl.gov/nss/tips/inoculan/index.html
(二) 下面的这些源端口意味着什么?
端口1~1024是保留端口,所以它们几乎不会是源端口。但有一些例外,例如来自NAT机器的连接。参见1.9。
常看见紧接着1024的端口,它们是系统分配给那些并不在乎使用哪个端口连接的应用程序的“动态端口”。
Server Client 服务 描述
1-5/tcp 动态 FTP 1-5端口意味着sscan脚本
20/tcp 动态 FTP FTP服务器传送文件的端口
53 动态 FTP DNS从这个端口发送UDP回应。你也可能看见源/目标端口的TCP连接。
123 动态 S/NTP 简单网络时间协议(S/NTP)服务器运行的端口。它们也会发送到这个端口的广播。
27910~27961/udp 动态 Quake Quake或Quake引擎驱动的游戏在这一端口运行其服务器。因此来自这一端口范围的UDP包或发送至这一端口范围的UDP包通常是游戏。
61000以上 动态 FTP 61000以上的端口可能来自Linux NAT服务器(IP Masquerade)
知道了这些端口对网络也就有一定的了解了

域名解析设置详解-一级域名-二级域名-智能解析

网站搭建过程中域名解析是非常重要的一步。

一般来说解析最基本的有:A记录类型解析和cname解析。

下面面我们讲下这两种应该怎么做。

假设我想搭建一个网站,比如我的域名是cheshirex.com我想让www.cheshirex.com和cheshirex.com这两个地址都能够访问就需要添加一个@记录和www的记录。

(cheshirex.com属于一级域名,www.cheshirex.com以及tv.cheshirex.com等等都是属于二级域名)

然后根据我们使用的服务器类型来选择A记录还是cname

A记录适用于直接解析到服务器IP,一般云服务器、VPS、独立服务器

cname适合用于虚拟空间之类的,主机上会给出cname地址。或者是使用CDN的也需要用cname类型来解析。

解析示例:

A记录到服务器IP

上图是解析详细设置记录类型选择A记录,主机记录填入@另外一条记录填www(见下图),解析线路默认即可,记录值里填入你的IP,TTL默认即可。

CNAME解析:

上图中,记录类型我们选择cname,主机记录一条是@另外一天是www,记录值填入主机上给出的或者是CDN服务商给的cname地址。

以上就是最基本的域名解析教程。

 

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

下面是稍微深入一些的

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

如果想要添加其他解析比如想做个tv.cheshirex.com这个地址的域名应该怎么设置。

我们只需要将主机记录里填入tv即可,记录类型同样跟上面教程一样是独立IP的就用A记录,是虚拟空间和CDN的就用cname。记录值根据你服务商给出的来设置。

举例:

 

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

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

下面再讲些解析线路的高级设置,解析线路阿里云目前是免费可以选择,有些域名服务商需要付费才可以选择。

给大家讲下这个解析线路起什么作用,以阿里云为例。

阿里云目前有以下几种解析线路:

默认线路:就是不区分运营商、不区分地域、不区分搜索引擎、整个世界所有运营商的解析地址都是一样的。

中国联通:解析设置只对中国联通网络有效。

中国电信:解析设置只对中国电信网络有效。

中国移动:解析设置只对中国移动网络有效。

中国教育网:解析设置只对中国教育网网络有效。

中国鹏博士:解析设置只对中国鹏博士网络有效。

世界:解析设置只对中国大陆以外的地区有效,香港台湾澳门等地区和国外地区都属于世界范围。

搜索引擎:解析设置只对中国搜索引擎有效,比如百度蜘蛛抓取你网站,他得到的服务器地址就是你设置的这个线路的地址。

不同解析线路可以设置不同记录类型

比如我默认一个线路,记录类型是A记录。然后我添加一个世界线路,记录类型选择A记录或者cname都可以。反之亦然。

线路设置举例:

假如我设置img-bbs的解析记录(这个是我专门用来做图片加速的域名img-bbs.cheshirex.com),一个是默认的解析线路,如下图:

默认线路

世界线路

以上这两个解析可以共存,不会冲突,当有域名解析请求时,首先它会查询有哪些线路,然后根据访客的地址来返回对应的地址,比如我在国外或者台湾、香港这些地区,返回的就是我下面图中记录A类型的解析。如果我在大陆内访问域名img-bbs.cheshirex.com,返回的就是cname的解析地址(这个地址是我CDN的地址)。

默认线路优先级小于其他线路。

 

 

CN2线路是什么?如何选择CN2线路服务器?

CN2是什么?

CN2,是中国电信下一代承载网(ChinaNetNextCarryingNetwork)。CN2是一个多业务的承载网络,它能够支持数据、语音、视频多种业务融合的应用,为中国电信今后开展NGN业务打下了良好的基础。中国电信构建的CN2网络,力图奠定未来10-20年里中国电信顶级运营商的基础。中国电信CN2网络一期工程由骨干网络和精品业务网络组成,尤其是承载网对新业务的支持能力,是中国电信骨干网络和其商业客户之间的重要纽带,将直接决定中国电信提供的质量和灵活性。—-百度百科解释

如何判断线路是否是CN2?

CN2线路都经过特定的路由节点59.43.x.x,我们做个路由追踪就可以看出是否是CN2。有写服务器回程线路是CN2,通过路由看不到。

如下图:

图1.广东测试

CN2路由节点测试
CN2路由节点测试

图2.江苏泰州测试

可以看出中间路由节点经过的都是59.43开头的节点。这种基本可以确定是CN2无疑。

如何选择CN2线路服务器?

CN2线路的服务器选择时需要注意的是看网络波动大不大,前提是国际光钎正常。一般我们持续ping就可以看出。

CN2线路服务器ping
CN2线路服务器ping

CN2线路服务器的价格是多少?

价格多少主要还是看带宽大小,一般香港CN2的带宽都是5M、10M的。

5M独享不限流量带宽

E3-1230/16G/1T  5M独享 5个IP  800元月

10M独享不限流量带宽

E3-1230/16G/1T  10M独享 5个IP  1000元月

如果需要香港、美国CN2服务器的可以联系QQ:28575315

韩国服务器和美国服务器哪个好点?服务器机房应该怎么选择?

韩国服务器和美国服务器哪个好点?怎么选择?

很多用户在进行服务器的选择时,经常纠结于机房区域的选择。下面给大家谈下机房选择中需要考虑的情况,以韩国和美国机房为例。
韩国和美国服务器优劣对比:
1.延时:韩国服务器延时80ms左右,美国服务器延时200ms左右。
2.带宽:韩国服务器带宽默认20M起,美国服务器带宽默认100M起。
3.防护:韩国服务器防护20G 需要一千多,美国服务器默认带10G防护 100G防护 2600元。
4.配置:配置上两个地区价格差异并不大,基本都是默认E3处理器16G内存起,韩国有些低配的特价,比较划算。

综合以上优势对比,各用户可以根据自己实际需求来选择。
比如对带宽需求大的可以选择美国服务器,对网络速度要求高的就选择韩国服务器。也可以说出需求直接跟客服咨询,当然前提是你问的客服对这些有一定的了解。

服务器租用联系QQ:28575315
韩国机房列表:
韩国SK机房(大带宽)

韩国KA机房(高防护)

韩国KS机房(超高防)

美国机房列表:

美国LA机房(单线程满速带宽)

美国BT机房(大带宽高防护)

美国LW机房(多IP站群)

美国HE机房(多配置站群)

服务器机房选择
服务器机房选择

宝塔linux面板mysql性能进阶设置

因为mysql是网站数据的核心,所以以下操作在进行之前,首先进行数据备份。防止数据意外丢失。

PHP加上mysql的环境经常会遇到各种性能问题,常见的有CPU、mysql、php、磁盘IO、缓存等各个方面。在这些问题当中mysql是最常见也最难解决的一种。

常见的mysql性能优化有使用Redis、Memcached等缓存扩展插件来解决。然而这些扩展使用的前提是网站程序支持,大多数程序并不能够完美支持这些插件。

今天就写下mysql本身配置方面的性能优化。

通常mysql性能优化有以下几个部分:

1、MySQL配置参数调优 (需要根据网站运行情况调整)
2、数据表索引调优 (效果明显,但通常优秀的开源程序都不需要调整)
3、SQL语句调优 (这是程序员或DBA干的事)

今天就研究下mysql本身配置的性能调整。

图一

mysql数据库运行状态
mysql数据库运行状态

 

图二

mysql数据库性能设置
mysql数据库性能设置

参数解读:

1、活动/峰值连接数
(图1)中当前活动的连接为1个,自MySQL服务启动以来,最高连接数为54;当最高连接数接近或等于(图2)中的max_connections时,应适当增加max_connections,需要注意的是,不要一下子增加过多,建议每次增加50,观察一段时间,不够再继续增加。

2、线程缓存命中率
(图1)中线程缓存命中率为99.78%,若这个值小于90%,建议适当增加(图2)中的thread_cache_size,建议每次增加8。

3、索引命中率
(图1)中索引命中率为99.50%,若这个值小于95%,建议适当增加(图2)中的key_buffer_size,建议每次增加64,需要说明的是,若您的数据库使用的是Innodb引擎,可忽略这个选项

4、Innodb索引命中率
(图1)中Innodb索引命中率为100%,若这个值小于95%,建议适当增加(图2)中的innodb_buffer_pool_size,建议每次增加64,需要说明的是,若您的数据库没有使用Innodb引擎,可忽略这个选项

5、查询缓存命中率
MySQL查询缓存是个比较受争议的功能,个人建议当你有在使用redis、memcached等缓存软件时,在(图2)中将query_cache_size设为0可以将其关闭,当你没有使用缓存软件,有多余的内存使用,且数据库瓶颈明显存在时,可以尝试开启查询缓存,这是个非常依赖数据表结构及SQL语句优化的功能,若数据表结构和SQL语句都针对查询缓存进行过优化,它的效果还是很不错的。

6、创建临时表到磁盘
(图1)中创建临时表到磁盘的比例是0.42%,这说明大部分临时表创建到内存了,不会过多增加磁盘IO的开销,建议,当比例大于2%时适当增加(图1)中的tmp_cache_size,建议每次增加32,当比例大于60%时,放弃吧,有些开源程序并没有专门优化过SQL语句,所以在运行过程中会开启大量临时表,加多少缓存都是不够用的。

7、已打开的表
当(图1)中的已打开的表接近或等于(图2)中的table_open_cache时,可以适当增加table_open_cache,但若设置过大可能导致您的程序频繁中断MySQL连接,建议在1024以内,最大不要超过2048。

8、没有使用索引的量、没有使用索引的JOIN量
若不为0,就检查下数据表索引吧,其实只要没有疯涨,比如一天增涨几千,一般可以忽略,必竟优化索引还是程序员或DBA去干比较合适。

9、排序后的合并次数
如果这个值在缓慢增张,建议适当增加(图2)中的sort_buffer_size,建议每次增加512,但最大不要超过8192,如果这个值一直在疯涨,增加sort_buffer_size也没用,就放弃这个选项吧,这个锅还是给程序开发者背。

10、锁表次数
如果服务器CPU开销不大的情况下,疯狂锁表,建议你将所有数据表转换成innodb,记得转换前备份哦。

11、优化方案
这个是我们根据内存大小给的一个推荐优化方案,仅是建议仅用于基础参考值,还是要根据实据情况来调整每一个配置项。

注意:保存参数配置后不会立即生效,记得要重启MySQL服务。

面板性能设置建:https://www.homedt.cn/911.html

服务器租用联系QQ:28575315

宝塔linux面板性能设置

准备工作:

安装好宝塔面板。

安装面板里的Linux工具箱

LAMP或者LNMP环境

性能设置:

1.内存清理:添加计划任务,定时清理内存,可以设置为每天一次,时间建议选择在网站访客最少的时间段,个人建议凌晨4点30分左右。(清理内存时,正在访问的访客可能会出现404)

2.添加Swap交换分区(类似于Windows的虚拟内存):

Swap推荐值:
物理内存 Swap
512M   1024M
1GB    1500M
2GB    2048M
4GB    4096M
6GB+  4096M

建议不要设置过高,这个内粗是在磁盘上虚拟的,速度较慢,当我们服务器内存足够时尽量使用服务器内存。

3.PHP扩展相关:

若您的程序不需要PATH_INFO,请把它关闭

若确定您的程序不需要,尽量不要安装ZendGuardLoader,ioncube解密扩展

若程序支持,尽量安装fileinfo、exif扩展,以提升站点性能和安全性

若程序支持,尽量使用imagemagick代替PHP自带GD,以提升性能

安装PHP缓存扩展,根据即将部署的站点需求,尽量使用更高的PHP版本,另外缓存安装建议如下:
脚本缓存:xcache、opcache 任选一项安装,PHP5.2-5.4建议使用xcache,PHP5.5以上建议使用opcache
内容缓存:若程序支持,建议优先顺序如下: redis > apc > memcached > memcache
注意:内容缓存和脚本缓存,都各只安装一个,不要安装多个!

 

4.PHP并发调整建议:

PHP并发调整建议
PHP并发调整建议

注1:容易受到CC攻击的站点使用的PHP版本,尽量不要设置过高的并发,以免服务器被打死
注2:VPS性能参差不齐,以上建议仅供参考,请根据实际使用效果自行调整
注3:不建议设置超过300并发上限,哪怕您的服务器性能足够好;若发现并发不够用,请尝试优化站点数据库缓存可能更有效。

5.MySQL数据库版本建议:

CPU/内存 数据库
1H/512M  MySQL5.1
1H/1G       MySQL5.1/5.5
2H/2G      MySQL5.1/5.5
2H/4G      MySQL5.5/5.6
4H/4G+   MySQL5.5/5.6/5.7

6.数据库性能设置建议:

mysql数据库性能设置建议
mysql数据库性能设置建议

这里的性能设置可以直接选择宝塔面板自带的优化方案,然后等站点运行一段时间后查看数据库当前状态,根据状态报告来进行更细节的调试。

注意:此项设置需要保存多次才生效,同时保存多次后需要重启一次数据库!

mysql性能设置详细教程见:https://www.homedt.cn/920.html

服务器租用联系QQ:28575315

香港沙田BGP机房和香港新世界NWT机房哪个ping更低?

今天特意做个测试香港沙田BGP机房和香港新世界NWT机房。

首先两个机房走的都是cn2的线路。路由节点都是59.43

话不多说直接放图

测试地点河南省郑州市-联通网络

香港沙田BGP机房

香港沙田BGP机房
香港沙田BGP机房

香港新世界NWT机房

从ping上看明显香港沙田BGP更快,但是有重要的一点,很多时候但线路是无法正确分辨出速度延时的。

我们看下下面全国ping的测试结果。

香港沙田BGP机房全国ping

香港沙田BGP机房全国ping
香港沙田BGP机房全国ping

香港新世界NET机房全国ping

香港新世界NET机房全国ping
香港新世界NET机房全国ping

可以看出从全国平均水平来看,速度基本是不相上下的。

如果考虑购买的话可以综合各方面选择

沙田BGP机房目前不可以增加硬盘等,但是默认带宽10M,在带宽价格上相对低一些。

香港新世界NWT机房各项设施比较完善,IP、内存、硬盘、等都可以加。并且还可以提供防护服务,当让防护价格比较高,需要防护的可以看香港PAC机房高防服务器

以上结果作为各个用户们的参考。

机房链接

香港沙田BGP机房

香港新世界NWT机房

记一次mysql数据库无法启动,数据恢复的解决办法

机器环境

宝塔linux面板5.3.0

linux7.3

nginx1.12

mysql5.5

php5.6+7.2

就在刚刚,习惯性的打开宝塔查看机器运行状态。

然后发现mysql状态中查询缓存命中率有些低,就手动调整了下查询缓存,调高了些。

然后。。。数据库炸了,无法启动

这时候第一反应是马上备份数据库,这时候通过宝塔面板已经无法备份数据库了,数据备份出来全是20B的数据。

随即直接将/www/server/data目录整个压缩备份,防止整个服务器出问题直接下载到了本地。

(备份data目录主要是因为宝塔面板的datadir目录定义到了/www/server/data目录,如下图)

mysql数据库数据文件地址
mysql数据库数据文件地址

然后尝试多种方式修复无果。

这时候因为已经将数据库数据备份好,直接把数据库卸载重装,之前用的mysql5.5版本,这次还装5.5防止其他意外情况发生。

mysql5.5安装好后将数据导入原来目录。然后重启mysql数据库。

有个问题就是,在宝塔面板上看不到数据库列表了。这个后面再测试。

此种方法理论上也适用于不同平台Windows/linux之间的数据迁移。不同数据库版本之间目前还没试过,不同版本应该会出问题。

但是不管何种情况,第一时间应该想到的是备份数据,至于备份哪些可以去网络上查查。

其他面板环境同理。

 

2017/12/22更新:

前面说宝塔数据库列表不显示数据库。

然后今天添加一个新网站发现不能添加数据库。

研究了下发现问题在于前后数据库的root密码不一样。

然后我所做的操作是,点击宝塔面板的“root密码”选项,如下图

宝塔数据库root密码
宝塔数据库root密码

点进去之后我们点一次“提交”即可。

然后在宝塔数据库列表点击下方的“从服务器获取”,同步一次数据库信息,列表就出来了。

宝塔面板同步数据库
宝塔面板同步数据库

然后我重新安装了phpmyadmin程序,应该不用重装直接重启此程序就可以。

然后还有个问题,在宝塔数据库列表里,数据库密码显示是空的,当然实际上不是空,只是这里不显示。不影响数据库使用。具体的解决方法后面再研究。

点击复制数据库密码,提示数据库密码为空。