系统 安全 是站点安全的主要部分。如果你的系统存在明显漏洞,那么再好的物理环境和 网络 环境也保不了你。一个很明显的问题是,如果你的 WEB" name="description" />

系统安全初始化

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

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

2 Freebsd的初始安全配置
Freebsd在设计之初就考虑了安全问题,在初次安装完成后,它基本只打开了22SSH)和25Sendmail)端口,然而,即使是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命令看一下,会看到本机打开的所有端口。除了必须的网络端口如SSHFTPWEB,其他端口都关闭。如果你不熟悉这些端口对应什么程序,那么请参看/etc/services文件,里面有端口和服务的对应列表。
Redhat 9.0默认安装完成后,请进入/etc/rc2.d/etc/rc3.d,将系统启动时打开的不必要服务都在这里注销掉。这些服务通常包括sendmailNFSrpc等,注销的方法是将S打头的相关服务文件重命名(注意不要命名为SK 打头的其他文件)。
例如将/etc/rc2.d/S80sendmail 改名为 X80sendmail
/etc/rc3.d/S13portmap S14nfslock S28autofs S80sendmail 改名为 X13portmap X14nfslock X28autofs X80sendmail
RPC的安全问题历来很多,请注意一定不要打开111端口。
改完后需要重启Linux服务器。
如果你的Linux直接面对因特网,那么可以配置它的防火墙来实现访问控制。Linux2.4内核支持iptables2.4以下支持ipchains,它们的语法差不多,都是很好的防火墙工具。例如,如果你只允许从因特网访问SSHWWW服务,那么可将如下语句加进/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.*这个地址的WWWSSH服务,最后一条DROP语句将不符合规则的其他访问过滤掉。
这样系统在启动后即可自动运行防火墙规则。
通常在FreebsdLinux上会运行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) 禁止rloginrsh访问:删除/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文件,注释掉大部分不必要服务,只保留telnetftp服务,然后重启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源路由。

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