構建安全的e-commerce服務器(4)_Windows教程
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. 外網卡僅僅允許80和443端口數據的incoming
3. 外網卡僅僅允許>1023端口數據的outgoing
4. 內網卡僅僅允許22、80、443端口的incoming
5. 內網卡僅僅允許>1023端口數據的outgoing。一般的連接是數據庫,oracle是1524port,SQL Server是1443,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- 相關鏈接:
- 教程說明:
Windows教程-構建安全的e-commerce服務器(4)。