首页 LINUX系统管理白皮书008

LINUX系统管理白皮书008

举报
开通vip

LINUX系统管理白皮书008 下载 第8章 各种网络应用 成功配置 I P和解析器之后,必须转向准备提供的网络服务。本章将全面讨论如何配置简 单的网络应用,其中包括 i n e t d服务器和源于r l o g i n家族的几个程序。另外,还将为大家简要介 绍用作“网络文件系统”(N F S)和“网络信息系统”(N I S)的“远程进程调用”。但是,由 于N F S和N I S配置涉及到的内容非常广泛,我们将分别在独立的章节中就此进行讨论。它们也 适用于电子邮件和n e t n e w s新闻组。 8.1 inetd超级服务器...

LINUX系统管理白皮书008
下载 第8章 各种网络应用 成功配置 I P和解析器之后,必须转向准备提供的网络服务。本章将全面讨论如何配置简 单的网络应用,其中包括 i n e t d服务器和源于r l o g i n家族的几个程序。另外,还将为大家简要介 绍用作“网络文件系统”(N F S)和“网络信息系统”(N I S)的“远程进程调用”。但是,由 于N F S和N I S配置涉及到的内容非常广泛,我们将分别在独立的章节中就此进行讨论。它们也 适用于电子邮件和n e t n e w s新闻组。 8.1 inetd超级服务器 通常情况下,服务都是由 d a e m o n来执行的。所谓d a e m o n,是一种程序,用于打开特定的 端口,并等待进入的连接。如果有连接接入,它就会创建一个用于接受该连接的子进程,父 进程则继续监听别的连接请求。这种方式的缺点是:对提供的每项服务而言, d a e m o n都必须 运行并在端口上监听连接请求,这通常意味着某些系统资源(比如交换空间)的浪费。 因此,几乎所有的安装过程都会运行一个“超级服务器”,这个超级服务器针对大量的服 务创建套接字,并利用 s e l e c t ( 2 )系统调用,同步监听所有的服务。在远程主机请求其中一项服 务时,这个超级服务器就会注意到这种情况,并为该端口生成特定服务器。 常用的超级服务器是 i n e t d,即Internet Daemon。它是在系统启动时,开始运行的,它从 一个名为 / e t c / i n e t d . c o n f的启动文件中,选出自己准备管理的服务列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 。除了调用相关的服务 器外, i n e t d本身还要调用内部服务所涉及的大量日常服务。其中包括“ c h a rg e n”(只生成一 个字符串)和“d a y t i m e”(返回系统日期和时间)。 这个文件中的条目只有一行,这一行由下列字段组成: service type protocol wait user server cmdline 各字段的含义参见表8 - 1。 表8-1 字段定义 s e r v i c e 提提供服务名。必须在 / e t c / s e r v i c e文件内查找这个服务名,并把它译为端口号。有关 / e t c / s e r v i c e s 文件的详情,参见第1 0章。 t y p e 指指定套接字类型,要么是s t r e a m(用于面向连接的协议),要么是d g r a m(用于数据报传输协议)。 因此,基于T C P的服务应该一直采用s t r e a m,而基于U D P的服务则应该一直采用d g r a m。 p r o t o c o l 服对服务所用的传输协议进行命名。这个字段值必须是一个能够在 p r o t o c o l s文件内找到的有效协 议名,稍后将进一步讨论。 w a i t 服该字段只用于d g r a m套接字。即可以是w a i t,也可以是n o w a i t。如果指定的是w a i t,i n e t d在任何 时候,对指定的端口,都只执行一个服务器。如若不然,它就会在执行服务器之后,立即返回端 口,监听接入连接。这对单线程服务器来说是非常有用的。所谓单线程服务器,是单纯地读取所 有进入的数据报,直到再已没有数据报进入时,才退出。多数 R P C(远程进程调用)服务器都是 这种类型的服务器,因此多数情况下都应该指定为 w a i t。与单线程服务器相反的是多线程服务器, 它允许同时运行多个实例进程,数额不限。这类服务器较少使用,如果有,应该指定为 n o w a i t。 s t r e a m套接字应该始终采用n o w a i t。 u s e r 服这是用户的登录 I D,进程就在这个 I D下执行。其值通常应该是根用户,但有些服务可采用不同 的账号。 第8章 各种网络应用 81 下载 (续) se r v e r 服服服 给出准备执行的服务器之完美路径名。内部服务通常用 i n t e r n a l关键字标注。 c m d l i n e 服准备传给服务器的命令行。其中包括参数0,也就是命令名。通常情况下,这是一个服务 器程序名(除非该程序的行为有别于用另一个名字调用时)。如果是内部服务,这个字段就为 空。 下面是一个 / e t c / i n e t d . c o n f文件示例。 清单8-1 /etc/inetd.conf文件示例 f i n g e r服务被标示出来,因此它是不可用的。这样做通常是出于安全方面的考虑,因为黑 客常通过这一方式获得各个网络用户名。 t f t p也被标示出来。 t f t p实行的是“原始文件传输协议”,该协议允许在不经过密码验证 的情况下,把你的系统文件传播出去。这一点对 / e t c / p a s s w d文件来说,危害性不言而喻。 无盘客户机和X终端常用 t f t p从启动服务器下载自己的代码。如果你由于这个原因,需要 运行t f t p d,务必保证将其限定在客户机将从中获取文件的目录内,这是通过将这些目录名加 入t f t p d命令行来完成的。显示在清单 8 - 1中的第二个 t f t p行。 8.2 tcpd访问控制工具 由于通过计算机访问网络涉及到安全方面的问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ,所以在设计应用程序时应该全盘考虑。 但是,有些应用程序仍然存在安全方面的不足(以 RTM Internet蠕虫的表现尤为突出),或不 能区分安全主机(该类主机请求的特定服务将被接受)和非安全主机(其请求将被拒绝)。我 们前面已谈过t f t p和f i n g e r服务,因此,应该把对这些服务的访问限定于“信任主机”,常规设 置是不可能做到这一点的,这种情况下, i n e t d要么将该服务提供给所有客户机,要么一个也 82 第一部分 Linux 网络管理员指南 下载 不提供。 另一个非常有用的访问控制工具是 t c p d,该工具是 Wietse Ve n e m a(邮件地址: w i e t s e @ w z v. w i n . t u e . n l)编写的,是一个所谓的 d a e m o n封装器。如果你打算监控或保护的是 T C P服务,就可以弃服务器程序而调用它。 t c p d将请求记入系统日志 d a e m o n,查看是否允许 远程主机使用该项服务,而且只有得到肯定的答复之后,才执行真正的服务器程序。注意, 这一点不适用于基于U D P的服务。 例如,要封装finger daemon,必须将 i n e t d . c o n f中的相应行改为 # wrap finger daemon finger stream tcp nowait root /usr/sbin/tcpdin.fingerd 没有增加任何的访问控制,除了所有请求都被记入系统日志的授权设备外,客户机上进 行了一个常规的 f i n g e r设置。 访问控制的实施是通过两个文件来实现的,它们是 / e t c / h o s t s . a l l o w和/ e t c / h o s t s . d e n y。这两 个文件中分别包含接受和拒绝访问特定服务和主机的条目。 t c p d从一个名为b i ff . f o o b a r. c o m的 客户机主机,处理 f i n g e r之类的服务请求时,它将在 h o s t s . d e n y和h o s t s . a l l o w这两个文件中查看 与该服务和客户机主机相符的条目。如果在 h o s t s . a l l o w中找到了与请求的客户机主机相符的条 目,就认可访问权,不管 h o s t s . d e n y内的情况如何。如果在 h o s t s . d e n y中找到与请求服务相符 的条目,这个请求就会被拒绝,其方式是取消连接。反之,则接受服务请求。 访问文件中的条目是这样的: servicelist: hostlist [:shellcmd] s e r v i c e l i s t和h o s t l i s t的定义如表8 - 2所示。 表8-2 servicelist和h o s t l i s t的定义 s e r v i c e l i s t 这是取自/ e t c / s e r v i c e s或关键字A L L的服务列表。要使之与除了 f i n g e r和t f t p之外的所有服务对应, 利用“ALL EXCEPT finger tftp”即可 h o s t l i s t 这是主机名或 I P地址、或A L L、L O C A L或U N K N O W N这几个关键字的列表。 A L L对应任何一 台主机, L O C A L对应不包含句点的主机名(一般说来,只有通过查找 / e t c / h o s t s得来的本地主机 名中才不包含句点)。U N K N O W N对应任何一台无法找到其地址的主机。以句点开头的主机名字 串对应所有其域等同于这个名字串的主机。例如, . f o o b a r. c o m对应的是b i ff . f o o b a r. c o m。另外, 还为I P网络地址和子网编号准备了相应的关键字,详情参见 h o s t s _ a c c e s s手册 要拒绝除了本地主机以外的机器访问 f i n g e r和t f t p服务,将下面一行放入 / e t c / h o s t s . d e n y内, 让/ e t c / h o s t s . a l l o w文件为空。 in.tftpd. in.fingerd: ALL EXCEPT LOCAL, .your. d o m a i n 仅供选择的s h e l l c m d字段中可以包含一个s h e l l命令,这个命令将在已找到匹配请求条件的 条目时调用。最好布置一些小把戏,引诱黑客上钩: % h和% d参数是t c p d派生出来的,分别代表客户机主机名和服务名。详情参阅 h o s t s _ a c c e s s 手册。 8.3 服务和协议文件 对提供特定“ 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ”服务的端口来说,其端口号是在“已分配编号” R F C中定义的。要 将服务器和客户机程序用于服务名到这些端号之间的转换,每台主机上至少得保留一份服务 编号对应列表,该列表保存在一个名为 / e t c / s e r v i c e s的文件内。其中的条目结构如下: service port/protocol [aliases] 这里,s e r v i c e指的是服务名, p o r t定义的是上面准备提供服务的端口,而 p r o t o c o l定义的 是准备采用的传输协议。通常,不是 u d p,就是 t c p。为一项服务提供多个协议是行得通的, 同样,在同一个端口上提供不同的服务也是可行的,只要各项服务采用的协议不同。 a l i a s e s 字段允许为同一项服务指定备用名。 一般说来,没必要更改随网络软件一起安装在系统中的 s e r v i c e s文件。虽然如此,我们还 是从中摘录了一小段代码,如下所示: 注意,e c h o服务是端口7提供的,采用的协议是 T C P和U D P,而端口5 1 2用于两项不同服 务,即U D P上的C O M S AT daemon(通知最近收到邮件的用户,参见 x b i ff ( 1 x ))和利用T C P的 远程执行( r e x e c ( 1 ))。 与s e r v i c e s文件类似,n e t w o r k i n g库也需要一种方法将协议名(比如 s e r v i c e s文件中所用的 那些)翻译为协议编号,以便其他主机上的 I P层能够识别。这是通过在 / e t c / p r o t o c o l s文件中查 找协议名的方式得来的。该文件中每行包含一个条目,每个条目中包含一个协议名以及关联 的协议编号。其示例文件如下: 第8章 各种网络应用 83 下载 8.4 远程过程调用 对客户机 -服务器应用程序来说,它们所用的常见机制是“远程进程调用”(R e m o t e P r o c e d u r e,Call RPC)包提供的。R P C是有S u n微系统公司开发的,是一个工具和库函数集。 内置于R P C包之上的重要应用程序分别是网络文件系统 ( N F S )和网络信息系统 ( N I S ),两者将 在后续章节中讨论。 R P C服务器由一系列进程和进程参数组成,客户机可通过向服务器发送 R P C请求的方式, 调用这些进程。服务器将调用客户机这一端指定的进程,如果有返回值的话,再将它们传回 客户机。为了做到数据的传送与机器无关,客户机和服务器之间交换的所有数据都将由发送 端将它们转换为一种所谓的“外部数据表示法”格式,再由接收端把数据转换成本地表示法 格式。 有时,对R P C应用程序的改进往往与进程调用接口内的变动不相容。当然,只更改服务 器将导致仍然在原地踏步的所有应用程序崩溃。因此, R P C程序为接口分配了不同版本号, 一般从1开始,版本越新,这个数就越大。通常,服务器可以同时提供好几个不同版本;客户 机根据服务请求中的版本号,作出应答。 R P C服务器和客户机之间的网络通信有些特殊。 R P C服务器提供一个或多个进程集;每 个进程集就叫做一个程序,而且有一个唯一的程序编号。将服务名映射为相应程序编号的列 表通常保存在/ e t c / r p c文件内,下面是摘自这个文件的片段: 84 第一部分 Linux 网络管理员指南 下载 T C P / I P网络中,R P C的作者面临着如何将程序编号映射为常见的网络服务这一难题。他 们的解决办法是:让每台服务器为每个数据报和每个版本同时提供 T C P端口和U D P端口。一 第8章 各种网络应用 85 下载 86 第一部分 Linux 网络管理员指南 下载 般说来, R P C应用程序将在发送数据时,采用 U D P,而在传输的数据不能装入一个单一的 U D P数据报时,转而采用T C P。 当然,客户机程序必须有一种方法,能够找出程序编号对应的是哪个端口。采用配置文 件未免太死板,由于 R P C应用程序不采用保留端口,因此无法保证原本打算供我们的数据库 应用程序所用的端口没有被别的进程占用。鉴于此, R P C应用程序选出了自己能够得到的端 口,并将其注册为所谓的portmapper daemon(端口映射器程序)。后者充当的是所有运行于这 台机器上的R P C服务器的“经纪人”:对希望将服务和指定程序编号联系起来的客户机来说, 先在服务器的主机上查询端口映射器,后者将返回请求服务能够抵达的 T C P和U D P端口。 上面这种方法有个明显的不足,比标准 B e r k e l e y服务所用的 inetd daemon更甚。因为在端 口映射器失效时,所有的 R P C端口信息也会丢失;这通常意味着你不得不手工启动所有 R P C 服务器或重启整台机器。 端口映射器名为r p c . p o r t m a p,驻留于/ u s r / s b i n中。 注意 对Red Hat 6来说,端口映射器位于/sbin/portmap。 8.5 r 命令的配置 可在远程主机上执行的命令有许多。它们是: r l o g i n、r s h、r c p和r c m d。它们在远程主机 上创建一个外壳,允许用户执行这些命令。当然,客户机需要拥有相应的主机账号,以便能 在这些远程主机上执行命令。所以,所有这些命令都要执行一个身份验证进程。一般情况下, 客户机将用户的登录名告诉服务器,服务器再依次请求以常规方式验证的密码。 但有些时候,需要对特定的用户发放免检通行证。比如,如果你需要频频登录到局域网 内的其他机器,你肯定希望免去每次的键入密码之苦。 我们建议取消身份验证只限于其密码数据库同步更新的少数主机,或少数特权用户(由 于管理方面的原因,他们需要访问多台计算机)。只要你想允许人们未指定任何一个登录 I D或 密码,就进入你的主机,一定要先保证不会偶然将访问权授予任何人! 对r命令来说,取消身份验证的方法有两种。其一是针对超级用户而言,是允许特定或所 有主机上的特定或所有用户(毫无疑问,“所有”将是非常糟糕的选择)在不要求提供密码的 情况下,登录进来。这种访问是由一个名为 / e t c / h o s t s . e q u i v的文件控制的。该文件中包含一系 列主机和用户名,这里的主机名和用户名被视为与本地主机上的用户等同。其二是针对普通 第8章 各种网络应用 87 下载 用户而言,授权特定主机上的其他用户可以访问自己的账号。这种访问控制包含在用户主目 录的f i l e . r h o s t s文件中。出于安全方面的考虑,该文件必须为用户或超级用户专有,而且不能 是象征性的链接,否则就是无效的(在 N F S环境中,可能还需要为它提供 4 4 4的保护级,因为 超级用户只能通过N F S访问磁盘上的文件)。 客户机请求 r服务时,将先后在 / e t c / h o s t s . e q u i v和. r h o s t s文件内查找准备用来登录的主机和 用户名。比如, J a n e t在G a u s s这台机器上工作,想登录到 J o e在E u l e r主机上的账号。下面的示 例将以J a n e t作为客户机用户, J o e作为本地用户为例。现在, J a n e t键入 $ rlogin -1 joe euler 在G a u s s上,如果 J a n e t被授予自由访问的话,服务器将先搜索 h o s t s . e q u i v(注意,在有人 试图以根的身份登录时, h o s t s . e q u i v文件是不能搜索的),如果搜索失败,它就会试着在 J o e的 根目录内的 . r h o s t s文件中查找 J a n e t。 E u l e r上的h o s t s . e q u i v文件如下所示: g a u s s e u l e r - p u b l i c quark.physics.groucho.edu andres 该文件中的一个条目由一个主机名构成,用户名是可选的。如果主机名自行显示出所有 的用户,该主机的所有用户都得以允许在无须验证的情况下,进入他们的本地账号。在上面 的示例中, J a n e t得以允许从G a u s s登录到她自己的账号,除了根之外的其他用户也如此。但如 果J a n e t想以J o e的身份登录,就会像往常一样,提示她输入密码。 如果主机名后面跟有用户名,就像示例文件中的最后一行那样,该用户就可以无须任何 验证,自由地访问除了根账号外的所有账号。 主机名前面还可以加上一个负号-,例如“- p u b l i c”。它要求公开对所有的账号进行身 份验证,不管用户在自己的 . r h o s t s文件内的授权如何。 . r h o s t s文件的结构和 h o s t s . e q u i v完全相同,但其含义有些差别。比如 E u l e r机器上, J o e 的. r h o s t s文件是这样的; c h o m p . c s . g r o u c h o . e d u gauss janet 第一个条目授权 J o e可以从c h o m p . c s . g r o u c h o . e d u自由访问所有的账号,但该条目并没有影 响E u l e r或C h o m p上的其他账号。第二个条目是前者的变体,它授权 J a n e t可以从G a u s s自由访 问J o e的账号。 注意,客户机的主机名是通过将呼叫方的地址逆向映射为主机名这一方式获得的。所以 如果解析器不知道主机的话,就无法使用这一特性。在下面这两种情况下,客户机的主机名 被认为对应于h o s t s文件内的主机名: ■ 从字面上来讲,客户机的规范主机名(而不是别名)对应于文件内的主机名。 ■ 如果客户机的主机名是一个完整资格域名(比如是在运行 D N S时,解析器返回的),从 字面上来讲,它不对应h o s t s文件内的主机名,它利用本地域名,对主机名进行了扩展。 注意 勿庸置疑,启用r命令实在不是个好主意。相比而言,为了更好地保护自己的数 据,应该采用非常严格的S S H加密和用户身份验证软件。令人遗憾的是,由于美国政 府的保密策略,Linux分销商不能将SSH之类的优秀软件包含在他们的光盘内。 第8 章各种网络应用 8.1 inetd 超级服务器 8.2 tcpd 访问控制工具 8.3 服务和协议文件 8.4 远程过程调用 8.5 r 命令的配置
本文档为【LINUX系统管理白皮书008】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_097919
暂无简介~
格式:pdf
大小:298KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2012-11-07
浏览量:7