星期四, 二月 01, 2007

网络安全之小技巧保护(IIS)Web服务器

网络安全之小技巧保护(IIS)Web服务器

作者:smtk 来源:赛迪网安全社区

通常地,大多数Web站点的设计目标都是:以最易接受的方式,为访问者提供即时的信息访问。在过去的几年中,越来越多的黑客、病毒和蠕虫带来的安全问题严重影响了网站的可访问性,尽管Apache服务器也常常是攻击者的目标,然而微软的Internet信息服务(IIS) Web服务器才是真正意义上的众矢之的。

高级教育机构往往无法在构建充满活力、界面友好的网站还是构建高安全性的网站之间找到平衡点。另外,它们现在必须致力于提高网站安全性以面对缩减中的技术预算 (其实许多它们的私有部门也面临着相似的局面)。

正因为如此,我在这里将为预算而头疼的大学IT经理们提供一些技巧,以帮助他们保护他们的IIS服务器。虽然主要是面对大学里的IT专业人员的,但是这些技巧也基本上适用于希望通过少量的财政预算来提高安全性的IIS管理人员。实际上,这里面的一些技巧对拥有强大预算的IIS管理人员也是非常有用的。

首先,开发一套安全策略

保护Web服务器的第一步是确保网络管理员清楚安全策略中的每一项制度。如果公司高层没有把服务器的安全看作是必须被保护的资产,那么保护工作是完全没有意义的。这项工作需要长期的努力。如果预算不支持或者它不是长期IT战略的一部分,那么花费大量时间保护服务器安全的管理员将得不到管理层方面的重要支持。

网络管理员为各方面资源建立安全性的直接结果是什么呢?一些特别喜欢冒险的用户将会被关在门外。那些用户随后会抱怨公司的管理层,管理层人员又会去质问网络管理员究竟发生了什么。那么,网络管理员没办法建立支持他们安全工作的文档,因此,冲突发生了。

通过标注Web服务器安全级别以及可用性的安全策略,网络管理员将能够从容地在不同的操作系统上部署各种软件工具。

IIS安全技巧

微软的产品一向是众矢之的,因此IIS服务器特别容易成为攻击者的靶子。搞清楚了这一点后,网络管理员必须准备执行大量的安全措施。我将要为你们提供的是一个清单,服务器操作员也许会发现这是非常有用的。

1. 保持Windows升级:

你必须在第一时间及时地更新所有的升级,并为系统打好一切补丁。考虑将所有的更新下载到你网络上的一个专用的服务器上,并在该机器上以Web的形式将文件发布出来。通过这些工作,你可以防止你的Web服务器接受直接的Internet访问。

2. 使用IIS防范工具:

这个工具有许多实用的优点,然而,请慎重的使用这个工具。如果你的Web服务器和其他服务器相互作用,请首先测试一下防范工具,以确定它已经被正确的配置,保证其不会影响Web服务器与其他服务器之间的通讯。

3. 移除缺省的Web站点:

很多攻击者瞄准inetpub这个文件夹,并在里面放置一些偷袭工具,从而造成服务器的瘫痪。防止这种攻击最简单的方法就是在IIS里将缺省的站点禁用。然后,因为网虫们都是通过IP地址访问你的网站的 (他们一天可能要访问成千上万个IP地址),他们的请求可能遇到麻烦。将你真实的Web站点指向一个背部分区的文件夹,且必须包含安全的NTFS权限 (将在后面NTFS的部分详细阐述)。

4. 如果你并不需要FTP和SMTP服务,请卸载它们:

进入计算机的最简单途径就是通过FTP访问。FTP本身就是被设计满足简单读/写访问的,如果你执行身份认证,你会发现你的用户名和密码都是通过明文的形式在网络上传播的。SMTP是另一种允许到文件夹的写权限的服务。通过禁用这两项服务,你能避免更多的黑客攻击。

5. 有规则地检查你的管理员组和服务:

有一天我进入我们的教室,发现在管理员组里多了一个用户。这意味着这时某个人已经成功地进入了你的系统,他或她可能冷不丁地将炸弹扔到你的系统里,这将会突然摧毁你的整个系统,或者占用大量的带宽以便黑客使用。黑客同样趋向于留下一个帮助服务,一旦这发生了,采取任何措施可能都太晚了,你只能重新格式化你的磁盘,从备份服务器恢复你每天备份的文件。因此,检查IIS服务器上的服务列表并保持尽量少的服务必须成为你每天的任务。你应该记住哪个服务应该存在,哪个服务不应该存在。Windows 2000 Resource Kit带给我们一个有用的程序,叫作tlist.exe,它能列出每种情况运行在svchost 之下的服务。运行这个程序可以寻找到一些你想要知道的隐藏服务。给你一个提示:任何含有daemon几个字的服务可能不是Windows本身包含的服务,都不应该存在于IIS服务器上。想要得到Windows服务的列表并知道它们各自有什么作用,请点击这里。

6. 严格控制服务器的写访问权限:

这听起来很容易,然而,在大学校园里,一个Web服务器实际上是有很多"作者"的。教职人员都希望让他们的课堂信息能被远程学生访问。职员们则希望与其他的职员共享他们的工作信息。服务器上的文件夹可能出现极其危险的访问权限。将这些信息共享或是传播出去的一个途径是安装第2个服务器以提供专门的共享和存储目的,然后配置你的Web服务器来指向共享服务器。这个步骤能让网络管理员将Web服务器本身的写权限仅仅限制给管理员组。

7. 设置复杂的密码:

我最近进入到教室,从事件察看器里发现了很多可能的黑客。他或她进入了实验室的域结构足够深,以至于能够对任何用户运行密码破解工具。如果有用户使用弱密码 (例如"password"或是 changeme"或者任何字典单词),那么黑客能快速并简单的入侵这些用户的账号。

8. 减少/排除Web服务器上的共享:

如果网络管理员是唯一拥有Web服务器写权限的人,就没有理由让任何共享存在。共享是对黑客最大的诱惑。此外,通过运行一个简单的循环批处理文件,黑客能够察看一个IP地址列表,利用\\命令寻找Everyone/完全控制权限的共享。

9. 禁用TCP/IP协议中的NetBIOS:

这是残忍的。很多用户希望通过UNC路径名访问Web服务器。随着NETBIOS被禁用,他们便不能这么做了。另一方面,随着NETBIOS被禁用,黑客就不能看到你局域网上的资源了。这是一把双刃剑,如果网络管理员部署了这个工具,下一步便是如何教育Web用户如何在NETBIOS失效的情况下发布信息。

10. 使用TCP端口阻塞:

这是另一个残忍的工具。如果你熟悉每个通过合法原因访问你服务器的TCP端口,那么你可以进入你网络接口卡的属性选项卡,选择绑定的TCP/IP协议,阻塞所有你不需要的端口。你必须小心的使用这一工具,因为你并不希望将自己锁在Web服务器之外,特别是在当你需要远程登陆服务器的情况下。要得到TCP端口的详细细节,点击这里。

11. 仔细检查*.bat和*.exe 文件:

每周搜索一次*.bat和*.exe文件,检查服务器上是否存在黑客最喜欢,而对你来说将是一场恶梦的可执行文件。在这些破坏性的文件中,也许有一些是*.reg文件。如果你右击并选择编辑,你可以发现黑客已经制造并能让他们能进入你系统的注册表文件。你可以删除这些没任何意义但却会给入侵者带来便利的主键。

12. 管理IIS目录安全:

IIS目录安全允许你拒绝特定的IP地址、子网甚至是域名。作为选择,我选择了一个被称作WhosOn的软件,它让我能够了解哪些IP地址正在试图访问服务器上的特定文件。WhosOn列出了一系列的异常。如果你发现一个家伙正在试图访问你的cmd.exe,你可以选择拒绝这个用户访问Web服务器。当然,在一个繁忙的Web站点,这可能需要一个全职的员工!然而,在内部网,这真的是一个非常有用的工具。你可以对所有局域网内部用户提供资源,也可以对特定的用户提供。

13. 使用NTFS安全:

缺省地,你的NTFS驱动器使用的是EVERYONE/完全控制权限,除非你手工关掉它们。关键是不要把自己锁定在外,不同的人需要不同的权限,管理员需要完全控制,后台管理账户也需要完全控制,系统和服务各自需要一种级别的访问权限,取决于不同的文件。最重要的文件夹是System32,这个文件夹的访问权限越小越好。在

Web服务器上使用NTFS权限能帮助你保护重要的文件和应用程序。

14.管理用户账户:

如果你已经安装IIS,你可能产生了一个TSInternetUser账户。除非你真正需要这个账户,否则你应该禁用它。这个用户很容易被渗透,是黑客们的显著目标。为了帮助管理用户账户,确定你的本地安全策略没有问题。IUSR用户的权限也应该尽可能的小。

15. 审计你的Web服务器:

审计对你计算机的性能有着较大的影响,因此如果你不经常察看的话,还是不要做审计了。如果你真的能用到它,请审计系统事件并在你需要的时候加入审计工具。如果你正在使用前面提到的WhosOn工具,审计就不那么重要了。缺省地,IIS总是纪录访问, WhosOn 会将这些纪录放置在一个非常容易易读的数据库中,你可以通过Access或是 Excel打开它。如果你经常察看异常数据库,你能在任何时候找到服务器的脆弱点。

总结

上述所有IIS技巧和工具(除了WhosOn以外)都是Windows自带的。不要忘记在测试你网站可达性之前一个一个的使用这些技巧和工具。如果它们一起被部署,结果可能让你损失惨重,你可能需要重启,从而遗失访问。

最后的技巧: 登陆你的Web服务器并在命令行下运行netstat -an。观察有多少IP地址正尝试和你的端口建立连接,然后你将有一大堆的调查和研究要做了。

命令行和脚本设置安全用户账户匿名FTP

该方案不能用在带有受控的访问保护概要文件(CAPP)和评估保证级别 4+(EAL4+)功能的系统中。

1. 通过输入以下命令验证 bos.net.tcp.client 文件集已安装到您的系统上:

lslpp -L | grep bos.net.tcp.client

如果没有收到输出,则该文件集未安装。

2. 通过输入以下命令验证系统的 /home 目录下是否至少有 8 MB 的可用空间:

df -k /home

步骤4中的脚本需要 /home 目录下至少有 8 MB 可用空间来安装所需的文件和目录。

3. 使用 root 权限,更改为 /usr/samples/tcpip 目录。例如:

cd /usr/samples/tcpip

4. 要设置账户,请运行以下脚本:

./anon.ftp

5. 当提示确定要修改 /home/ftp?时,输入 yes。输出类似于以下显示:

Added user anonymous.

Made /home/ftp/bin directory.

Made /home/ftp/etc directory.

Made /home/ftp/pub directory.

Made /home/ftp/lib directory.

Made /home/ftp/dev/null entry.

Made /home/ftp/usr/lpp/msg/en_US directory.

6. 更改到 /home/ftp 目录。例如:

cd /home/ftp

7. 通过输入以下命令创建 home 子目录:

mkdir home

8. 通过输入以下命令将 /home/ftp/home 目录的许可权更改为 drwxr-xr-x:

chmod 755 home

9. 通过输入以下命令更改到 /home/ftp/etc 目录:

cd /home/ftp/etc

10. 通过输入以下命令创建 objrepos 子目录:

mkdir objrepos

11. 通过输入以下命令将 /home/ftp/etc/objrepos 目录的许可权更改为 drwxrwxr-x:

chmod 775 objrepos

12. 通过输入以下命令将 /home/ftp/etc/objrepos 目录的所有者和组更改为 root 用户和 system 组:

chown root:system objrepos

13. 通过输入以下命令创建 security 子目录:

mkdir security

14. 通过输入以下命令将 /home/ftp/etc/security 目录的许可权更改为 drwxr-x---:

chmod 750 security

15. 通过输入以下命令将 /home/ftp/etc/security 目录的所有者和组更改为 root 用户和 security 组:

chown root:security security

16. 通过输入以下命令更改为 /home/ftp/etc/security 目录:

cd security

17. 通过输入以下 SMIT 快速路径来添加用户:

smit mkuser

在本例中,我们要添加一个名为 test 的用户。

18. 在 SMIT 字段中,输入以下值:

用户名 [test]

管理用户? true

主组 [staff]

组集 [staff]

另一用户可 SU 至用户? true

主目录 [/home/test]

输入更改之后,按下回车键创建用户。在 SMIT 过程完成后,退出 SMIT。

19. 用以下命令为该用户创建密码:

passwd test

当提示时,输入期望的密码。必须再一次输入新密码以确认。

20. 通过输入以下命令更改到 /home/ftp/etc 目录:

cd /home/ftp/etc

21. 通过输入以下命令复制 /etc/passwd 文件到 /home/ftp/etc/passwd 文件:

cp /etc/passwd /home/ftp/etc/passwd

22. 使用您喜欢的编辑器,编辑 /home/ftp/etc/passwd 文件。例如:

vi passwd

23. 从复制的内容中删除除 root、ftp 和 test 用户以外的所有行。编辑之后,内容看起来应该与以下类似:

root:!:0:0::/:/bin/ksh

ftp:*:226:1::/home/ftp:/usr/bin/ksh

test:!:228:1::/home/test:/usr/bin/ksh

24. 保存更改并退出编辑器。

25. 通过输入以下命令将 /home/ftp/etc/passwd 文件的许可权更改为 -rw-r--r--:

chmod 644 passwd

26. 通过输入以下命令将 /home/ftp/etc/passwd 目录的所有者和组更改为 root 用户和 security 组:

chown root:security passwd

27. 通过输入以下命令将 /etc/security/passwd 文件内容复制到 /home/ftp/etc/security/passwd 文件:

cp /etc/security/passwd /home/ftp/etc/security/passwd

28. 使用您喜欢的编辑器,编辑 /home/ftp/etc/security/passwd 文件。例如:

vi ./security/passwd

29. 从复制的内容中删去除 test 用户之外的所有节。

30. 从 test 用户节中除去 flags = ADMCHG 行。编辑之后,内容看起来应该与以下类似:

test:

password = 2HaAYgpDZX3Tw

lastupdate = 990633278

31. 保存更改并退出编辑器。

32. 通过输入以下命令将 /home/ftp/etc/security/passwd 文件的许可权更改为 -rw-------:

chmod 600 ./security/passwd

33. 通过输入以下命令将 /home/ftp/etc/security/passwd 目录的所有者和组更改为 root 用户和 security 组:

chown root:security ./security/passwd

34. 使用您喜欢的编辑器,编辑 /home/ftp/etc/security/group 文件。例如:

vi ./security/group

35. 将以下行添加到文件中:

system:*:0:

staff:*:1:test

36. 保存更改并退出编辑器,并对/home/ftp/etc/group 文件执行同样的操作。

37. 使用以下命令将相应的内容复制到 /home/ftp/etc/objrepos 目录:

cp /etc/objrepos/CuAt ./objrepos

cp /etc/objrepos/CuAt.vc ./objrepos

cp /etc/objrepos/CuDep ./objrepos

cp /etc/objrepos/CuDv ./objrepos

cp /etc/objrepos/CuDvDr ./objrepos

cp /etc/objrepos/CuVPD ./objrepos

cp /etc/objrepos/Pd* ./objrepos

38. 通过输入以下命令更改到 /home/ftp/home 目录:

cd ../home

39. 通过输入以下命令为您的用户新建一个主目录:

mkdir test

这将是新的 ftp 用户的主目录。

40. 通过输入以下命令将 /home/ftp/home/test 目录的所有者和组更改为 test 用户和 staff 组:

chown test:staff test

41. 通过输入以下命令将 /home/ftp/home/test 文件的许可权更改为 -rwx------:

chmod 700 test

此时,您已经在机器上设置了 ftp 子登录。您可以用以下的过程来测试它。

1. 使用 ftp,连接到您创建 test 用户的主机。例如:

ftp MyHost

2. 以 anonymous 登录。当提示输入密码时,按下回车键。

3. 通过使用以下命令更改至新近创建的 test 用户:

user test

当提示输入密码时,使用您在步骤 19中创建的密码。

4. 使用 pwd 命令来验证用户的主目录是存在的。例如:

ftp> pwd

/home/test

输出显示 /home/test 作为 ftp 子目录。主机上的全路径名称实际上是 /home/ftp/home/test。

没有评论:

推广链接