Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4958506
  • 博文数量: 1696
  • 博客积分: 10870
  • 博客等级: 上将
  • 技术积分: 18357
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 15:16
文章分类
文章存档

2017年(1)

2016年(1)

2015年(1)

2013年(1)

2012年(43)

2011年(17)

2010年(828)

2009年(568)

2008年(185)

2007年(51)

分类: 网络与安全

2009-07-15 00:39:35

    Linux提供了大量与网络安全有关的工具。但是如果运用不当,这些工具反而会给系统留下隐患。本文介绍您必需掌握的Linux网络安全知识。


   概述 

   近几年来Internet变得更加不安全了。网络的通信量日益加大,越来越多的重要交易正在通过网络完成,与此同时数据被损坏、截取和修改的风险也在增加。 

   只要有值得偷窃的东西就会有想办法窃取它的人。Internet的今天比过去任何时候都更真实地体现出这一点,基于Linux的系统也不能 摆脱这个“普遍规律”而独善其身。因此,优秀的系统应当拥有完善的安全措施,应当足够坚固、能够抵抗来自Internet的侵袭,这正是Linux之所以 流行并且成为Internet骨干力量的主要原因。但是,如果你不适当地运用Linux的安全工具,它们反而会埋下隐患。配置拙劣的安全系统会产生许多问 题,本文将为你解释必须掌握的Linux安全知识。 

   远程攻击者会用各种方法闯入你的机器。他们经常寻找并利用现有程序中的漏洞,但Linux组织总是能够快速地发现这些问题并发布补丁。 Linux补丁的发布速度常常要比其他操作系统对类似问题的反应快得多。但这里的问题在于,如何才能防止机器因此类问题而遭受损失?接下来我们将会看到许 多种击败入侵图谋、构造真正安全的Linux系统的方法。 

   网络服务 

   作为一种服务器软件,Linux提供了FTP、WWW、电子邮件等各种各样的服务。Linux管理大多数这类服务的方法是通过一个端口体系 实现的,例如FTP的端口号是21。如果你有兴趣,可以在/etc/services文件找到一个端口号和服务名字的对照清单。为了节约系统资源以及简化 系统管理,许多服务都通过配置文件/etc/inetd.conf控制,/etc/inetd.conf文件告诉系统怎样来运行各个服务。 

   检查系统中运行的服务 

   许多开发商在inetd.conf的默认设置中运行了大量的服务,从尽可能安全的角度来看它们中的许多都应该关闭。在一般的内部网环境下这 样的安全性不会产生问题。只要安全性足以防止这类“温和”环境内的意外损害,提供服务就比防范它们更为重要。但是,对于直接和Internet相连的 Linux机器就不能再抱同样的观点。 

   要检查Linux系统中当前运行了那些服务,输入命令: 

 netstat -vat

   该命令的输出类如: 

 tcp 0 0 *:6000 *:* LISTEN 

 tcp 0 0 *:www *:* LISTEN 

 tcp 0 0 *:auth *:* LISTEN 

 tcp 0 0 *:finger *:* LISTEN 

 tcp 0 0 *:shell *:* LISTEN 

 tcp 0 0 *:sunrpc *:* LISTEN 

 
 


   每一个带有“LISTEN”的行代表一个正在等待连接的服务。 

   这些服务中有一部分以独立程序的形式运行,但其中许多服务都由/etc/inetd.conf控制。如果你不能肯定某个服务的具体情况,请查一下/etc/inetd.conf。如: 

 grep &single;^finger&single; /etc/inetd.conf 
 
   上述命令从inetd.conf返回如下内容: 

 finger stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/in.fingerd 

 
   如果你觉得自己并不需要这个服务,则可以在/etc/inetd.conf中关闭它:首先注释掉该行内容(在行的前面加一个#),然后执行命令killall -HUP inetd。这样就立即关闭了一个服务,系统不需要重新启动。 

   如果某个服务没有在/etc/inetd.conf内列出,很有可能它是一个独立的程序。独立后台程序提供的服务可以通过反安装软件包删除。注意只有当你能够肯定自己了解该程序的作用,而且确实不再需要它的时候才可执行这个操作。


   允许/拒绝服务器 

   为了进一步加强各种服务的安全性,Linux提供了一个允许或禁止它们选择服务器的机制。例如,你可能希望允许自己网站的机器登录,但不允 许来自Internet的机器登录。/etc/hosts.allow和/etc/hosts.deny这两个文件列出了服务器和服务的信任关系。具体请 参见技术手册。 

   ssh(安全Shell) 

   通过检查服务器名字拒绝连接是一种很好的基本攻击防范方法。但这还不够,因为连接请求中的服务器名字有可能是伪造的。当数据在 Internet上的两个程序之间传输时,它同时也处在危险当中。任何懂得这方面知识的人都可以偷看这些数据,使用一种称为“IP欺骗”的技术甚至还可以 将伪造的数据注入原来的数据当中。产生这些问题的原因在于Internet协议的作用方式。为了解决这些难题人们设计出了ssh。 

   ssh是一种优秀的连接加密和验证系统。加密是指传输数据的时候用密匙加以保护,验证是一种检验数据包或者连接是否合法的操作。大多数其他操作系统都有ssh客户端。使用Linux作为服务器你可以为所有的网络应用提供ssl级的安全。 

   监视程序和运行日志 

   Linux为系统管理员了解系统中所发生的事情提供了一组精简的程序。下面要介绍的就是有关日志记录的工具。检查一下这些工具是否已经正确 地安装,以后出现了可疑的入侵企图时就可以查看日志文件。记录事件日志的主要问题在于记录的数据往往太多,因此设置好过滤条件、只记录关键信息是非常重要 的。 

   jail 

   jail是Just Another IP Logger的简称,它由两个后台运行的小程序组成,即icmplog和tcplog。jail会在/var/log/syslog里记录你想要了解的数据包。请参见它们的技术手册了解详细情况。 

   ftpd、rlogind以及其他用户交互 
   大多数标准服务还会在/var/log/syslog和/var/log/messages中记录有关用户连接或者连接企图的信息。 



利用swatch可以实现syslog文件的自动监视。swatch不断地在syslog中扫描系统管理员指定的事件,一旦发现需要注意的问题就会发出警报。  



   其他安全措施:防火墙 

   计算机中的防火墙是一种用来保护私有网络(内部网络)不受外界(Internet)攻击的设备。最简单的防火墙可以是一个带有两个网卡的 Linux机器,其中一个网卡(以太网卡或Modem)连接Internet,另一个网卡连接私有网络。受保护的网络不能直接访问 Internet,Internet也不能直接访问受保护的网络。 

   所有发送到以及来自Internet(和私有网络)的数据都经过防火墙的过滤。在私有网络的内部,象关闭某些服务之类的问题不再重要。这是 一种集中力量使得一台机器安全,然后再用它来保护其他机器的办法。如何正确地配置并运行防火墙是一个较为复杂的问题,除了要安装好机器上的两个网卡之外, 还必须使用ipchains程序设置过滤条件。 

   结束语 

   提高系统安全性的主要缺点在于它会降低系统的可访问性(易访问性)。在实施本文的任何意见之前务必仔细考虑事情的另一方面——之所以要有这个系统是为了使用它。Linux提供了大量的安全工具,联合运用这些工具应该可以获得可访问性和安全之间的最佳平衡。

阅读(1090) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~