科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道如何保护互联网上的Linux系统机器 (3)

如何保护互联网上的Linux系统机器 (3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

互联网上有许多企业公司和组织采用Linux作为服务器平台。当这些服务器与互联网连接以提供应用服务时,不可避免地会成为攻击目标。本文讨论Linux系统安全配置的一些基本知识,以帮助你保护Linux系统。

作者:yuanshan 来源:赛迪网技术社区 2007年10月21日

关键字: 操作系统 Linux 互联网 保护

  • 评论
  • 分享微博
  • 分享邮件
 

连接到防火墙

通过安全可控的途径连接到防火墙也是非常重要的。通常,我们需要远程访问防火墙以进行管理或上载文件。这些通讯需要考虑安全性。在这里我们主要讨论两种方式:ssh和TCP Wrappers.

我个人推荐ssh,因为它使在我们和防火墙之间的通讯都是经过加密的。TCP Wrappers不能保证网络通讯不被窃听,使用户仍然有可能捕获通过网络传送的明文口令。如果你担心被其它用户窃听你和防火墙之间的通讯,推荐用ssh替代telnet/ftp.ssh会话对其所有网络通讯进行加密,使在防火墙上的管理和文件上载变得更安全。ssh和TCP Wrappers的相似之处是有自己的日志文件功能,并能限制哪些系统可以创建网络连接。要获取更多关于ssh的信息和下载ssh客户端和服务器端源代码,请访问http://www.ssh.org网站。建议使用1.2.x版本的ssh,因为2.x版本有版权限制。对于Windows 95/NT用户,推荐用SecureCRT作为ssh客户端。

TCP Wrappers,虽然不支持加密,但它提供日志功能和控制何人能访问系统。它通常用于为inetd中的服务,例如telnet或ftp,添加一层限制。当使用TCP Wrappers时,系统通过它来监视inetd进程创建的连接,记录所有连接请求,然后对照一个访问控制列表(ACL)检验该请求。如果该连接是允许的,TCP Wrappers将此连接请求传递给相应的真正守护进程,例如telnet.如果该连接是禁止的,则TCP Wrappers会丢弃此连接请求。对于Linux系统,TCP Wrappers缺省时就被安装到系统中,我们只需编辑/etc/hosts.allow和/etc/hosts.deny文件即可。这些文件用于确定什么人能和不能访问系统。TCP Wrappers的语法比较简单,将被允许网络连接的IP地址或网络添加到/etc/hosts.allow文件,将被禁止网络连接的IP地址或网络添加到/etc/hosts.deny文件。缺省时,Linux允许所有连接,所以需要对这两个文件进行修改。对于TCP Wrappers有以下两点建议:

* 使用IP地址而不是系统名字或域名。* 设置/etc/hosts.deny文件禁止所有连接(ALL),然后在/etc/hosts.allow文件中指定仅允许特定主机和网络。

更严格的安全配置

以上讨论的内容包括了所有的要点。通过执行以上操作,你就可以显著增强系统的安全性。然后不幸的是,你的系统并不是100%安全,而且永远也不会是。因此,这里提供几个更严格的安全配置方法和步骤。

首先是创建whell用户组。wheel用户组包含了允许执行一些功能强大命令(例如/usr/bin/su)的用户帐号列表。通过限制有权限访问这些命令的用户帐号,就能够增强系统的安全性。要创建wheel组,用vi编辑文件/etc/group,创建wheel组并为其增加系统管理员帐号。然后确定重要的系统程序,例如/usr/bin/su.把这些程序文件的组用户设置为wheel,并只允许程序的属主和组用户执行(注意要保留必需的suid或guid位)。例如对于/usr/bin/su,使用如下命令:

/usr/bin/chgrp wheel /usr/bin/su /usr/bin/chmod 4750 /usr/bin/su

然后,我们需要限制。rhosts、。netrc和/etc/hosts.equiv文件的使用。r系列命令使用这些文件来访问系统。要为这些文件加锁,先创建它们,然后修改其属性为零即可。这样除了root用户就没有其它用户能创建或修改它们了。例如:

  
/usr/bin/touch /.rhosts /.netrc /etc/hosts.equiv /usr/bin/chmod 

0 /.rhosts /.netrc /etc/hosts.equiv
  

第三,配置/etc/shadow使用MD5哈希函数而不用crypt函数作为加密算法。这可以使被加密的口令文件更难以破解。这可以通过修改PAM模块配置完成。PAM(Pluggable Authentication Modules)是一个共享库套件,可用于选择应用程序如何对用户进行认证等。要了解PAM更多知识,请访问:ftp://ftp.us.kernel.org/pub/linu ... -PAM-html/pam.html.

在以前的旧版本中,必须手工修改PAM模块以使用MD5哈希函数。然而在Red Hat 6.0及更高版本中,可用setup工具选择MD5哈希。在命令行输入"setup"然后选择"authentication configuration",从那里就能够选择使用MD5哈希。然而,MD5哈希在用户再次输入其口令前并未真正生效。如果因为某些原因不使用setup工具,手工修改PAM模块也是可以的。

作为bash用户,我不大愿意使用。bash_history文件,因为不希望别人(包括root)知道我曾经运行了哪些命令。所以,在。bash_profile文件里,我添加了一行,这样命令就不会被记录到。bash_history文件。:HISTFILESIZE=0最后一件事情是保护系统不被攻击者物理访问。一是要为BIOS设置口令,二是通过在/etc/lilo.conf文件中配置口令保护(password=xxx)系统的启动过程。然而记住,一旦系统被入侵者能够完全物理接触,则没有任何方法能保证系统的绝对安全了。

IPChains

讨论Linux安全性,不可能不讨论IPChains.IPChains是集成到2.2.x内核中的包过滤防火墙软件。只要运行了Red Hat 6.0或更高版本,IPChains已在Linux的安装包中。IPChains与Cisco Access Control Lists(访问控制列表)相似,它能够控制什么数据包能够进出Linux系统。作为一个防火墙软件,IPChains能够用于保护Linux系统。要保护一台独立服务器系统,可以配置IPChains仅允许出站的TCP连接。如果外部主机试图发起任何TCP连接,都会被禁止创建连接。由于IPChains不是基于状态过滤的,因此通常允许所有的UDP和ICMP连接。最后,应该记录下所有的被禁止连接,这样可以发现可能的攻击企图。然而,对于广播和多播数据包,应该将其丢弃,因为这些数据包可能会很快地填满系统日志。以下是一个IPChains配置例子(保护独立服务器系统):

  
  bash# ipchains -L Chain input (policy DENY):
target prot opt source destination ports DENY all —— 0.0.0.0 
anywhere n/a DENY all —— anywhere 255.255.255.255 n/a DENY all —— 
anywhere BASE-ADDRESS.MCAST.NET/8 n/a ACCEPT tcp !
y anywhere anywhere any -> any ACCEPT udp l- anywhere anywhere any -> 
any ACCEPT icmp l- anywhere anywhere any -> 
any DENY all l- anywhere anywhere n/a Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
  

结论

我们在本文中讨论了如何安全配置一台Linux系统(Red Hat发行版本)的一些主要步骤。使一个系统安全的关键是最小化安装,使用TCP Wrappers、IPChains等软件、用shadow口令增加安全防护。此外还有一些附加步骤,例如tripwire(监视系统文件的改动)和swatch(日志监视和报警工具)。另外向Linux初学者推荐一个能够自动对新安装的Linux系统进行安全配置的PERL脚本:Bastille.记住,没有系统是真正100%安全的。然而,通过以上列出的操作步骤,可以较大幅度地减少安全风险。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章