📄 0560daemons.htm
字号:
raw 代表 server 需要与 IP 直接对谈!例如 telnet 使用 TCP ,所以∶
<center>socket_type = stream</center></td></tr>
<tr>
<td align=center><font face="细明体">protocol</font></td>
<td align=center><font face="细明体">tcp<br>udp<br>....</font></td>
<td>这个东西说的是,连线的状态使用的是哪一种协定!?各个协定的代号可以参考
/etc/protocols 内容!此外,除非是你自己设定的服务,否则这个可以不用设定啦!</td></tr>
<tr>
<td align=center><font face="细明体">wait</font></td>
<td align=center><font face="细明体">yes<br>no</font></td>
<td>这就是我们刚刚提到的 <b>Multi-threaded</b> 与 <b>single-threaded</b>
的方式啦!一般来说,我们希望大家的要求都可以同时被启用,所以可以设定
<center>wait = no</center></td></tr>
<tr>
<td align=center><font face="细明体">user</font></td>
<td align=center><font face="细明体">UID<br>root</font></td>
<td>还记得我们在 <a href="0410accountmanager.php">帐号管理</a> 那一篇提到的 UID
概念吗?对啦!这个 UID 就是那个 UID 啦!要注意的是,假如你的服务启动者不要以
root 为主的话,那么这个地方就可以改变其他的使用者,例如
nobody !这个咚咚也会有安全防护的机制存在!此外,需要注意这个 UID 必须存在于
/etc/passwd 。</td></tr>
<tr>
<td align=center><font face="细明体">group</font></td>
<td align=center><font face="细明体">GID</font></td>
<td>跟 user 的意思相同!只是这个 GID 的使用者也必须存在于 /etc/group 当中!</td></tr>
<tr>
<td align=center><font face="细明体">instances</font></td>
<td align=center><font face="细明体">number<br>UNLIMITED</font></td>
<td>这个是『在同一时间之内,同一个服务可以允许的连线数目』的意思,
你可以写入一个『数字』来控制连线数目,也可以使用 UNLIMITED
来告诉系统『没有上限』棉!例如你在同时段之内仅允许 ftp 连线有 30
个,那么这里就可以输入 30 啦!</td></tr>
<tr>
<td align=center><font face="细明体">nice</font></td>
<td align=center><font face="细明体">-19 ~ 19</font></td>
<td>还记得我们在 <a href="0440processcontrol.php">程序管理</a> 里面谈到的那个 nice
指令吗?!对啦!这里就是这个东西棉!数字越小( 负值 )代表该程序越优先被执行!</td></tr>
<tr>
<td align=center><font face="细明体">server</font></td>
<td align=center><font face="细明体">program<br>完整档名</font></td>
<td>这个就是指出这个服务的启动程式!例如要启动 telnet 的话,其实就是 in.telnetd
这支程式啦!所以这个时候在这里输入
<center>server = /usr/sbin/in.telnetd</center></td></tr>
<tr>
<td align=center><font face="细明体">server_args</font></td>
<td align=center><font face="细明体">program<br>一些参数</font></td>
<td>这里应该输入的就是你的 server 那里需要输入的一些参数啦!例如 in.telnetd
当中,我们还可以加入某些参数! </td></tr>
<tr>
<td align=center><font face="细明体">log_on_success</font></td>
<td align=center><font face="细明体">PID<br>HOST<br>USERID<br>EXIT<Br>DURATION</font></td>
<td>在『成功登入』之后,需要记录的项目∶PID 为纪录该 server 启动时候的 process ID ,
HOST 为远端主机的 IP、USERID 为登入者的帐号、EXTI 为离开的时候记录的项目、
DURATION 为该使用者使用此服务多久?</td></tr>
<tr>
<td align=center><font face="细明体">log_on_failure</font></td>
<td align=center><font face="细明体">HOST<br>USERID<br>ATTEMPT<br>RECORD</font></td>
<td>当登入失败之后被 syslog 登入的项目∶HOST为远端主机的 IP,USERID为登入者帐号、
ATTEMPT为记录登入失败者企图的意图为何、RECORD为记录远端主机的资讯!以及为何本机
server 不能启动的原因!主要有 login, shell, exec, finger
等指令可以使用在这里!( 基本上,可以在 /etc/hosts.allow 或 /etc/hosts.deny 书写内容 )。</td></tr>
<tr bgcolor=lightblue><td colspan=3><span class=text_import1>进阶设定项目∶</span></td></tr>
<tr>
<td align=center><font face="细明体">env</font></td>
<td align=center><font face="细明体">'name=value'</font></td>
<td>这一个项目可以让你设定环境变数,环境变数的设定规则可以参考
<a href="0320bash.php">认识 BASH Shell </a>。</td></tr>
<tr>
<td align=center><font face="细明体">port</font></td>
<td align=center><font face="细明体">number</font></td>
<td>这里可以设定不同的服务与对应的 port ,但是请记住你的 port 与服务名称必须与
/etc/services 内记载的相同才行!</td></tr>
<tr>
<td align=center><font face="细明体">redirect</font></td>
<td align=center><font face="细明体">IP_Address port</font></td>
<td>将 client 端对我们 server 的要求,转到另一部主机上去!呵呵!这个好玩呦!
例如当有人要使用你的 ftp 时,你可以将他转到另一部机器上面去!那个 IP_Address
就代表另一部远端主机的 IP 棉!</td></tr>
<tr>
<td align=center><font face="细明体">includedir</font></td>
<td align=center><font face="细明体">directory</font></td>
<td>表示将某个目录底下的所有档案都给他塞进来 xinetd.conf 这个设定里头!这东西有用多了,
如此一来我们可以一个一个设定不同的项目!而不需要将所有的服务都写在 xinetd.conf
当中!你可以在 /etc/xinetd.conf 发现这个设定呦!</td></tr>
<tr bgcolor=lightblue><td colspan=3><span class=text_import1>安全控管项目∶</span></td></tr>
<tr>
<td align=center><font face="细明体">bind</font></td>
<td align=center><font face="细明体">IP_Address</font></td>
<td>这个是设定『允许使用此一服务的介面卡』的意思!举个例子来说,你的 Linux
主机上面有两个 IP ,而你只想要让 IP1 可以使用此一服务,但 IP2
不能使用此服务,这里就可以将 IP1 写入即可!那么 IP2 就不可以使用此一 server 棉</td></tr>
<tr>
<td align=center><font face="细明体">interface</font></td>
<td align=center><font face="细明体">IP_Address</font></td>
<td>与 bind 相同</td></tr>
<tr>
<td align=center><font face="细明体">only_from</font></td>
<td align=center><font face="细明体">0.0.0.0<br>192.168.1.0/24<br>host_name<br>domain_name</font></td>
<td>这东西用在安全机制上面,也就是管制『只有这里面规定的 IP 或者是主机名称可以登入!』如果是
0.0.0.0 表示所有的 PC 皆可登入,如果是 192.168.1.0/24 则表示为 C class 的网域!亦即由
192.168.1.1 ~ 192.168.1.255 皆可登入!另外,也可以选择 domain name ,例如
.ev.ncku.edu.tw 就可以允许成大环工系的网域 IP 登入你的主机使用该 server !</td></tr>
<tr>
<td align=center><font face="细明体">no_access</font></td>
<td align=center><font face="细明体">0.0.0.0<br>192.168.1.0/24<br>host_name<br>domain_name</font></td>
<td>跟 only_from 差不多啦!就是用来管理可否进入你的 Linux 主机启用你的 server 服务的管理项目!
no_access 表示『不可登入』的 PC 棉!</td></tr>
<tr>
<td align=center><font face="细明体">access_times</font></td>
<td align=center><font face="细明体">00:00-12:00<br>HH:MM-HH:MM</font></td>
<td>这个项目在设定『该服务 server 启动的时间』,使用的是 24 小时的设定!例如你的 ftp 要在
8 点到 16 点开放的话,就是∶ 08:00-16:00。</td></tr>
<tr>
<td align=center><font face="细明体">umask</font></td>
<td align=center><font face="细明体">000<br>777<br>022</font></td>
<td>还记得在 <a href="0210filepermission.php">档案权限</a> 里面约略提过的 umask
这个东西吗?呵呵!没错!就是那个鬼玩意儿棉!
可以设定使用者建立目录或者是档案时候的属性!系统建议值是 022 。</td></tr>
</table><br>
OK!我们就利用上面这些参数来架构出我们所需要的一些服务的设定吧!
参考看看底下的设定方法棉! ^_^<br><br>
</div>
<hr><a name=superd_telnet></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>一个简单的 telnet 范例设定</span>
<div class=block2>
我们说过,使用 super daemon 来管理主机,最大的优点就是多了一道管理的手续,
所以,可以进行比较多的监控动作,像上一个小节我们提到的相关参数当中,
就能够发现到一些端倪了。在这里,我们举个简单的例子来说明一下整个 super daemon
的管理吧!但是要设定 telnet 的话,就得要安装 telnet 才行。
在 FC4 的版本上,我们安装的是 telnet-server-0.17-35 这个套件资料,
请您先以 <a href="0520rpm_and_srpm.php">rpm 的方式</a> 来安装喔! ^_^<br><br>
在预设的 /etc/xinetd.d/telnet 内容是这样的∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/xinetd.d/telnet</span>
service telnet
{
flags = REUSE <span class=term_note><==额外的参数使用 REUSE </span>
socket_type = stream <span class=term_note><==使用 TCP 的封包格式</spaN>
wait = no <span class=term_note><==可以有多个连线同时连进来</span>
user = root <span class=term_note><==启动者预设为 root </span>
server = /usr/sbin/in.telnetd <span class=term_note><==使用的是这支程式!</span>
log_on_failure += USERID <span class=term_note><==若登入错误,『加计』记录使用者 ID</span>
disable = yes <span class=term_note><==此服务预设关闭!</span>
}
</pre></td></tr></table>
其实,主要的参数可以参考上一小节的表格,也可以直接利用『 man xinetd.conf 』来查阅!
不过,如果你对于这样的设定并不满意的话,其实还可以手动来修改呢!
因为我们知道, telnet 并不是个十分安全的服务,详细机制可以参考
<a href="../linux_server">伺服器篇</a> 的
<a href="../linux_server/0310telnetssh.php">远端连线伺服器</a> 来查阅,
所以,如果你想要更多的安全机制,举例来说,你想要让 telnet 在区域网路内与 Internet
上面的连线机制有差异时,例如这样∶<ul>
<li>对内部网域开放较多权限的部分∶<br>
假设 Linux 主机有两张网路卡,对内的这一张 IP 为 192.168.1.100 ,且仅针对
192.168.1.0/24 这个网段提供登入。然后开放所有与 telnet 有关的权限,
包含总连线数量与连线时间等。但是, 192.168.1.120 及 192.168.1.130
两个 IP 不允许登入;</li><br>
<li>对外部网域较多限制的设定∶<br>
对外的 IP 假设为 140.116.44.125 ,且仅允许台南的校园网路 (140.116.0.0/16),
以及教育界的主机名称 (.edu.tw),另外,仅开放早上 1~9 点及 20~24 两个时段登入而已。
此外,最多容许十个连线进入。
</ul>
在这样的规划情况下,我可以将刚刚上头的 /etc/xinetd.d/telnet 这个档案修改成为∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/xinetd.d/telnet</span>
<span class=term_say># 先针对对内的较为松散的限制来设定∶</span>
<span class=term_write>service telnet
{
disable = no <span class=term_note><==预设就是启动 telnet 服务</span>
bind = 192.168.1.100 <span class=term_note><==只允许经由这个介面卡的封包进来</span>
only_from = 192.168.1.0/24 <span class=term_note><==只允许 192.168.0.0/24 这个网段
的主机连线进来使用 telnet 的服务</span>
no_access = 192.168.1.{120,130} <span class=term_note><==不许这些 PC 登入</span>
instances = UNLIMITED <span class=term_note><==同时允许连线不限制!</span>
nice = 0 <span class=term_note><==使用的优先顺序较高</span>
flags = REUSE <span class=term_note><==额外使用的参数</span>
socket_type = stream <span class=term_note><==使用 tcp 封包常用的连线型态</span>
wait = no <span class=term_note><==不需等待,可以同时允许多个连线</span>
user = root <span class=term_note><==启动程序的使用者身份</span>
server = /usr/sbin/in.telnetd<span class=term_note><==服务启动的程式</span>
server_args = -a none <span class=term_note><==上面那个程式的参数</span>
log_on_failure += USERID <span class=term_note><==错误登入时,要记录下来的内容</span>
}
<span class=term_say># 再针对外部的连线来进行限制呢!</span>
service telnet
{
disable = no <span class=term_note><==预设就是启动 telnet 服务</span>
bind = 140.116.44.125 <span class=term_note><==只允许经由这个介面卡的封包进来</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -