• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 構建安全的e-commerce服務器

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    一. Background 基于 Internet 的 網絡 經濟一直吸引著人們的眼球,隨著門戶網站的局勢已定,現在又涌現出一批以“電子商務”命名的網絡公司。相比之下,他們比較冷靜和謹慎。在企業級應用上,他們不僅僅滿足于協助中小企業上網,更多的是想提供一些電子商

    一.Background

    基于Internet網絡經濟一直吸引著人們的眼球,隨著門戶網站的局勢已定,現在又涌現出一批以“電子商務”命名的網絡公司。相比之下,他們比較冷靜和謹慎。在企業級應用上,他們不僅僅滿足于協助中小企業上網,更多的是想提供一些電子商務的主打產品:CRM、ERP、SCM等,或者提供從IDCASP一條龍服務。 

    但是,就我所經歷的情況來看,真正能埋頭做產品的公司微乎其微。一是因為投入太大,二是因為很難找到合適的市場定位。做方案和集成,無非是東拼西湊,糊弄初級客戶,完全沒有自己的東西。那么,目前電子商務公司除了做一些網站建設和應用項目,還有哪些盈利點?依我所見,由于國內的電子商務環境還不成熟,沒有完整的信用體制和支付手段,在這個基礎上,許多電子商務活動都是很難開展的??蛻舻念檻]也很多,僅從安全性上考慮,比如你做ASP(應用服務提供商),客戶很難接受與其他人共享一塊硬盤,把數據交給你維護更是憂心忡忡;辛辛苦苦開發出一套系統,放到網上,很輕易的被黑客竊取了源代碼,讓人心痛;架在一個不堪一擊系統上的應用,黑客篡改了頁面和數據,都很難向客戶交待,影響了自己的聲譽和進一步的業務合作。 

    這就體現出了安全的重要性。是的,安全和黑客技術是比較偏,有些搞軟件開發的人甚至對此嗤之以鼻,但是我們不能否認安全在電子商務中的基石作用,不考慮安全和不懂安全的系統分析員來設計開發電子商務系統,最后注定會失敗的很慘。

    安全是一個很復雜的系統工程,從最初的制度策略的制定,到最后整個系統的implement,有很多環節。本文僅僅介紹構造一個e-commerce服務器,來說明在Internet上放置一個可以安全運行的電子商務WEB服務器也不是那么的簡單。

    二.Apache

      為什么要選擇Apache?中小企業比較樂于接受較低的系統報價,UNIX的網管們也可以從技術上替我解釋這個問題。是的,相比于漏洞層出不迭的IIS來說,Apache在安全界享有良好的聲譽,但是一個默認安裝的Apache還是不夠。

    1)      操作系統

    Apache盡管發布了Windows、Linux、BSD家族和其他操作系統的版本,但毫無疑問的是,UNIX是最好的選擇。首先是遠程管理上的方便,同時SSH提供了遠程管理維護的加密通道。在系統性能上,UNIX類系統更加易于優化配置。

    2)      自身的漏洞

    盡管Apache的內核沒有太大的buffer overflowsexploits,但是在1.3.19以前的版本有一個mod_rewrite漏洞。建議安裝最新的版本1.3.20。

    3)      外來的隱患

    現在的電子商務網站內容都不是靜態,而是動態生成的,所以需要額外的一些模塊,如JavaJserv)、Perlmod_perl)、PHPmod_php)。這些模塊給Apache引入了安全隱患。如Windows平臺上的Apache+PHP存在目錄遍歷漏洞,UNIX平臺上,某些版本的Tomcat引擎(Java ServletsJSP)也存在目錄遍歷、甚至泄露.jsp源代碼的漏洞。

      Apache和其它軟件產品一樣,多多少少存在安全問題。我們不要在嘲笑IIS滿身窟窿同時,對Apache抱著100%的放心。一般情況下,有兩個因素導致軟件的不安全性:技術上和配置。如果網管們都能很好的配置服務器,相比之下,軟件中的一些BUG是很容易解決的。

     

    三.SSL

      Internet是一個開放的系統。大部分的網絡通信都是不安全的,就好比傳統郵政中的明信片郵寄,惡意用戶可以偷看明信片內容、篡改和偽造身份發送。

      SSL,即Secure Socket Layer,是工作在網絡層與會話層之間的協議,它在TCP/IPHTTP之間增加了一個加密層,主要是使用公開密鑰體制和X.509數字證書技術保護信息傳輸的機密性和完整性,它不能保證信息的不可抵賴性,主要適用于點對點之間的信息傳輸,常用于Web Server方式。

      電子商務系統中,最常用的加密協議是SSLSET。SET是在應用層,而SSL是在會話層,對工作在HTTP協議以上的用戶而言,加密是透明的。關于SSLSET的比較,請參考其他文章。事實上,最容易實現的方案就是采用SSL,新推出的TLS也未被廣泛使用。

    四.Apache+SSL

      好,下面將給出一些實踐內容,介紹如何安裝一個安全的Apache SSL Server。首先,必須保證網絡和操作系統的安全性:安裝了防火墻和路由器并且配置正確,操作系統已打補丁且做了安全優化,系統日志的單獨存放等等。

      Apache服務器本身不支持SSL,我們有很多選擇可以完成Apache/SSL的合并:(1Apache-SSL計劃(http://www.apache-ssl.org),它集成了Apache服務器和SSL;(2)第三方的SSL補丁,例如Covalent NetworksCovalent SSL (http://www.covalent.com);(3mod_ssl,它是通過可動態加載的模塊mod_sslhttp://www.modssl.org)來支持SSL;(4)基于Apache并集成了SSL能力的商業Web服務器,然而使用這些商業Web服務器主要是北美,這是因為在那里SSL使用的公開密鑰的算法具備專利權,例如RedHat Secure Serverhttp://store.redhat.com/commerce/)。

    我們選擇第三種方法,這樣我們就使用Apache的最新版本。去三個站點下載以下軟件包:

    Apachehttp://www.apache.org

    OpenSSLhttp://www.openssl.org

    mod_sslhttp://www.modssl.org

     下面是安裝步驟:

     A 準備

    解開apache、opensslmod_ssl/usr/local/src目錄下。

     B  編譯Openssl

    切換到目錄/usr/local/src/openssl-0.9.6

    1./Configure linux-elf threads fPIC prefix=/usr/local/ssl

    2make

    3make test

    4make install

     C 配置mod_ssl

    進入目錄/usr/local/src/mod_ssl-2.8.0-1.3.17執行以下命令:

    ./configure --with-apache=../apache_1.3.17

     D 配置Apache

    進入目錄/usr/local/src/apache_1.3.17

    1. export SSL_BASE=../openssl-0.9.6

    2. ./configure \

    --prefix=/usr/local/apache \

    --enable-module=ssl \

    --disable-rule=SSL_COMPAT \

    --enable-module=rewrite \

    --enable-module=auth-digest \ # use MD5 hashes for HTTP

    # basic authentication

    --enable-module=vhost_alias \ # enable virtual hosts

    --enable-module=log_referer \ # enhance logging

    --disable-module=userdir \ # not used in e-commerce apps

    --disable-module=autoindex \ # do not list directories

    3. make

    4. make certificate TYPE=dummy

    5. make install

    6. /src/httpd –l

     現在Apache已經安裝好了,可以通過httpd l來查看安裝的模塊。

     下面是一些要檢查的安全設置:

     SSL

    httpd.conf中打開SSL

    Port 80

    Listen 80

    Listen 443

    SSLSessionCache dbm:/usr/local/apache/ logs/ssl_scache

    SSLSessionCacheTimeout 1200

    # For increased performance use "SSLMutex sem" instead of the line below

    SSLMutex file:/usr/local/apache/logs/ssl_mutex

    SSLLog /usr/local/apache/logs/ssl_engine_log

    # change the log level default from "info" to "warn"

    SSLLogLevel warn

    SSLOptions +OptRenegotiate

     打開虛擬主機的SSL支持:

    # Within the ...

    SSLEngine on

    # Replace with certificate file name

    SSLCertificateFile /usr/local/apache/conf/ssl.

    cert/

    # Replace with key file name

    SSLKeyFile /usr/local/apache/conf/ssl.key/

    SSLVerifyClient none

     定制SSLLOG格式:

    LogFormat clfa "%h %l %u %t \"%r\" %>s %b\ %{SSL_PROTOCOL}x  %{SSL_CIPHER}x \"%{SSL_CLIENT_S_DN_CN}x\""

    CustomLog /usr/local/apache/logs/aclearcase/" target="_blank" >ccess_log clfa

     被保護的目錄:

    SSLCipherSuite HIGH: MEDIUM

    AuthType Digest

    AuthName "Beta code testing"

    AuthDigestDomain /test/ http://test.my.dom/beta/

    AuthDigestFile /usr/local/apache/conf/

    digest_pw

    Require valid-user

     最后的文件檢查:

    1. SSL證書和公鑰不能存放在DocumentRoot下;

    2. SSL 證書和公鑰必須被root所擁有,chmod 400 *.crt;

    3. 移去/htdocs/cgi-bin中的所有示例文件;

    4. /htdocs下的所有文件被nobody所擁有。

    如果你不怕配置麻煩,最好把Apache放到一個chroot的環境中運行。:)

      關于如何生成證書請求包和到CA中心去簽署,請參考其他文章。目前國內也有很多CA中心,如中國電信電子商務安全認證中心(http://www.sinocol.com/),都可以對個人頒發證書。

     五.Hardening e-commerce Server

      盡管Apache安裝和配置的都很安全,但是一臺具有薄弱口令或者運行著象wu-ftpd那樣不安全服務的LINUX還是很容易被攻破。一般來講,一臺WEB服務器僅僅需要的其他服務只有SSH—遠程管理所用。不要安裝x-windows,編譯器如gcc等應該在系統穩定運行后刪去,這樣可以避免一些script-kiddiez的破壞。

      同時,一些包過濾規則(ipfw,ipchains,iptables)應該被應用。這里我們將討論Linux下的ipchains,假定有以下需求

     1.  服務器有兩塊網卡

    2.  外網卡僅僅允許80443端口數據的incoming

    3.  外網卡僅僅允許>1023端口數據的outgoing

    4.  內網卡僅僅允許22、80、443端口的incoming

    5.  內網卡僅僅允許>1023端口數據的outgoing。一般的連接是數據庫,oracle1524port,SQL Server1443,SSH可以加上-P選項來指定大于1023的用戶端口。

    6.  內網卡允許ICMP響應

     命令如下(eth0外網卡,eth1內網卡):

    ipchains -A in-eth0 -p tcp --dport 80 -j ACCEPT

    ipchains -A in-eth0 -p tcp --dport 443 -j ACCEPT

    ipchains -A in-eth0 -p udp --dport 53 -j ACCEPT

    ipchains -A in-eth0 -j DENY

    ipchains -A out-eth0 -p tcp --dport 1024:65535 -j ACCEPT

    ipchains -A out-eth0 -p udp --dport 53 -j ACCEPT

    ipchains -A out-eth0 -j DENY

    ipchains -A in-eth1 -p tcp --dport 22 -j ACCEPT

    ipchains -A in-eth1 -p tcp --dport 80 -j ACCEPT

    ipchains -A in-eth1 -p tcp --dport 443 -j ACCEPT

    ipchains -A in-eth1 -p udp --dport 53 -j ACCEPT

    ipchains -A in-eth1 -p icmp -j ACCEPT

    ipchains -A in-eth1 -j DENY

    ipchains -A out-eth1 -p tcp --dport 22 -j ACCEPT

    ipchains -A out-eth1 -p tcp --dport 1024:65535 -j ACCEPT

    ipchains -A out-eth1 -p udp --dport 53 -j ACCEPT

    ipchains -A out-eth1 -p icmp -j ACCEPT

    ipchains -A out-eth1 -j DENY

    剩下的工作就是重新編譯系統內核,禁用不需要的模塊,可以使某些rootkits失效。

    最后,檢查WEB SERVER上運行著的程序的安全性,有沒有緩沖區溢出等安全問題。

    六.參考資料

    Improving Apache, by GARY BAHADUR & MIKE SHEMA

    SSL: Theory and Practice, Zeus Technology

    LASG, i.e. Linux Administrators Security Guide

     

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>