构建安全的e-commerce服务器(4)

**最后的文件检查: **

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

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus