SUSE安全大揭秘之“十诫”(下)

2010-7-20    来源:51cto    我要评论
   | |

导读:本文将继续介绍SUSE中的一些安全细节:系统的管理、授权、认证、用户账户和环境、杀毒等

关键词:SUSE安全 系统管理、授权、认证 杀毒

 
正在加载数据...

  七、系统的管理、授权、认证

  1、在PAM配置文件里移除.rhosts支持

  .rhosts定义了哪些计算机和用户可以不用提供口令就在本地计算机上执行远程命令,很容易被攻击者利用。使用.rhosts是对用户访问控制规则的破坏,尽量关闭。如果有特殊原因,必须要使用,那就需要一些预防措施。永远不要在.rhosts里使用+通配符。.rhosts必须指定特定的可信任用户名,比如trustedhost DB1,而不是trustedhost。这种在配置HA的时候常见。要避免信任关系之外的主机,而且防火墙或者其他安全设备应该阻止外部的rlogin/rsh/rcp访问。最后,还要确保.rhost文件只有所有者可读。例如文件权限600。

  2、/etc/ftpusers

  /etc/ftpusers的列表里定义了哪些用户不允许使用系统的FTP,一般来说,应该只有普通用户可以使用FTP,而不是system这种类型的账户。当然,root用户永远都不应该使用FTP方式直接传输文件。
SUSE提供了一个netcfg的包,预填充了不该使用FTP的账户。

  3、 防止X Server在tcp6000上监听

  X Server在TCP6000上监听,接受来自其他客户端的请求。但是,X Server使用了一个相对不安全的身份验证协议,攻击者可以未授权访问到本地X Server上。使用"-nolisten tcp" 方式可以取消X Server在TCP6000上默认监听。

  4、限制用户使用at/cron

  cron.allow、 at.allow定义了谁可以使用crontab、at命令在预定的时间运行作业。在很多系统上,只有系统管理员有这种能力。即使某个用户不在cron.allow里面,用户仍然可以运行cron作业。cron.allow控制的是:crontab命令调度的权限、修改cron作业的权限。注意:不要修改/etc/at.deny和/etc/cron.deny文件,除非你的确了解他们,这两个文件里都有合理的默认内容。如果对at和cron必须加以控制,创建/etc/at.allow和/etc/cron.allow文件,增加适当的用户。

  5、限制crontab文件的权限

  系统的crontab文件只能由cron守护进程(运行超级用户权限)和crontab命令(set-UID为root)访问。允许未授权的用户读取修改crontab,可以让用户获得权限提升。

  6、配置xinetd的访问控制

  可使用简单的基于IP的访问控制,限制对xinted的非法连接。现在比较流行的工具是PortSentry,可以用于监视那些试图访问未使用端口的行为。然后再使用系统防火墙SuSEfirewall2来控制。

  7、限制root登录到系统控制台

  root直接登录到系统控制台是不允许的,除非特别情况。在其他时候,管理员应该通过无特权的账户并使用授权机制,比如su、sudo来获取额外的特权。这些机制至少提供了审计的线索。/etc/securtty让你可以规定root可从哪个tty登录。/etc/securtty列出来的都是可以登录的,注释、不存在的都是不允许root登录的。

  8、设置LILO/GRUB密码
  大多数的Linux系统,默认在引导时,有装载提示,这让攻击者破坏正常的引导变得很容易。对他设置密码,这样在试图修改LILO或GRUB的时候,就需要验证,当然,密码要够强壮。

  方法

  A、如果你有/etc/lilo.conf 文件
  在/etc/lilo.conf前面添加:
  password=

  以root执行命令:
  chown root:root /etc/lilo.conf
  chmod 600 /etc/lilo.conf

  B、如果是/etc/grub.conf文件
  在/etc/grub.conf取消password 的注释。

  以root执行命令:
  chown root:root /etc/grub.conf
  chmod 600 /etc/grub.conf

  9、对单用户模式验证

  在一些Linux上你可以在LILO模式下键入linux single进入单用户模式,或者在GRUB的引导编辑菜单。这就带来风险,进入系统的认证应该始终需要root级别的访问,防止攻击者物理访问系统。SUSE默认禁止这种进入方式,但是作为检查来说,还是需要检查一下。如果被改动的话,要搞清楚原因并恢复。8和9这两个项目都为了解决物理/启动的安全问题,也可以考虑设置只从主硬盘启动,或者设置BIOS密码。

  10、限制NFS客户端请求特权端口

  设置:NFS服务器忽略来自客户端的低于1024的源端口访问,这不会妨碍到正常的NFS操作,但可以阻止一些使用工具软件攻击的人。其配置文件在/etc/exports里。

  11、syslog的消息接收

  你的服务器是日志服务器吗?需要从网络上、其他主机上接收日志吗?如果是肯定的,启用日志系统的远程消息接受。默认情况下的系统日志的守护进程是syslogd,不在udp514上监听来自其他系统的日志消息(Solaris相反,默认是接受的。)成立一个独立的日志服务器来记录一个或多个日志,是比较推荐的安全做法。但是,如果你不是日志服务器的话,就不应该打开udp514的监听,因为这些信息的传递没有任何认证机制。攻击者也可以利用此端口发起DDOS攻击,或者不停的发送日志消息填满你的日志系统,这样以后的攻击就不会被记录到了。

  在syslog-ng.conf.in里,把下面这行加上#注释掉
  #udp(ip("0.0.0.0") port(514))

  八、用户账户和环境

  1、锁定系统账户

  有很多账户是系统账户,不会被人使用,锁定这些账户有助于减少攻击者的利用。这些账户不应该有shell。如果没有守护进程/服务使用的话,甚至可以将账户删除。比较简单的做法是直接停用,停用的做法是锁定password,设置一个无效的shell(比如/bin/false)。SUSE里使用/bin/false而不是/dev/null和/bin/nologin。

  2、空密码账户

  使用awk -F: '($2 == "") { print $1 }' /etc/shadow查找空密码账户。空密码账户是指任何人都可以登录,而不用提供密码。所有的账户都应该有健壮的密码,或者使用锁定密码的字符串:NP、*LOCKED*。

  3、设置账户过期和密码参数

  强制用户定期改变密码,设置所有活跃账户(除了系统账户)强制更改密码,例如:每90天(-M 90),下次允许更改密码之前最少的天数7天 (-m 7),用户在密码过期前28天收到警告(-W 28)。一旦密码过期,账户将被锁定7天(-I 7)。最后,密码最小长度为6。这只是一些建议,你需要根据你的实际情况在/etc/login.defs进行调整。

  4、确认在passwd, shadow,group里没有‘+’

  使用命令grep ^+: /etc/passwd /etc/shadow /etc/group检查。+用于NIS的数据映射配置,在passwd, shadow,group文件里存在+号,将会为攻击者提供一个提权的途径,应该把它们都删掉。

  5、确认除了root外,没有UID为0的账户

  检查方法:awk -F: '($3 == 0) { print $1 }' /etc/passwd
  任何UID为0的账户都拥有系统的超级用户权限,唯一的超级用户应该是root,而且还应该通过非特权账户su来获得权限。

  6、用户主目录应为750权限或者更多的限制

  用户主目录如果有任何人可写的目录,可以导致别人窃取、修改数据,或者获得其他用户的权限。对其他组成员,取消读、执行权限。不过在全局对用户主目录的权限进行修改,可能会造成服务中断。

  7、删除User.netrc文件

  find / -name .netrc
  .netrc是ftp命令的初始化文件,能够给Ftp带来一定的方便。但文件可能包含未加密的密码。在上出他们之前,要考虑.netrc文件的作用,因为可能会影响应用。但是一个良好设计的应用,不应该使用.netrc。

  8、设置默认的用户umask值

  将umask设置为077,这样由用户创建的文件和目录不会被系统上任何其他人可读。如果需要改变权限可通过chmod命令。可将uamsk命令插入到shell配置文件中来实现,例如.profile, .cshrc, etc.等。027可让同组人员可读,而022的umask值可让系统上每个用户都可读。但是,过于严格的umask会导致软件的安装问题,比如umask设置为700,那么他的应用程序或者守护进程就无法读取文件。所以一般umask的设置不能过于严格,或者在文件安装之后再控制umask。

  9、关闭核心转储

  这个问题需要问一下你的软件开发商们,他们是否需要调试程序,或者需要看到debug的信息?如果答案是否定的,则可以关闭。核心转储会大量消耗磁盘空间,并且核心转储会包含敏感数据。开发人员需要用这个功能来帮助调试。/etc/security下的limits.con文件是用来控制核心转储的开关。

  10、限制root账户su

  su命令允许你成为系统上的其他用户,常常被用来作为root执行命令。如果不希望某些用户可以su到root,在/etc/pam.d/su下加入:

  auth required pam_wheel.so

  这行命令的意思是,只允许wheel组的用户,可以su为root。其他用户在su root的时候,会收到一条消息,说该密码是不正确的。通过限制使用root账户,即使用户知道root密码,也无法成为root用户,除非它能够物理上控制这个服务器,或者他被添加到wheel组。
这样就增加了一个安全保护层,防止未经授权的访问。

  九、杀毒

  在有些系统上,比如邮件服务器、文件服务器,主要是给windows用户使用的,应该有杀毒软件来保护。linux平台下的杀毒软件有:

  Sophos http://www.sophos.com/ 商业软件
  NAI Virus Scan                商业软件
  McAfee http://www.mcafee.com/ 商业软件
  ClamAV http://www.clamav.net/ 开源软件
  f-prot Antivirus              商业软件
  f-prot Antivirus http://www.f-prot.com 商业软件
  Trend Micro                            商业软件
  Computer Associates InoculateIT http://www.cai.com/ 商业软件

  十、其他

  1、对于危险文件创建符号链接

  /root/.rhosts, /root/.shosts, /etc/hosts.equiv等文件的访问控制很薄弱,我们在第七章里已经讨论过了,攻击者会经常针对这些漏洞进行攻击,把他们链接到/dev/null,意味着任何数据都会被简单的抛弃。

  可以使用这个脚本:

  for FILE in /root/.rhosts /root/.shosts /etc/hosts.equiv \
  /etc/shosts.equiv; do
  rm -f $FILE
  ln -s /dev/null $FILE
  done

  2、打开TCP SYN Cookie的保护

  SYN攻击是一种拒绝服务攻击,目的在于消耗系统资源。这个攻击是由于TCP连接握手协议的漏洞,对方发送SYN信息,然后不再回应。这样的攻击就使得系统与数百或者上千的连接保持半开状态。是一个非常简单的攻击方法。

  3、LILO/GRUB安全

  给LILO和GRUB加上一个i的属性,这样他既不能删除也不能修改,可以有效地防止配置文件发生任何变化(不管是意外或者其他原因)。如果想要修改,必须用chattr -i命令。
chattr +i /etc/lilo.conf
chattr +i /boot/grub/menu.lst

  4、配置sudo

  sudo的是一个文件包,它允许管理员授权给用户做一些特权,这些特权超出了用户的权限,比如重启web服务。我们举个例子,因为你的web服务有bug或者不断的出现故障,那你可能需要不断地修改web的配置文件来让找出问题原因。这时候如果你要用su - root的话就会非常繁琐,因为你只是在改完配置文件之后,重启一下web服务而已。这时候sudo就派上用场了,它允许管理员授权给该用户权利来重启web服务。sudo安装之后,使用visudo来配置而不是vi配置文件,因为visudo有错误检查功能。

  5、删除所有的编译器和汇编程序

在安全上,C编译器会构成对系统可信的威胁。编译器应该安装在开发系统的机器上,而不是一个生产应用系统上。这里只是提醒注意检查。检查这些:gcc、gcc3、gcc3-c++、 gcc3-g77、gcc3-java、gcc3-objc、gcc-c++、gcc-chill、 gcc-g77、gcc-java、gcc-objc、bin86、dev86、nasm。

  SUSE安全大揭秘之“十诫”(上)

  SUSE安全大揭秘之“十诫”(中)

 
 
 
 
 
 

Linux/Unix安全

 
在Aurora攻击(攻击者通过微软Internet Explorer版本的漏洞成功地侵入了谷歌系统)发生数月后,谷歌正逐步淘汰Windows操作系统,转而改用基于Mac和Linux的机器。
 
Google的两名安全研究人员在过去几年间发现了涉及到Windows、Linux和VMware虚拟化软件的20个内核级bug,大约有一半还未修复……
 
问:Unix审计设置的最佳业务实践是什么?有一个厂商试图说服我Unix系统日志足够满足SOX(萨班斯法案)、HIPAA、GLBA 和PCI DSS等法规的要求。这种说法对吗?
 
Adobe Systems Inc.上周发布公告,告诫用户小心Linux系统中的Flash Player的漏洞,这个漏洞可以允许攻击者完全控制受影响的系统……
 
United States Computer Emergency Readiness Team(US-CERT) 警告Linux用户,他们正在成为使用窃取的SSH密钥的黑客的活跃目标……

热门技术手册排行

 

虚拟专用网络 VPN(Virtual Private Network )能通过公用网络Internet建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。VPN是对企业内部网的扩展,它可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。许多公司使用VPN向公司外部的员工提供企业网络接入。本手册将围绕VPN进行全方位的讲解。

 

“最佳实践”来自英文Best Practice。维基百科对最佳实践的定义是一个管理学概念,认为存在某种技术、方法、过程、活动或机制可以使生产或者管理实践的结果达到最优,并减少出错的可能性。学习应用IT企业安全的最佳实践,其实就是借鉴别人成功的经验,让自己在保护企业安全方面少走弯路。在本手册中,将集合IT业内关于企业安全的最佳实践,并不断更新,以期在企业安全防护方面提供帮助。

 

黑客策略和技术一直都在进步。黑客还在继续开发新的攻击工具和黑客方法,来恶意访问系统并攻击你的网络,这样企业在开发和采取恰当的方法防御黑客的攻击就变得非常困难。《黑客攻击技术和策略》的技术指南将介绍黑客的内心想法,并帮助你理解恶意攻击者的动机,也提供了一些黑客攻击具体信息的方式,采用的方法以及企业应该采用的保护敏感数据的方法。这里将会提供大量黑客技术和策路的信息,例如允许黑客获取网络系统或者文件访问的系统特征探测。

 

虚拟化是数据中心的流行技术,它起源于20世纪60年代。它是把昂贵的计算机资源的利用最大化的方式。典型的服务器的利用率不足40%,虚拟化可以更有效地利用技术资源,并节约固定费用。虚拟化的最大优势是,它允许管理员从中央区域为个人电脑和客户设备提供软件。虚拟化不需要管理员对一般任务进行分别考虑。服务器的关机可以带动多用户的关机。

 

假如你正在寻找一个漏洞扫描器,你可能已经遇到了大量的非常昂贵的商业解决方案,这些方案都有一长串的性能和优点。不幸的是,如果你和我们之中大部分人的情况一样的话,你一般根本没有运行这些奇特的系统的预算。你可能已经退而求其次,转向考虑使用像SATAN或Saint的免费工具。然而,你可能觉得使用这些工具是一种折衷的办法,因为它们的性能设置不能与商业解决方案相比。这时候你就应该学会使用Nessus! 2005年12月Nessus背后的公司Tenable Network Security Inc.发布了Nessus 3,引进了对该产品的全面检查。在写这篇文章时候的最近版本,Nessus 3.2是在2008年3月发布的。Nessus现在可以在多种平台上使用,包括Windows、各种版本的Linux、FreeBSD、Solaris和Mac OS X。以下是这次Nessus3中的重大变化: 下面将介绍如何使用Nessus工具以及Nessus工具的更新。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
登录Email
请输入您的登录Email
密码
下次自动登录