任何计算机安全措施的一个重要方面是维持实际控制服务的运行,让不必要的网络服务接受请求将提高系统的安全风险。即使这些网络服务对于服务器的某些功能是必要的也需要仔细管理,并且对其进行配置最小化不受欢迎的入侵和登录的可能性。
为Linux系统配置安全性时,使用/etc/inittab文件、runlevels和一两个服务管理“superdaemons”如inetd或xinetd直接管理服务。
inittab
/etc/inittab文件用于系统的初始化过程启动系统服务。在一个配置好的系统上,虽然它一般都不会包括很多服务,但是在某些Linux系统的默认安装中会加载很多其他服务。/etc/inittab文件内容有些模糊,它的重要之处在于让服务管理变得相对简单。
runlevels
基于Linux操作系统的运转可以通过runlevels进行管理。不同的runlevels被定义成有不同的行为,就像Windows操作系统一样,它有正常操作模式、安全模式、在某些情况下还有DOS模式。
其他runlevels由系统管理员进行定义,但是“传统”UNIX系统没有此功能。这种情况下,他们不能被定义也不能被使用。
在shell处,可以输入runlevel命令找到以前的renlevel和当前runlevel。如果没有更改系统 runlevel ,命令的输出结果为大写N后面跟runlevel的数字,这里的N表示没有前runlevel,如果要更改runlevel,可以使用init命令,后面跟想要使用到的runlevel的数字。例如,输入init 6表示重启系统,或init 1 进入单用户模式。
配置runlevel的过程每一版本的情况都不同。例如,在Debian GNU/Linux系统中,位于/etc/init.d的服务脚本有来自/etc/rcN.d的路径与它们进行链接,这里的N表示需要配置的runlevel数字。以字母K开头的symlinks指示在进入runlevel时被杀死的程序,而以字母 S开头的symlinks指示在进入runlevel时被启动的程序。字母后面的数字值越大,从1到99,表示启动或杀死的时间愈靠后。
大多数基于RPM的版本都采用RedHat所用到的rc系统。比起基于Debian的系统,这一系统使用更复杂的路径结构,并且不同的基于RPM的系统之间也有很大的不同。说明书上提供了更多的关于管理runlevel的信息。
inetd
一个用于Linux后台程序管理的“superdaemon”是众所周知的inetd,它是个用于服务管理的命令行工具。终止服务很简单:首先,作为根用户用文本编辑器打开/etc/inetd.conf文件。接下来,找到文件中需要终止的服务。最后,在服务所在行的最前面添加#符号(其他还有“尖顶符”和“英镑符”),如下所示。“注释掉”这一行,因此inted以后都不会启动这一服务。
编辑之前服务登录可能是下面这样:
ident stream tcp wait identd /usr/sbin/identd identd
停止之后,服务登录变成下面这个样子:
# ident stream tcp wait identd /usr/sbin/identd identd
如果正在卸载被登录参考的后台程序,可以删除文件中的某些行——是否通过包管理器进行卸载或删除执行文件卸载(对于上面的例子是/usr/sbin/identd文件)。
编辑/etc/inetd.conf文件之后,保存它,inetd以后则可以使用更改。编辑和保存一旦完成,可以在根部输入下面的命令使更改即时生效:
kill -HUP `pidofinetd`
使用修改(保存)后的配置文件会导致inetd重启。
xinetd
另外一个称为xinetd的superdaemon比inetd更新颖更复杂,能完成更多的功能。但是对于关闭服务来说,他们的使用方法相似。
使用xinetd时,必须在/etc/xinetd.conf文件中添加一行关闭服务。如果只想简单的删除服务,必须删除好几行代码而不是一行。找到想要关闭的服务所在的那一块,在块的后面添加“disable = yes”这一行,或者删除整个块。例如,如果关闭telnet服务,需要像下面这样做。(这里的省略号代表了块的其他内容)
service telnet
{
. . .
disable = yes
}
在某些系统中,对于某些服务,服务配置并不在/etc/xinetd.conf文件中。例如,像telnet这样的服务有可能在文件/etc/xinetd.d/telnet中,改变其服务配置方法与它在/etc/xinetd.conf文件中的方法是一样的。
编辑保存了/etc/xinetd.conf文件后或者更改了服务文件后,可以输入下面的命令让修改即时生效:
kill -USR2 `pidofxinetd`
这将通知xinetd程序,使用更改后的配置。
Xinetd除了关闭或移除服务配置之外,还可以用于控制远程主机登录服务。这将通过几个机制完成:
超越服务管理
对于安全的远程服务访问,还有更多的事情可以做。应该恰当配置防火墙保护服务免受攻击。代理服务器、通过网关服务器端口推进以及网络地址转移都能有效减少服务攻击的风险。针对安全使用,那些用于登录正在运行的服务工具也应进行配置,例如,如果使用安全shell进行远程连接而没有使用X Server时,在SSH中调低X forwarding是很重要的。直接进行安全管理是保证Linux系统安全的重要部分,但是它也只是全面安全计划的一部分。
原文链接:http://www.zdnet.com.cn/developer/code/story/0,3800066897,39514236,00.htm