Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->Linux安全 ->正文

让 Linux 更安全(三)

来源:IBM DW中国 作者:Mario Eberlein  时间:2007-04-22 点击: [收藏] [投稿]

/etc/init.d 中的引导脚本

/etc/init.d 中的引导脚本用来启动或者停止系统服务。对于每一个运行级,都有一个 /etc/rcN.d 目录(“N”是运行级的标识),其中包含了指向那些在运行级改变时需要调用的脚本的软链接。

如果链接名以“S”开头,则脚本在进入那个运行级时执行,启动相应的服务;如果以“K”开头,则脚本在退出那个运行级时执行,停止那个服务。

大部分情况下,引导脚本的名称会暗示它所控制的服务。要防止在特定的运行级中会启动某个服务,则删除运行级目录中指向相应引导脚本的链接,或者使用一个不做任何事情的虚脚本取代 /etc/init.d 中原来的引导脚本。

inetd/xinetd 后台进程

也可以在客户机请求时根据需要调用服务。这些请求被转交给超级后台进程 inetd 或者 xinetd。然后超级后台进程确定要启动哪个服务,并将请求传递到相应的后台进程。通常,telnet、ftp、rlogin 等服务使用 inetd 或者 xinetd 启动。

inetd 后台进程在 /etc/inetd.conf 配置,那个文件中包含了关于每一个超级后台进程需要提供的服务的条目。配置 FTP 服务器的条目应该类似这样 —— ftp stream tcp nowait root /usr/bin/ftpd in.ftpd -el —— 使用井号注释掉它,就可以禁用它。

为了安全起见,建议使用 xinetd。与 inetd 相比, xinetd 能够启动基于 rpc 的服务,并支持访问控制。xinetd 可以限制进入连接的速度、来自特定主机的进入连接的数目,或者某个服务的总连接数。

通过用于每个从属后台进程的独立配置文件来配置 xinetd 。这些文件位于 /etc/xinetd.d/ 目录中。前面 FTP 服务器的示例配置文件应该称为 called /etc/xinetd.d/ftp,类似这样:


清单 1. 配置文件,/etc/xinetd.d/ftp


				
service ftp
	{
		socket_type       = stream
   		protocol          = tcp
   		wait              = no
   		user              = root
   		server            = /usr/bin/ftpd
   		server_args       = -el
   		disable           = yes
	}

为了禁用这个服务,参数 disable 被设置为 yes,如上面示例所示。

为了更详细的访问控制,xinetd 支持以下三个另外的参数:

  • only_from
  • no_access
  • access_time

为了限制访问,但不完全禁用 ftp 后台进程,您可以如下修改配置文件 /etc/xinetd.d/ftp:


清单 2. 为限制访问而修改过的配置文件,/etc/xinetd.d/ftp


				
service ftp
	{
		socket_type       = stream
   		protocol          = tcp
   		wait              = no
   		user              = root
   		server            = /usr/bin/ftpd
   		server_args       = -el
   		disable           = no
   		only-from         = 192.168.200.3 192.168.200.7 192.168.200.9
   		only-from        += 192.168.200.10 192.168.200.12 172.16.0.0
   		no_access         = 172.16.{1,2,3,10}
   		access_times      = 07:00-21:00
	}

only-fromno_access 可以接受数字 IP 地址(最右边的零作为任意数值处理)、IP 地址/网络掩码 范围、主机名以及 /etc/networks 中的网络名。如果组合使用 only-fromno_accessxinetd 会为每个主机连接寻找最接近的匹配。

在前面的代码示例中,表示 IP 地址为 172.16.x.x 的主机可以连接到此主机,但地址属于 172.16.1.x、 172.16.2.x、172.16.3.x 和 172.16.10.x 的则不能连接。可见,当使用 no_access 所用的因数符号时,不需要指定地址的所有四个部分。因数部分必须是地址最右边的部分。参阅下面的 参考资料 部分,以获得关于 xinetd 及其配置的文章。

TCP 封装器

如果您决定不使用 xinetd,而是使用 inted,那么您可以使用 TCP 封装器来记录请求和具体的对特定网络的 允许/拒绝。TCP 封装器会为了认证和记录日志而去检查 /etc/hosts.allow/etc/hosts.deny,并将客户机请求封装起来,不直接回应它们。一旦认证成功,请求就会被转发到原来请求的服务。

相对于使用普通的 inetd,使用 TCP 封装器有两个主要的好处:

  • 发出请求的客户机不会察觉到 TCP 封装器;因此,没有异心的人不会发现任何区别,而心怀不轨的人也得不到关于他们的请求失败的任何信息。
  • TCP 封装器的工作不会理会任何已经被封装的服务,让应用程序能够共享它们的配置文件,从而简化管理。

要获得关于 TCP 封装器配置文件的详细文档,请参阅 参考资料 中列出的 Red Hat Linux Reference Guide

怎么样找到所有人都可写的(world-writable)文件

要找出所有人都可写的文件,使用此命令:

find / -perm -002 \( -type f -o -type d \) -ls

其中:



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇: Linux 更安全(二)   下一篇:基于LINUX蜜网的防御系统

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章