From 42f55cdc02665c69fc8814e0fb2281a73d4d45c0 Mon Sep 17 00:00:00 2001 From: Fukang Chen Date: Wed, 31 Dec 2008 16:34:28 +0000 Subject: MFen: Makefile 1.111 -> 1.112 advanced-networking/chapter.sgml 1.415 -> 1.419 basics/chapter.sgml 1.154 -> 1.156 book.sgml 1.173 -> 1.174 boot/chapter.sgml 1.65 -> 1.68 chapters.ent 1.38 -> 1.39 cutting-edge/chapter.sgml 1.231 -> 1.233 desktop/chapter.sgml 1.78 -> 1.85 disks/chapter.sgml 1.288 -> 1.290 dtrace/chapter.sgml 1.5 -> 1.7 eresources/chapter.sgml 1.195 -> 1.196 filesystems/chapter.sgml 1.4 -> 1.5 firewalls/chapter.sgml 1.85 -> 1.86 geom/chapter.sgml 1.43 -> 1.47 install/chapter.sgml 1.390 -> 1.392 introduction/chapter.sgml 1.126 -> 1.130 kernelconfig/chapter.sgml 1.186 -> 1.190 l10n/chapter.sgml 1.124 -> 1.126 mac/chapter.sgml 1.73 -> 1.74 mirrors/chapter.sgml 1.451 -> 1.455 network-servers/chapter.sgml 1.109 -> 1.113 ports/chapter.sgml 1.284 -> 1.286 preface/preface.sgml 1.41 -> 1.46 serialcomms/chapter.sgml 1.130 -> 1.133 updating/chapter.sgml 1.1 -> 1.2 vinum/chapter.sgml 1.45 -> 1.46 Obtained from: The FreeBSD Simplified Chinese Project --- .../books/handbook/network-servers/chapter.sgml | 257 ++++++++++++++++++++- 1 file changed, 255 insertions(+), 2 deletions(-) (limited to 'zh_CN.GB2312/books/handbook/network-servers') diff --git a/zh_CN.GB2312/books/handbook/network-servers/chapter.sgml b/zh_CN.GB2312/books/handbook/network-servers/chapter.sgml index 84519f0d5d..08bb52ee63 100644 --- a/zh_CN.GB2312/books/handbook/network-servers/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/network-servers/chapter.sgml @@ -2,7 +2,7 @@ The FreeBSD Documentation Project The FreeBSD Simplified Chinese Project - Original Revision: 1.109 + Original Revision: 1.113 $FreeBSD$ --> @@ -68,6 +68,11 @@ 如何同步时间和日期,以及如何设置使用NTP协议的时间服务器。 + + 如何配置标准的日志守护进程, + syslogd, 接受远程主机的日志。 + + 在阅读此章节之前,您应当: @@ -3929,7 +3934,20 @@ DocumentRoot /www/someotherdomain.tld 所介绍的那样, 修改这个文件之后, 必须让 inetd 重新加载它, - 才能使新的设置生效。 + 才能使新的设置生效。请参阅 + 以获取更多有关如何在你系统上启用 inetd + 的详细信息。 + + ftpd 也可以作为一个独立的服务启动。 + 这样的话就需要在 /etc/rc.conf + 中设置如下的变量: + + ftpd_enable="YES" + + 在设置了上述变量之后,独立的服务将在下次系统重启的时候启动, + 或者通过以 root 身份手动执行如下的命令启动: + + &prompt.root; /etc/rc.d/ftpd start 现在可以通过输入下面的命令来登录您的 FTP 服务器了: @@ -4446,6 +4464,241 @@ driftfile /var/db/ntp.drift + + + + + Tom + Rhodes + Contributed by + + + + + 使用 <command>syslogd</command> 记录远程主机的日志 + + 处理系统日志对于系统安全和管理是一个重要方面。 + 当有多台分布在中型或大型网络的机器,再或者是处于各种不同类型的网络中, + 监视他们上面的日志文件则显得非常难以操作, 在这种情况下, + 配置远程日志记录能使整个处理过程变得更加轻松。 + + 集中记录日志到一台指定的机器能够减轻一些日志文件管理的负担。 + 日志文件的收集, 合并与循环可以在一处配置, + 使用 &os; 原生的工具, 比如 &man.syslogd.8; 和 &man.newsyslog.8;。 + 在以下的配置示例中, 主机 A, 命名为 + logserv.example.com, + 将用来收集本地网络的日志信息。 主机 B, + 命名为 logclient.example.com + 将把日志信息传送给服务器。 在现实中, + 这两个主机都需要配置正确的正向和反向的 DNS + 或者在 /etc/hosts 中记录。 + 否则, 数据将被服务器拒收。 + + + 日志服务器的配置 + + 日志服务器是配置成用来接收远程主机日志信息的机器。 + 在大多数的情况下这是为了方便配置, 或者是为了更好的管理。 + 不论是何原因, 在继续深入之前需要提一些必需条件。 + + 一个正确配置的日志服务器必须符合以下几个最基本的条件: + + + + 服务器和客户端的防火墙规则允许 514 端口上的 + UDP 报文通过。 + + + + syslogd 被配置成接受从远程客户发来的消息。 + + + + syslogd 服务器和所有的客户端都必须有配有正确的正向和反向 + DNS, 或者在 + /etc/hosts 中有相应配置。 + + + + 配置日志服务器, 客户端必须在 + /etc/syslog.conf 中列出, + 并指定日志的 facility: + + +logclient.example.com +*.* /var/log/logclient.log + + + 更多关于各种被支持并可用的 facility + 能在 &man.syslog.conf.5; 手册页中找到。 + + + 一旦加入以后, 所有此类 facility + 消息都会被记录到先前指定的文件 + /var/log/logclient.log + + 最后, 日志文件应该被创建。 不论你用何种方法创建, + 比如 &man.touch.1; 能很好的完成此类任务: + + &prompt.root; touch /var/log/logclient.log + + 此时, 应该重启并确认一下 syslogd + 守护进程: + + &prompt.root; /etc/rc.d/syslogd restart +&prompt.root; pgrep syslog + + 如果返回了一个 PIC 的话, + 服务端应该被成功重启了, 并继续开始配置客户端。 + 如果服务端没有重启的话, 请在 + /var/log/messages + 日志中查阅相关输出。 + + + + 日志客户端配置 + + 日志客户端是一台发送日志信息到日志服务器的机器, + 并在本地保存拷贝。 + + 类似于日志服务器, 客户端也必须满足一些最基本的条件。 + + + + &man.syslogd.8; + 必须被配置成发送指定类型的消息到能接收他们的日志服务器。 + + + + 防火墙必须允许 512 端口上的 UDP 包通过。 + + + + 必须配置正向与反向 DNS, + 或者在 /etc/hosts 中有正确的记录。 + + + + 相比服务器来说配置客户端更轻松一些。 + 客户端的机器在 /etc/rc.conf + 中做如下的设置: + + syslogd_enable="YES" +syslogd_flags="-a logclient.example.com -vv" + + 第一个选项将在机器启动的时候启用 syslogd + 守护进程, 第二行允许在这台服务器上接收从客户端发送来的数据。 + 后面的部分, 使用 增加日志消息的冗长程度。 + 这对于调整 facility 非常有用, + 因为管理能够看见何种消息被发送至哪一级 facility。 + + Facility 是描述某个消息由系统的哪部分生成的。 举例来说, + ftpipfw 都是 facility。 + 当这两项服务生成日志消息时, 它们通常在日志消息中包含了这两种工具。 + Facility 通常带有一个优先级或等级, + 就是用来标记一个日志消息的重要程度。 最普通的为 + warninginfo。 + 请参阅 &man.syslog.3; 手册页以获得一个完整可用的 + facility 与优先级列表。 + + 日志服务器必须在客户端的 /etc/syslog.conf + 中指明。 在此例中, @ + 符号被用来表示发送日志数据到远程的服务器, + 看上去差不多如下这样: + + *.* @logserv.example.com + + 添加后, 必须重启 syslogd + 使得上述修改生效: + + &prompt.root; /etc/rc.d/syslogd restart + + 测试日志消息是否能通过网络发送, + 使用 &man.logger.1; 发送一段消息至 + syslogd + + &prompt.root; logger "Test message from logclient" + + 这段消息现在应该出现在客户和服务端上的 + /var/log/messages + + + + 调试日志服务器 + + 在某些情况下, 如果日志服务器没有收到消息的话就需要调试一番了。 + 有几个可能的原因, 最常见的两个是网络连接的问题和 + DNS 的问题。 为了测试这些问题, + 请确认两边的机器都能使用 /etc/rc.conf + 中所设定的主机名访问到对方。 如果这个能正常工作的话, + 那么就需要对 /etc/rc.conf + 中的 syslogd_flags 选项做些修改了。 + + 在以下的示例中, + /var/log/logclient.log 是空的, + /var/log/message 中也没有表明任何失败的原因。 + 为了增加调试的输出, 修改 ayalogd_flags + 选项至类似于如下的示例, 并重启服务: + + syslogd_flags="-d -a logclien.example.com -vv" + + &prompt.root; /etc/rc.d/syslogd restart + + 在重启服务之后, 屏幕上将立刻闪现类似这样的调试数据: + + logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart +syslogd: restarted +logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel +Logging to FILE /var/log/messages +syslogd: kernel boot file is /boot/kernel/kernel +cvthname(192.168.1.10) +validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com; +rejected in rule 0 due to name mismatch. + + 很明显,消息是由于主机名不匹配而被拒收的。 + 在一点一点的检查了配置文件之后, 发现了 + /etc/rc.conf 中如下这行有输入错误: + + syslogd_flags="-d -a logclien.example.com -vv" + + 这行应该包涵有 logclient, 而不是 + logclien。 + 在做了正确的修改并重启之后便能见到预期的效果了: + + &prompt.root; /etc/rc.d/syslogd restart +logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart +syslogd: restarted +logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel +syslogd: kernel boot file is /boot/kernel/kernel +logmsg: pri 166, flags 17, from logserv.example.com, +msg Dec 10 20:55:02 <syslog.err> logserv.example.com syslogd: exiting on signal 2 +cvthname(192.168.1.10) +validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com; +accepted in rule 0. +logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2 +Logging to FILE /var/log/logclient.log +Logging to FILE /var/log/messages + + 此刻, 消息能够被正确接收并保存入文件了。 + + + + 安全性方面的思考 + + 就像其他的网络服务一样, 在实现配置之前需要考虑安全性。 + 有时日志文件也包含了敏感信息, 比如本地主机上所启用的服务, + 用户帐号和配置数据。 从客户端发出的数据经过网络到达服务器, + 这期间既没有加密也没有密码保护。 如果有加密需要的话, + 可以使用 security/stunnel, + 它将在一个加密的隧道中传输数据。 + + 本地安全也同样是个问题。 日志文件在使用中或循环转后都没有被加密。 + 本地用户可能读取这些文件以获得对系统更深入的了解。 + 对于这类情况, 给这些文件设置正确的权限是非常有必要的。 + &man.newsyslog.8; 工具支持给新创建和循环的日志设置权限。 + 把日志文件的权限设置为 600 + 能阻止本地用户不必要的窥探。 + +