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

日期: 2010-07-19 来源:TechTarget中国

  SUSE由于其出色的性能和对安全较好的控制,吸引了很多企业级用户,目前在国内开始有大量的关键应用。但这并不代表SUSE在使用中就是安全的,SUSE里还有很多安全细节要注意。本文就SUSE中的这些安全细节进行逐一介绍,为大家揭开每一个需要注意的地方。

  一、补丁、SSH及其他

  1、补丁

  每个补丁的更新都意味着这是一个安全漏洞,或是有其他严重的功能问题,但如果更新补丁则又可能导致系统的一些异常,甚至引起一些服务的瘫痪。所以对于补丁的更新要慎重处理。从实际的角度来说,有4种做法:

  1)是在刚装完系统之后立刻更新补丁,然后再上应用。

  2)是通过外围防护手段来保护服务器,可以用防火墙、IPS之类的手段。

  3)是在测试机上更新补丁。不过值得注意的是,有些补丁带来的问题是隐性的,可能今天明天没问题,但后天出了问题,所以,观察的时间需要久一些。

  4)、如果你的SUSE服务器比较多,也可以通过NFS共享或者内部的FTP、HTTP服务来完成。但FTP、HTTP又会带来另外的安全风险。

  SUSE的补丁升级,需要去下载Novell的新RPM。RPM包的安装会有先有后,不过多数情况下,RPM会根据其依赖关系来处理。另外,Novell也有一些在特殊情况下的提示,比如内核更新、C运行库等。Novell公司提供了一个强大的工具YaST,不过遗憾的是,YaST自身也不安全,有在线升级不安全临时文件建立漏洞。

  加固方法:输入yast,在software中选择online update。

  2、SSH

  SUSE上默认安装了OpenSSH,OpenSSH是目前比较流行并且免费的加密连接工具,但OpenSSH的低版本也存在不少安全漏洞,所以最好还是去http://www.openssh.org下载最新版本的。在升级到最新版本之后,SSH仍有很多需要安全加固工作要做。比如限制那些账户的登录、更改默认端口、指定可访问的网络等等,限于篇幅本文对此不做更详细的介绍。但至少有一点,是你必须要做的:将协议版本修改为2。因为版本1的安全问题实在太严重了,甚至可以截获密码。

  加固方法:

  vi /etc/ssh/ssh_config

  修改protocol的值为2。

  3、系统性能审计

  对于运维人员来说,需要经常监控系统的性能情况,SUSE提供的sysstat就是一个检测系统状态的工具,比如比如CPU利用率、磁盘I/O等。sysstat默认每10分钟收集一次系统数据,可以用sar命令查看。

  sysstat首先会建立一个正常的性能曲线,当这个基线建立完毕以后,任何超出基线的活动都会给出提示。例如密码猜测、或者在业务高峰期以外的事件会导致CPU利用率过高,从而偏离正常的基线。注意sysstat收集的数据默认是在系统上存放一周,一周之后会被cron任务自动移除,可在/var/log/sa/目录下来维护收集的数据。但是默认安装的服务器版本是不包括sysstat包的,除非安装的时候选择了完全安装。

  加固方法:安装sysstat,并使用sar命令。

  4、防火墙
  SuSEfirewall2是SUSE下面的包过滤防火墙,可以允许、拒绝数据的进出。默认是安装并且激活的,而且默认不允许任何服务,要开放服务就必须明确的启用(比如上面提到的SSH)。

  加固方法:

  在YAST里,Center–#Security and Users–#Firewall进行防火墙策略调整。
  更细粒度的策略配置,可以在YAST Center–#System#–/etc/sysconfig editor-Network/Firewall/SuSEfirewall2,也可直接编辑/etc/sysconfig/SuSEfirewall2文件。

  5、系统安全定期检查脚本seccheck

  seccheck是一个系统安全检查脚本,可以每天、每周、每月的定期生成报告,并且邮件发送。不过他在定期运行的时候比较占用资源,所以要选择在非业务高峰期来做。

  加固方法:YAST Center-System-#/etc/sysconfig-System/Security/Seccheck selection

  6、SUSE的安全应用框架AppArmor
  AppArmor和SuSEfirewall2相比,他的特点在于对应用级的保护,可以管理应用的文件和目录访问等更细颗粒的操作,是一个白名单的机制,即指定哪些行为才是允许的,其他的拒绝,这样可以更好的隐藏内部系统。比如你的系统存在一个漏洞,但由于对其的操作没有受到白名单允许,所以操作会被拒绝。

  加固方法:YAST Center-Novell AppArmor可以调整细节策略、查看报告。如果不熟悉的话,AppArmor还内设了一个向导功能。

  二、最小化xinetd

  1、关闭标准服务

  SUSE使用xinetd,他比inetd更优秀也更方便使用。SUSE默认情况下是关闭所有服务的,在启用SSH之后,就可以配置xinetd的服务了。安全的做法也应该如此,先关闭所有服务,然后只启用必须的服务。

  加固方法:运行chkconfig查看所有服务的开启状态,对不需要的服务进行关闭。

  2、可信网络接入

  对服务器的访问应该受到控制,所以需要用SuSEfirewall2或者其他的措施来控制,只允许那些可信的网络接入。

  加固方法:

  vi /etc/sysconfig/SuSEfirewall2中的第10项配置。也可以在yast Center#System#/etc/sysconfig editor进行配置。

  3、telnet

  如果不是有特别的理由,不要使用telnet,telnet使用的是不加密的网络协议,这就意味着从你的账号到你传输的数据,都可以被人窃听,严重的可以通过会话劫持控制你的系统。所以这里还是强烈建议使用SSH,虽然SSH也不是那么的安全。

  加固方法:

  打开的命令是chkconfig telnet on。

  关闭的命令是chkconfig telnet off。

  4、FTP

  同样,在没有充分理由的情况下,不要使用FTP,尤其是匿名FTP。和telnet一样,FTP也不加密,也可以被人窃听或者会话劫持。SSH则提供了SCP和SFTP,可以取代FTP。要注意的是,有时候FTP可能是因为某些应用绑定的,比如我多次见到的WEB上传通道,所以你必须要用这种匿名FTP。如果必须要用FTP,那还是要做一些控制,要注意的一点是,FTP的目录应该受到控制,最好能有自己的分区。在SUSE上,vsftpd默认是不安装的。

  加固方法:

  打开的命令是chkconfig vsftpd。

  关闭命令是chkconfig vsftpd off。

  5、rlogin/rsh/rcp

  所有r系列的命令都应该被关闭。他们除了可以被窃听之外,在验证机制上也存在问题,并且还有其他的安全漏洞,比如缓冲区溢出、任意命令执行等。建议还是用SSH来取代。

  加固方法:

  打开命令是

  chkconfig rexec on

  chkconfig rlogin on

  chkconfig rsh on

  关闭他们:

  chkconfig rexec off

  chkconfig rlogin off

  chkconfig rsh off

  6、TFTP

  TFTP一般用在无盘工作站, X-terminals等情况下。路由器或者其他网络设备的配置数据可以利用它复制,实现备份功能。当然,在这里,没有特殊原因,我们仍然建议你禁用。TFTP在SUSE上也不是默认安装的。

  关闭命令chkconfig tftp off

  7、IMAP

  只有邮件服务器才会用到IMAP,一些邮件客户端(比如Eudora、Netscape Mail和Kmail)需要使用IMAP来检索远程邮件。

  加固方法:关闭服务的命令

  chkconfig cyrus off或chkconfig imap off。

  8、POP

  这是一个收邮件的服务,作为服务器有收取邮件的需要吗?如果没有,同样也应关闭。

  加固方法:chkconfig qpopper off或chkconfig cyrus off。

  三、最小化启动服务

  1、设置umask

  系统默认的umask至少应设置成027,有些守护进程比如系统日志,会默认设置为任何人可以写文件。如果某个守护进程需要放开对权限的限制,可以考虑修改守护进程的启动脚本,给以其权限,同时又不会影响服务器的其他安全。

  加固方法:

  vi/etc/profile,改变umask的值为027。

  对/home下的所有用户,根据其shell类型,定义umask的值。一般在/home/.profile中新增加一行umask 027。

  2、SMTP

  需要确认服务器是否需要处理邮件。SUSE中,默认安装的是Postfix,并且是激活状态。如果这台服务器是邮件服务器的话,需要注意的是,有权限在web界面上搜索附件是一个安全隐患。另外,如果你对邮件服务器管理有经验的话,你会知道为postfix规划一个chroot环境有多么重要。在chroot环境下,即使有人闯入了smtpd daemon,能够造成的损害也比较有限。

  加固方法:

  打开:vi /etc/sysconfig/mail,设置SMTPD_LISTEN_REMOTE=”yes”。在防火墙上也必须启用。

  关闭:vi /etc/sysconfig/mail,设置SMTPD_LISTEN_REMOTE=”no”。

  3、运行级别

  SUSE里有两个主要的运行级别,级别5直接启动到X Windows,级别3则是字符界面。但注意的是,即使系统运行在级别3,用户仍然可以在shelle下执行startx来启动X Windows。

  加固方法:

  设置为级别3,vi /etc/inittab,将id:5:initdefault中的5修改为3。

  4、X Font Server

  对于服务器来说,一般不需要运行X Windows,如果不使用图形界面的话,X Font Server就可以关掉,他是为图形界面提供字体集用的,并且XFS还有一些缓冲区溢出的问题。

  加固方法:关闭X Font Server:chkconfig xfs off

  5、标准启动服务

  每个系统的守护进程,如果你不能明确知道必须开启的话,都应该关闭。服务器上运行的脆弱应用,将大大增加风险。SUSE使用chkconfig来管理所有的系统服务脚本。这里要注意的是,SUSE的补丁程序可能会恢复启动某些服务,在更新补丁之前,最好还是先记录一下你已经启动哪些服务。还有就是一些守护进程会拥有一些账户,对这些账户要进行删除、锁定,避免别人登录,或者对他的Shell设置成/bin/false。

  加固方法:

  添加、删除启动服务的方法是在在不同运行级别下的目录里,首先你需要知道你的系统运行界别,使用runlevel命令查看运行级别,如果运行级别是3的话,那就需要在/etc/rc.d/rc3.d修改。这里面以S开头的,都是启动时会运行的服务。例如mv /etc/rc3.d/S04rpcbind etc/rc3.d/K04rpcbind,是将rpcbind服务关闭。

  另外还需要对守护进程的账户进行删除或锁定,删除用户命令是userdel,可以删除这些用户:adm lp sync shutdown halt news uucp operator gopher,如果不用x windows的话可以删除games,如果没有匿名ftp可以删除ftp。

  6、SMB和NMB

  SUSE提供了Samba,为windows用户提供文件和打印共享,这样unix系统可以在windows的网络上充当文件服务器、打印服务器,甚至为早期的windows系统充当域控验证服务器。Samba需要用到SMB和NMB协议,SMB是Windows的文件共享,NMB是NetBIOS消息块。如果不需要充当这些角色的话,就应该关闭这两个协议。关闭命令 chkconfig smb off

  7、NFS

  NFS经常被利用来越权存取文件,所以没有需要也应关闭。即使真的需要NFS服务,也应该采取控制措施,包括限制访问的IP范围、文件的只读等。NFS的客户端服务也应关闭。

  关闭命令:

  chkconfig nfsserver off

  chkconfig autofs off

  8、NIS

  除非十分有必要,否则不要使用NIS。NIS是网络信息服务的缩写,类似与windows中的域控制器。NIS虽然使用维护简单,但有设计上的安全问题,而且也完全可以用LDAP来替代。

  关闭命令:

  chkconfig ypserv off

  chkconfig yppasswdd off

  9、RPC端口映射

  要想NIS能够运行,须首先运行portmap守护进程。但是RPC的验证机制很薄弱,很容易被绕过,却可以利用RPC得到很多重要的信息。除非是需要NIS,最好禁用。

  关闭命令:chkconfig portmap off

  10、ncpfs脚本

  ncpfs是NFS、windows网络里共享文件需要用到的,但并非默认安装,如果没有网络共享在使用,就把它停掉。这个脚本会挂载在客户机的网络驱动器上,好在它不是一个持续的守护进程,所以相对来说不是那么危险。

  关闭命令:chkconfig ncpfs off

  11、apache

  只有WEB服务器才会用到,即使这台服务器是WEB服务器,也不要把数据库和其他环境支持都放在这台服务器上。

  关闭命令:chkconfig apache2 off

  12、SNMP

  在规模比较大的网络里会经常用到的网络管理协议,要确定你是不是在使用依赖SNMP的远程监控工具,比如HP OpenView, MRTG, Cricket等。如果使用了SNMP,也建议更改默认的community string。在SUSE中,snmp的设置在/etc/snmpd.conf里。

  关闭命令:chkconfig snmpd off

  13、DNS server

  确定你的网络是否需要域名解析的服务器,针对DNS的攻击这两年越来越多,如果必须要用,建议在/etc/named.conf里 使用访问控制。比如,内部的DNS服务器不应该对外部开放查询。在比较大的网络里,一般都会使用内部和外部的DNS服务器分别提供查询,但一些小的网络没有条件内外分开,就应考虑访问控制。

  关闭命令:chkconfig named off

  14、Squid Cache服务器

  Squid是一个代理服务器软件,其实Squid是一个较好的安全架构,因为他在客户端和服务器之间设置了一道代理,在一定程度上减少了系统泄露信息的风险,防止内部漏洞被发现。但是,在使用Squid的时候要仔细进行配置,有很多关于Squid cache的漏洞。如果不加安全考虑的话,外部仍然可以探测到内部的主机,或者利用你的cache来隐藏攻击者的真实IP。所以应该配置成:不允许外部人员未经认证使用你的缓存。

  关闭命令:chkconfig squid off

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

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

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐