邪恶八进制信息安全团队技术讨论组's Archiver

EvilOctal 2005-5-11 01:19

[转载]提高UNIX安全的方法

  信息来源:邪恶八进制信息安全团队
文章作者:不详

声明:欢迎转载和传播本安全文摘,但请保持原文内容。版权归原作者所有。

一、补丁程序
   旧版本的操作系统往往含有安全漏洞,而这些漏洞往往又是为网络黑客店所熟知的。为了系统的安全,应该使用最新版本的操作系统,并及时安装补丁程序。
   可从供应商那里获取最新的补丁程序并安装。有的补丁程序可能会更新系统的缺省设置。因此在安装新的补丁程序后,有必要重新检查系统的设置情况,例如一些文件的读写权限情况,以及一些重要的系统配置文件的内容等。
   UNIX系统中有专门的patch命令,用于安装补丁程序。具体的使用方法是:

      # patch < patch_filename

   有关该命令的更详尽的信息,可以参照对应的man手册页。

二、网络安全措施

1、服务过滤
   服务过滤是指关闭系统上的一些服务,最常见的服务是FTP和TELNET。
   FTP:用于文件传输,但是如果用户的系统只想从别的机器上获取文件,就没有必要提供该项服务。可以从/etc/inetd.conf文件中将对应的项注释掉(在该行的行首加上"#"符号即可)。
   TELNET:明显的安全威胁之一(建议用户使用TCP_Wrapper来限制访问权限,提高该项服务的安全性)。
   要确保只有真正需要的服务才被允许外部访问,并合法地通过用户的路由器过滤检查。尤其在下面的服务不是用户真正需要时候,要从路由器上将其过滤掉。

      NAME      PORT         PROTOCOL
      -------------------------------------
      echo        7         TCP/UDP
      systat      11         TCP
      netstat     15         TCP
      bootp      67         UDP
      tftp       69         UDP
      link       87         TCP
      supdup      95         TCP
      sunrpc     111         TCP/UDP
      news      144         TCP
      snmp      161         UDP
      xdmcp      177         UDP
      exec      512         TCP
      login      513         TCP
      shell      514         TCP
      printer    515         TCP
      biff      512         UDP
      who       513         UDP
      syslog     514         UDP
      uucp      540         TCP
      route      520         UDP
      openwin    2000         TCP
      NFS      2049         TCP/UDP
      X11      6000 to 6000+n  TCP

2、r命令
   r命令是由Berkley开发的一系列命令软件。由于这些命令都是以"r"开头,因此统称为r命令。

   a、不真正需要使用r命令

   这时最好去掉这些r命令服务(例如rlogin和rsh等等),有特殊要求时除外。这可以减少系统的口令暴露在网络监听程序之下的可能性。而r命令常常又是系统不安全因素和受到攻击的源由。因此,对r命令服务应该是能去掉就去掉。

   b、必须执行r命令

   这时建议用户针对特定的需求使用更安全版本的r命令。Wietse Venema的logdaemon程序包含有更安全版本的r命令守护进程。这些版本的r命令只能通过/etc/hosts.equiv而不是$HOME/.rhosts来获取认证。它也能通过配置来禁止通配符(+)的使用。
   如果用户决定要使用r命令,就一定要在路由器上过滤掉端口512、513和514(TCP)。这可以阻止网络外部用户使用这些r命令,而内部用户却允许使用这些命令。
   建议使用TCP_Wrapper来提高系统的安全性,并能对系统的被访问情况做更完善的记录。

3、/etc/hosts.equiv文件

   a、建议用户采纳下面的措施——不论用户的系统是否使用r命令

   检查系统是否需要/etc/hosts.equiv文件。
   这样的命令能从一个被信任的主机上不需口令地访问系统。
   如果不允许r命令服务或者不希望对其他系统加以信任,则应该去掉该文件,即删除该文件。如果该文件不存在,即使不小心允许了r命令服务,也不会造成安全问题。

   b、如果离不开/etc/hosts.equiv文件
   
   确保系统只对尽量少的系统加以信任权限。
   不要对以前的管理使用/etc/netgroup文件——如果在运行NIS(也称为YP或NIS+)。
   不要对网络系统内部的主要或在用户管理范围内部的主机加以信任权限。
   确保使用的是完全的主机名,例如 hostname.domainname.cn
   确保在该文件中没有使用包含"+"的记录,因为这样会使任何一台主机上的任何用户都可以不加口令地访问系统,这会对系统的安全造成很大的损害。
   确保不要在该文件中使用任何"!"或"#",因为在该文件中那并不表示注释信息。
   确保该文件中的第一个字符不是"-"。
   确保该文件的访问权限被设置成600。
   确保该文件的所有者被设置成为root。
   在每次安装补丁程序或操作系统之后,都应该重新检查该文件夹的设置情况。

4、/etc/netgroup文件
   如果使用NIS(也称YP)或NIS+,一定要在该文件中的每个netgroup中设置成只包含usernames或只包含hostnames。所有的工具程序都只分析该文件中的hosts或usernames,但没有对这两个部分都做分析。使用独立的netgroups会使记忆每个netgroup的功能变得简单。配置这些额外的netgroups所付出的时间与使系统置于不安全的状态相比,这个付出还是值得的。
   具体的信息,请参照相应的UNIX联机手册。

5、$HOME/.rhosts文件

  a、不论系统上是否使用了r命令访问,建议采纳的措施

   确保任何用户在他们的$HOME目录下都没有.rhosts文件存在。这些文件比/etc/hosts.equiv会造成更大的安全漏洞,因为任何系统上的用户都可以创建该文件。对这些文件有特殊的应用,例如实现无人看管一的网络备份。
   建议使用cron机制来定期检查并报告$HOME/.rhosts文件的内容,并适当地删除掉该文件。应该使其他用户了解到为了系统的安全,才进行这种审计工作。cron任务管理可以使用命令crontab -e,从而实现在特定的时间完成特定的任务。有关cron的更具体的信息,请参照具体的UNIX系统联机手册。

   b、必须要有该文件

   这时,确保该文件的第一个字符不是"-"。
   确保该文件的访问权限被设置成600。
   确保该文件的所有者被设置成被对应帐号的用户。
   确保该文件中不含有任何的"+"符号,因为该设置会使任何系统上的任何用户都能访问本系统。
   确保在.rhosts内部使用netgroups,不允许未经允许的用户访问该帐号。
   确保在该文件中不含有"!"或"#"符号,这两个符号在该文件中并不代表注释。

6、NFS

   在使用NFS的时候,可以缺省地依靠NFS服务器的安全性来保证被加载(mount)的文件的安全性。
   一定要在路由器上过滤掉NFS传输。在端口111上过滤掉TCP/UDP,在这端口2049上过滤掉TCP/UDP。这会阻止系统子网以外的主机来访问用户系统上被共享的文件系统。
   如果可能,请尽量安装上补丁程序。
   NFS有很多的安全漏洞。如果系统不是真正需要,尽量去掉NFS服务。具体去掉NFS服务的步骤,请参照UNIX服务商提供的联机手册。
   一定要激活NFS端口监控功能。
   在/etc/exports或/etc/dfs/dfstab文件中仅共享真正需要共享的文件系统。如果不能确认是否应该共享某个文件系统,那么就不要共享该文件系统。
   不要在一个NFS服务器的exports文件中自引用(self-reference)。也就是说,共享的文件系统不能向NFS服务器本身公布共享文件系统。尤其是,确保该NFS服务器不出现在它的exports文件的任何netgroups中。
   不要允许在exports文件中包含localhost记录。
   一定要只向包含全名的主机公布共享文件系统,例如,使用完全的主机地址machinename.domainname.cn,而不要简写成machinename。
   确保公布的文件系统列表不超过256个字符。如果在/etc/exports中包含主机访问列表,该列表的长度不要超过256个字符。
   建议在系统的所有文件系统上运行fsirand并定期地重新运行该程序。具体的方法是:
   首先,要确保系统上已经安装了fsirand的补丁程序。
   其次,要确保文件系统被卸载,然后运行fsirand。
   可预测的文件句柄可以帮助网络黑客通过NFS来攻破系统。
   确保用户从不大意地向所有的系统公布共享文件系统。
   在/etc/exports文件中使用-access=host.domainname.cn选项或相似的对应选项。更详细的信息可以参照"exports"的"dfstab"帮助手册。
   尽量以只读的方式共享文件系统。
   如果系统需要运行NIS服务,那么一定要在exports文件中和加载请求(mount request)中使用安全先项(如果系统上支持安全选项)。
   建议使用命令showmount -e 来查看系统当前被共享的文件系统,以检查其是否有安全漏洞。该命令的语法是:showmount -e ipaddress,其中ipaddress是被检查的主机的IP地址。
   确保文件/etc/exports的权限被设置成644。
   确保文件/etc/exports的所有者被设置成root。
   确保运行的portmapper或rpcbind不转发(forward)从客户来的请求。恶意的NFS client能令服务器的portmapper守护进程将请求转发给mount守护进程。该mount守护进程会处理到来的请求,就好象是直接从protmapper分来的。
   如果文件系统是自动加载的,这样就会给客户不需认证便可访问系统文件系统的权限。
   要清楚在文件/etc/exports中所作的改变要到用户运行/usr/etc/exportfs或相似命令之后才起作用。

7、/etc/hosts.lpd文件

   确保该文件的第一个字符不是"-"。
   确保该文件的访问权限被设置成600。
   确保该文件的所有者被设置成root。
   确保在该文件中不使用"!"或"#"符号。这些符号在该文件中不表示注释。

8、安全的终端设置

   该文件可能是/etc/ttys、/etc/default/login或/etc/security。具体的信息可以参照对应UNIX系统的帮助手册。
   确保从所有不需要root登录权限的记录中删除掉安全选取项。此外,如果不希望其他用户能以单用户的方式重新启动的话,还应该从console中删除掉安全选项。
   确保该文件的所有者是root。
   确保该文件的访问权限被设置成644。

9、网络服务安全

   /etc/inetd.conf 文件
   确保该文件的服务权限被设置为600。
   确保该文件的所有者是root。
   尽量过滤掉不真正需要的服务。
   要完成这一点,建议在该文件对应行的第一个字符前加上一个"#"符号。这样做的好处是,如果以后要想恢复该项服务,只要去掉"#"符号即可。最好去掉所有的r命令服务和tftp服务,因为它们会造成系统明显的安全漏洞。
   对该文件的改动,要在重新启动 inetd 进程之后才能发生作用。重新启动 inetd 进程的方法是:

   #kill -HUP inetd的进程号

   在有的系统上(例如AIX),上面的命令还不够,具体的命令可以参照使用UNIX系统的联机手册。

10、/etc/services 文件

   确保该文件的访问权限被设置成644。
   确保该文件的所有者是root。

11、/etc/aliases 文件

   通过在行首加上一个"#"字符来注释掉 decode 别名。要想使该文件的修改发生作用,必须手工地运行命令/usr/bin/newaliases。如果运行NIS(YP)服务,还要重新创建映射表。
   确保所有由alias执行的程序的所有者是root,服务权限是755,并保存在系统的目录中,例如/usr/local/bin。如果用户的系统正在使用smrsh,程序的执行权限还要做进一步的限制。具体的设置,请参阅smrsh的文档手册。

12、portmapper 服务

   portmapper 是将RPC服务映射为TCP/IP服务的系统守护进程,每个RPC服务都要在portmapper中注册,之后才能够为系统提供服务。
   为使其更安全,应尽量去掉非必需的、系统在启动时启动、并在portmapper中注册的服务程序。

13、trivial ftp (tftp) 服务

   tftp 主要用于无盘工作站的启动。它与 ftp 类似,但没有口令保护。因此如果系统提供tftp服务,那么其他主机上的所有用户都可以通过tftp获取本系统上的文件。
   如果该服务并不必须,应在文件/etc/inetd.conf中去掉该服务,然后重新启动 inetd 进程(方法前面已提到)。
   如果该服务是必须的,请阅读 AUSCERT Advisory SA-93:05。

14、TCP-Wrapper 程序包

   确保使用该程序包。
   安装新程序包,并根据具体的UNIX系统进行配置。
   激活 PARANOID 方式。
   考虑使用 RFC931 选项。
   通过在 /etc/hosts.deny 文件中加入一行"all:all",来拒绝所有的主机访问,然后通过在 /etc/hosts.allow文件中加入信任的主机名称来显式地列出允许访问的主机名称。
   更详尽的信息,可以参阅该程序包的帮助手册。
   建议用户记录所有在 /etc/inetd.conf 文件中提供的服务。
   建议用户考虑记录系统上所有的UDP服务。如果用户要对UDP服务做记录,就必须在 /etc/inetd.conf 文件中使用 nowait 选项。

页: [1]
© 1999-2008 EvilOctal Security Team