Pound+Tomcat vs PCI DSS
网银在线公司是做网上支付的,凡是支付行业呢,基本都是要过国外的PCI检测的,简单介绍一下:
Trustwave公司是面向全球企业和组织提供随需数据安全和支付卡行业合规性管理解决方案的领先提供商。支付卡行业数据安全标准称之为(PCI DSS)。
简而言之,过PCI认证需要通过Trustwave公司,而Trustwave公司有一项很著名的服务,就是安全扫描,扫描出来如果有中级以上的漏洞,是过不了pci检测的。
我们的服务是采用的Tomcat,弱点扫描中不合规,原因是Tomcat支持的http命令中包含DELETE、OPTIONS、PUT、HEAD和TRACE这五条命令。采用如下命令可以看服务器支持的命令:
#telnet localhost 8080
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
OPTIONS / HTTP/1.0
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
pragma: no-cache
cache-control: no-store
expires: Thu, 01 Jan 1970 00:00:00 GMT
Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
Content-Language: zh-CN
Content-Length: 0
Date: Mon, 11 May 2009 08:42:43 GMT
Connection: close
Connection closed by foreign host.
这下麻烦了,得补掉啊,TRACE命令倒是很好修补,在tomcat的server.xml中加上allowTrace="false"即可,下面也顺手改掉了server的头标,省的扫描脚本自动套用Tomcat进行深度扫描:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
server="Chinabank" allowTrace="false"/>
HEAD、PUT、DELETE、OPTIONS如何修补呢,可以让程序员写tomcat的filter来修补,这样太麻烦了,几十个tomcat进程呢,每个都改,上帝啊。
得,架一个前置机统一修改好了,前置机最好很轻,性能还得强,找来找去,找到了Pound这个利器。 原理就是修改HTTP让它之支持GET和POST这两种方法:
wget http://www.rendoumi.com/soft/Pound-2.7.tgz
tar zxvf Pound-2.7.tgz
cd Pound-2.7
vi config.c
找到:
static char *xhttp[] = {
"^(GET|POST|HEAD) ([^ ]+) HTTP/1.[01]$",
改成:
"^(GET|POST) ([^ ]+) HTTP/1.[01]$",
再找到另外两处的:
if(regcomp(&res->verb, xhttp[n], REG_ICASE | REG_NEWLINE | REG_EXTENDED)) {
改成:
if(regcomp(&res->verb, xhttp[0], REG_ICASE | REG_NEWLINE | REG_EXTENDED)) {
./configure
make
不要安装,直接拷贝个主文件,手动生成配置文件即可:
cp Pound /usr/local/bin
vi /usr/local/bin/pound.cfg
TimeOut 180
ListenHTTP
Address 0.0.0.0
Port 80
Service
BackEnd
Address 127.0.0.1
Port 8080
End
End
End
最后启动:
/usr/local/bin/pound -f /usr/local/bin/pound.cfg
就补好了。