搭建基于 Linux 桌面环境的影音平台
任何计算机安全措施的一个重要方面是维持实际控制服务的运行。本文向你展示了在
Linux 操作系统的 PC 机上如何配置安全服务管理
任何计算机安全措施的一个重要方面是维持实际控制服务的运行,让不必要的网络服
务接受请求将提高系统的安全风险。即使这些网络服务对于服务器的某些功能是必要的也
需要仔细管理,并且对其进行配置最小化不受欢迎的入侵和登录的可能性
为 Linux 系统配置安全性时,使用/etc/inittab 文件、runlevels 和一两个服务管理
“superdaemons”如 inetd 或 xinetd 直接管理服务
initta
/etc/inittab 文件用于系统的初始化过程启动系统服务。在一个配置好的系统上,虽
然它一般都不会包括很多服务,但是在某些 Linux 系统的默认安装中会加载很多其他服务
。/etc/inittab 文件内容有些模糊,它的重要之处在于让服务管理变得相对简单
首先,可不要通过/etc/inittab 文件方式向系统启动项中添加服务
第二,不要移除/etc/inittab 文件中第一个冒号之前其第一个字段是单精度型的数字
,或整个登录服务的前面部分。以单精度数字开头的行可以打开 TTY 控制台,所有服务在
它们打开之前都一一列出,甚至列出其更重要的功能。也许有些例外情况,在不改动它时
是很安全的,尤其如果不确定的情况下请不要改动
第三,/etc/inittab 在导入和 runlevel 选择的时候用于过程管理。一般不用于正常的系
统操作
第四,在导入时由 rc 系统开始添加步骤,而不是 init 系统。如果看看/etc/inittab 的
内容,将会注意到登录以 rc0 到 rc6 这样的字符结束。这是初始化系统如何处理 runlevels
的说明
runlevel
基于 Linux 操作系统的运转可以通过 runlevels 进行管理。不同的 runlevels 被定义成
有不同的行为,就像 Windows 操作系统一样,它有正常操作模式、安全模式、在某些情
况下还有 DOS 模式
Runlevel 0 用于关闭系统,如果软电源设置恰当,它能关闭系统电源
Runlevel 1 是单用户无网络的模式,它用于低水平的故障修复和管理操作
Runlevel 2 到 Runlevel 5 正常系统操作的多用户模式。Runlevel2 和 3 是命令行模式
,3 有网络连接而 2 没有网络连接。Runlevel 5 用于启动 X Windows 提供图形用户接口
Runlevel 6 用于系统重启,当整个 init 系统甚至 bootloader 需要重启时采用它
其他 runlevels 由系统管理员进行定义,但是“传统”UNIX 系统没有此功能。这种情况
下,他们不能被定义也不能被使用
在 shell 处,可以输入 runlevel 命令找到以前的 renlevel 和当前 runlevel。如果没有更
改系统 runlevel ,命令的输出结果为大写 N 后面跟 runlevel 的数字,这里的 N 表示没有前
runlevel,如果要更改 runlevel,可以使用 init 命令,后面跟想要使用到的 runlevel 的数字
。例如,输入 init 6 表示重启系统,或 init 1 进入单用户模式
配置 runlevel 的过程每一版本的情况都不同。例如,在 Debian GNU/Linux 系统中,
位于/etc/ 的服务脚本有来自/etc/ 的路径与它们进行链接,这里的 N 表示需要
配置的 runlevel 数字。以字母 K 开头的 symlinks 指示在进入 runlevel 时被杀死的程序,而
以字母 S 开头的 symlinks 指示在进入 runlevel 时被启动的程序。字母后面的数字值越大
,从 1 到 99,表示启动或杀死的时间愈靠后
大多数基于 RPM 的版本都采用 RedHat 所用到的 rc 系统。比起基于 Debian 的系统,
这一系统使用更复杂的路径结构,并且不同的基于 RPM 的系统之间也有很大的不同。说
明书上提供了更多的关于管理 runlevel 的信息
inetd
一个用于 Linux 后台程序管理的“superdaemon”是众所周知的 inetd,它是个用于服务
管理的命令行工具。终止服务很简单:首先,作为根用户用文本编辑器打开/etc/
文件。接下来,找到文件中需要终止的服务。最后,在服务所在行的最前面添加#符号(其
他还有“尖顶符”和“英镑符”),如下所示。“注释掉”这一行,因此 inted 以后都不会启动这一
服务
编辑之前服务登录可能是下面这样
ident stream tcp wait identd /usr/sbin/identd ident
停止之后,服务登录变成下面这个样子
# ident stream tcp wait identd /usr/sbin/identd ident
编辑/etc/ 文件之后,保存它,inetd 以后则可以使用更改。编辑和保存一
旦完成,可以在根部输入下面的命令使更改即时生效
kill -HUP `pidofinetd
使用修改(保存)后的配置文件会导致 inetd 重启
xinet
另外一个称为 xinetd 的 superdaemon 比 inetd 更新颖更复杂,能完成更多的功能。但
是对于关闭服务来说,他们的使用方法相似
使用 xinetd 时,必须在/etc/ 文件中添加一行关闭服务。如果只想简单的
删除服务,必须删除好几行代码而不是一行。找到想要关闭的服务所在的那一块,在块的
后面添加“disable = yes”这一行,或者删除整个块。例如,如果关闭 telnet 服务,需要像
下面这样做。(这里的省略号代表了块的其他内容
service telne
. .
disable = ye
在某些系统中,对于某些服务,服务配置并不在/etc/ 文件中。例如,像
telnet 这样的服务有可能在文件/etc/ 中,改变其服务配置方法与它在
/etc/ 文件中的方法是一样的
编辑保存了/etc/ 文件后或者更改了服务文件后,可以输入下面的命令让
修改即时生效
kill -USR2 `pidofxinetd
这将通知 xinetd 程序,使用更改后的配置
Xinetd 除了关闭或移除服务配置之外,还可以用于控制远程主机登录服务。这将通过
几个机制完成
可以为服务指定一个允许的主机。例如:可以通过在服务配置文件中添加 only_from =
这一行限制主机登录 telnet 服务。尽管使用了词语“only”,但是它只能限
制主机的数目,而不仅仅只一台主机。也可以使用部分地址指定完整的网络。例如:可以
使用“only_from = ”表示本地 Class C 的任何主机都能访问这个服务
可以在配置文件中为某个服务指定禁止的主机。例如:可以在配置文件中添加
“no_access = ”这一行禁止这个主机远程访问 telnet 服务。这个也可以使
用多次而且也可以使用部分地址指定多个主机。万一某个主机满足 only_from 和
no_access 两个限制,则会权衡确定其访问权限。如果 xinetd 不能确定哪个限制能被应用
,则系统默认更安全的选项——服务不会开启
超越服务管
对于安全的远程服务访问,还有更多的事情可以做。应该恰当配置防火墙保护服务免
受攻击。代理服务器、通过网关服务器端口推进以及网络地址转移都能有效减少服务攻击
的风险。针对安全使用,那些用于登录正在运行的服务工具也应进行配置,例如,如果使
用安全 shell 进行远程连接而没有使用 X Server 时,在 SSH 中调低 X forwarding 是很重要
的。直接进行安全管理是保证 Linux 系统安全的重要部分,但是它也只是全面安全计划的
一部分