站点主机安全档案(2)

发表于:2007-06-10来源:作者:点击数: 标签:
接上一篇 站点主机安全档案(1) 三. 系统安全 系统安全是站点安全的主要部分。如果你的系统存在明显漏洞,那么再好的物理环境和 网络 环境也保不了你。一个很明显的问题是,如果你的WEB 服务器 存在安全漏洞,你在没有将其修补的情况下对外提供服务,那么不

接上一篇站点主机安全档案(1)

三. 系统安全
    系统安全是站点安全的主要部分。如果你的系统存在明显漏洞,那么再好的物理环境和网络环境也保不了你。一个很明显的问题是,如果你的WEB服务器存在安全漏洞,你在没有将其修补的情况下对外提供服务,那么不管你的防火墙有多坚固,也会很快被入侵。因此,系统管理员在保证系统功能稳定的同时,不得不花时间来研究系统的安全问题。
    我所接触的服务器主要有Windows2000 Server、Freebsd、Linux和Solaris。第一种是微软的产品,方便好用,但是,你必须要不断的patch它。Freebsd是一种优雅的操作系统,它简洁的内核和优异的性能让人感动。Linux和Freebsd一样,是免费的操作系统,它们都广泛使用GNU(一个伟大的组织)的实用工具集,Linux容易上手,但不如Freebsd简洁。Solaris是SUN的商用操作系统,关于SUN OS的文章在网上被贴得到处都是,但遗憾的是,它看起来并不快,而且,你也要经常对它打补丁。
    关于这几种操作系统的安全,每种都可以写一本书。我不会在这里对它们进行详细描述,只讲一些系统初始化安全配置。

1. Windows2000 Server的初始安全配置
    Windows的服务器在运行时,都会打开一些端口,如135、139、445等。这些端口用于Windows本身的功能需要,冒失的关闭它们会影响到Windows的功能。然而,正是因为这些端口的存在,给Windows服务器带来诸多的安全风险。远程攻击者可以利用这些开放端口来广泛的收集目标主机信息,包括操作系统版本、域SID、域用户名、主机SID、主机用户名、帐号信息、网络共享信息、网络时间信息、Netbios名字、网络接口信息等,并可用来枚举帐号和口令。今年8月份和9月份,微软先后发布了两个基于135端口的RPC DCOM漏洞的安全公告,分别是MS03-026和MS03-039,该漏洞风险级别高,攻击者可以利用它来获取系统权限。而类似于这样的漏洞在微软的操作系统中经常存在。
    解决这类问题的通用方法是打补丁,微软有保持用户补丁更新的良好习惯,并且它的Windows2000 SP4安装后可通过Windows Update来自动升级系统补丁。另外,在防火墙上明确屏蔽来自因特网的对135-139和445、593端口的访问也是明智之举。
    Microsoft的SQL Server数据库服务也容易被攻击,今年3月份盛行的SQL蠕虫即使得多家公司损失惨重,因此,如果安装了微软的SQL Server,有必要做这些事:1)更新数据库补丁;2)更改数据库的默认服务端口(1433);3)在防火墙上屏蔽数据库服务端口;4)保证sa口令非空。
    另外,在Windows服务器上安装杀毒软件是绝对必须的,并且要经常更新病毒库,定期运行杀毒软件查杀病毒。
    不要运行不必要的服务,尤其是IIS,如果不需要它,就根本不要安装。IIS历来存在众多问题,有几点在配置时值得注意:1)操作系统补丁版本不得低于SP3;2)不要在默认路径运行WEB(默认是c:\inetpub\wwwroot);3)以下ISAPI应用程序扩展可被删掉:.ida .idq .idc .shtm .shtml .printer。

2. Freebsd的初始安全配置
    Freebsd在设计之初就考虑了安全问题,在初次安装完成后,它基本只打开了22(SSH)和25(Sendmail)端口,然而,即使是Sendmail也应该把它关闭(因为历史上Sendmail存在诸多安全问题)。方式是编辑/etc/rc.conf文件,改动和增加如下四句:

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

    这样就禁止了Sendmail的功能,除非你的服务器处于一个安全的内网(例如在防火墙之后并且网段中无其他公司主机),否则不要打开Sendmail。
    禁止网络日志:在/etc/rc.conf中保证有如下行:

syslogd_flags="-ss"

    这样做禁止了来自远程主机的日志记录并关闭514端口,但仍允许记录本机日志。
    禁止NFS服务:在/etc/rc.conf中有如下几行:

nfs_server_enable="NO"
nfs_client_enable="NO"
portmap_enable="NO"

    有些情况下很需要NFS服务,例如用户上传图片的目录通常需要共享出来供几台WEB服务器使用,就要用到NFS。同理,要打开NFS,必须保证你的服务器处于安全的内网,如果NFS服务器可以被其他人访问到,那么系统存在较大风险。
    保证/etc/inetd.conf文件中所有服务都被注销,跟其他系统不同,不要由inetd运行任何服务。将如下语句加进/etc/rc.conf:

inetd_enable="NO"

    所有对/etc/rc.conf文件的修改执行完后都应重启系统。
    如果要运行Apache,请编辑httpd.conf文件,修改如下选项以增进安全或性能:

1) Timeout 300--->Timeout 120
2) MaxKeepAliveRequests 256
3) ServerSignature on--->ServerSignature off
4) Options Indexes FollowSymLinks行把indexes删掉(目录的Options不要带index选项)
    5) 将Apache运行的用户和组改为nobody
    6) MaxClients 150——>MaxClients 1500

(如果要使用Apache,内核一定要重新编译,否则通不过Apache的压力测试,关于如何配置和管理WEB服务器请见我的另一篇文章)

    如果要运行FTP服务,请安装proftpd,它比较安全。在任何服务器上,都不要打开匿名FTP。

3. Linux的初始安全配置
    Linux安装完成后,默认会打开一些不必要端口,运行netstat –an |grep LISTEN命令看一下,会看到本机打开的所有端口。除了必须的网络端口如SSH、FTP和WEB,其他端口都关闭。如果你不熟悉这些端口对应什么程序,那么请参看/etc/services文件,里面有端口和服务的对应列表。
    在Redhat 9.0默认安装完成后,请进入/etc/rc2.d和/etc/rc3.d,将系统启动时打开的不必要服务都在这里注销掉。这些服务通常包括sendmail、NFS、rpc等,注销的方法是将S打头的相关服务文件重命名(注意不要命名为S或K 打头的其他文件)。
    例如将/etc/rc2.d/S80sendmail 改名为 X80sendmail
    将/etc/rc3.d/S13portmap S14nfslock S28autofs S80sendmail 改名为 X13portmap X14nfslock X28autofs X80sendmail
    RPC的安全问题历来很多,请注意一定不要打开111端口。
    改完后需要重启Linux服务器。
    如果你的Linux直接面对因特网,那么可以配置它的防火墙来实现访问控制。Linux2.4内核支持iptables,2.4以下支持ipchains,它们的语法差不多,都是很好的防火墙工具。例如,如果你只允许从因特网访问SSH和WWW服务,那么可将如下语句加进/etc/rc.d/rc.local文件:

/sbin/iptables -F
/sbin/iptables -A INPUT -p tcp -d 211.96.13.* --dport 80 -i eth0 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -d 211.96.13.* --dport 22 -i eth0 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -j DROP

    说明:iptables –F刷新iptables规则表,接下来两条语句允许任何人访问211.96.13.*这个地址的WWW和SSH服务,最后一条DROP语句将不符合规则的其他访问过滤掉。
    这样系统在启动后即可自动运行防火墙规则。
    通常在Freebsd或Linux上会运行Mysql数据库服务,不要将数据库服务端口(3306)暴露在防火墙之外。如果运行Apache,同样要做如Freebsd的修改。

4. Solaris的初始安全配置
    关于Solaris的安全配置网上有一篇非常好的文章,叫做《The Solaris Security FAQ》,照着做就可以了。

    1) 禁止root从网络直接登陆:修改/etc/default/login文件,确保CONSOLE=/dev/console被设置,该行只允许root从控制台登陆。将root用户加入/etc/ftpusers,保证root不可以远程使用ftp。
    2) 禁止rlogin和rsh访问:删除/etc/hosts.equiv和/.rhosts文件,从/etc/inetd.conf文件里注释掉所有以r打头的服务。
    3) 帐号控制:删除、锁定或注释掉不必要的系统帐号,包括sys/uucp/nuucp/listen等。
    4) 改变/etc目录的访问权限:该目录下文件不应该对同组用户可写,执行:chmod –R g-w /etc (不推荐)
    5) 在solaris2.5 以上版本的系统中,创建/etc/notrouter文件来关闭solaris默认的路由转发。
    6) 禁止automounter:删除/etc/auto_*配置文件,删除/etc/init.d/autofs
    7) 禁止NFS服务:删除/etc/dfs/dfstab,重命名/etc/rc3.d/S15nfs.server,重命名/etc/rc2.d/S73nfs.client (不要再以S打头)
    8) 禁止rpc服务:重命名/etc/rc2.d/S71RPC
    9) 修改/etc/inetd.conf文件,注释掉大部分不必要服务,只保留telnet和ftp服务,然后重启inetd进程。
    10) 给系统打补丁:包括各版本Solaris通用补丁和单个补丁集合。
    11) 将如下三行加进/etc/init.d/inetinit文件:

ndd -set /dev/ip ip_forward_directed_broadcasts 0
ndd -set /dev/ip ip_forward_src_routed 0
ndd -set /dev/ip ip_forwarding 0

    这样在系统启动后就关闭了IP转发和IP源路由。

下一篇站点主机安全档案(3)

(责任编辑:宋宏伟)


原文转自:http://www.ltesting.net