Linux安全基础
一、系统简介Linux是一个真正意义上的免费的操作系统,起初是由Linus Torvalds出于个人爱好,在业余时间写成的一个操作系统,后来放到了INTERNET上而逐步演变成今天的Linux。今天的Linux,吸引了全世界成千上万的程序员,他们在不同的国家和地区来共同开发和完善这一免费的操作系统。 Linux继承了UNIX系统的特点,它的发展凝聚了世界各地无数开发人员的大量心血,体现了一种信息世界的共建、共享和共荣的精神。
二、基本概念
1、用户和用户组
Linux有很强的用户管理机制,它是通过用户和用户组这两个概念来实现的。
用户是指可以登录到系统的帐号。Linux是一个多用户的操作系统,它允许
多个用户同时登录到系统,Linux给每一个系统帐号一个用户ID,来区别不同的
用户。
同时Linux还通过用户组来为同一个组的用户分配权限,每一个组也有一个
组ID,来区别不同的组。
2、文件与目录许可权限
文件和目录的属性决定了文件和目录的被访问权限,即谁能存取或执行该文件。
使用命令ls -l将显示文件类型及文件许可权限等。
如:
文件类型
文件拥有者(u)许可权限
文件组拥有者(g) 许可权限
其他用户(o)许可权限
- rwx rwx rwx 1 root root 437428 Sep 15 21:21 vi
(图一)
(图一)用三元组表示文件许可权限,第一个三元组是拥有文件的用户(u),第二个三元组是拥有文件的组(g),第三个三元组是其他用户(o)。
Linux就是通过这种方法来对文件的许可权限进行管理,系统根据每个文件的许可权限来判断每个用户对每个文件的操作权限。
在整个系统中有一个用户不受限于这个限制,即root用户,系统的超级用户,它可以更改任何一个文件的许可权限。普通用户也可以使用chmod来改变属于他自己的文件和目录的许可权限。
除了上面介绍的rwx三种许可权限外还有两种特殊的权限:s和t。s位出现在组三元组或拥有者三元组的第三位,也就是x位,它表示此文件是可执行文件,并且在文件执行时,以文件所有者的ID可文件组ID运行,而不是用运行命令的用户的ID来运行。可执行脚本被置s位,存在一种潜在的危险,特别是文件拥有者或组拥有者是root的文件。t这一符号在其他用户三元组中的第三位置,通常,如果在目录上的其他用户三元组中指定了执行和可写许可权限时,任何用户无论所有权及许可权限都可删除该目录中任何文件,使用这种设置可防止用户而不是拥有删除或修改目录中的文件。
三、系统认证
Linux系统目前采用一种全新的认证方式,即:可插式认证模块(PAM: Pluggable Authentication Modules)。
PAM是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。
系统管理员通过PAM配置文件来制定认证策略,即指定什么服务该采用什么样的认证方法;应用程序开发者通过在服务程序中使用PAM API而实现对认证方法的调用;而PAM服务模块(service module)的开发者则利用PAM SPI(Service Module API)来编写认证模块(主要是引出一些函数pam_sm_xxxx( )供libpam调用),将不同的认证机制(比如传统的UNIX认证方法、Kerberos等)加入到系统中;PAM核心库(libpam)则读取配置文件,以此为根据将服务程序和相应的认证方法联系起来。
通过使用PAM这种认证方式,可以使整个系统的认证有更大的灵活性,系统管理员可以根据需要来调整认证模块,根据不同的安全级别来配置系统环境。
四、安全shell
在通常的系统管理中,系统管理员常常通过telnet登录到系统,对系统进行配置管理。但这种方式下,系统的用户名和口令在整个网络中的传输是明文,很容易被窃取,SSH(secure shell)是一个客户-服务器应用,它通过加密,通过基于RSA机制的主机认证以及用户认证中的多种选项提供安全的通信。它提供rlogin,rsh和rcp的替代程序。它也提供加密的X窗口系统连接和加密的TCP会话连接。
下面的图说明整个ssh在认证连接过过程中的流程:
通过使用ssh有效地保证了用户数据在整个通信过程中的安全,保证了内容的私密性。
五、用ipchains过滤数据包
在通常的系统安装中,系统对外开放所有服务端口,我们利用ipchains可以把系统配置成一个基于主机的防火墙,通过适当配置可以有效的限制、保护系统以及控制局域网范围内的访问。
防火墙是阻止非授权用户进入、离开、穿过网络的系统。Linux的ipchains命令可以建立规则,为进入、离开、穿过系统的数据流提供可选的限制,从而提供比较安全的防火墙功能。
Linux ipchains实现包过滤防火墙功能,网络上的每一个包都根据规则过滤。使用ipchains的内核分析每一个包,查找指定的源、目标IP地址及端口,或指定的ICMP类型及代码。
整个ipchains的包过滤流程如下图所示:
ipchains在每一个数据包到来之前,都会根据规则检查每一个IP包的包头,进 行有效的过滤。同时它也对每一个从本机出去的包进行检查,保证每一个出去 和进来的包,符合规则。
除了把ipchains配置成基于主机的防火墙外,还可以把ipchains配置成一个基于网络的防火墙,用ipchains来保护一个网段。
六、系统日志
Linux使用日志来记录用户的动作和系统的一些错误信息。Linux下有两个重要的日志守护程序:syslog和klogd。
syslog是以守护进程运行,在启动时他从/etc/syslog.conf文件中读取不同的选项,根据不同的应用程序把相关信息记录到相应的日志文件中。
klogd是一个内核日志记录程序,它记录内核出现的任何错误和异常。
下图是日志信息流的过程。