博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
super daemon与tcp_wrappers结合应用小结(理论部分)
阅读量:6356 次
发布时间:2019-06-23

本文共 4470 字,大约阅读时间需要 14 分钟。

linux
下,主机常常会收到一些要求,比如来自本机系统要求或者是网络客户端的服务要求,只要有要求来的时候,通常就是各式各样的进程负责去唤起应该要工作的服务来工作!

守护进程目前有两种基本的模式,分别是有独立守护进程与和非独立守护进程两种方式,其中非独立守护进程的各项工作由超级守护进程
xinetd
(一种特殊的独立守护进程)代为管理。
 
换句话说,可以理解为超级守护进程可以代表全部的非独立守护进程。

独立守护进程(
stand_alone
):

独立守护进程之后,就直接常驻在内存当中!他虽然会一直的占用系统的资源,但最大的优点就是,他会一直启动!所以当有要求来的时候,他就会很快速的响应!常常用在这一种
 
进程的网络服务如常见的
 httpd
vsftpd 
等。

超级守护进程(
super daemon
):

 
相对于独立守护进程的执行方式,这一种服务的启动方式则是由统一的一个进程来负责唤起该服务!这一个统一负责的进程就是
 xinetd
!常用非独立守护进程的网络服务有
telnet
tftp
等。

   
下面说说超级守护守护进程的相关信息。

   
超级守护进程的配置文件位于
/etc/xinetd.conf
中,这个文件相当于那些非独立守护进程的配置文件的模板。在设置非独立守护进程的配置文件时可以参考这个文件。

defaults

# The next two items are intended to be a quick access place to

# temporarily enable or disable services.

#       enabled         =

#       disabled        =

确定是否开启本服务,如果
enabled=yes
,或者
disabled=no
就打开该项服务,反之
enabled=no 
或者
disabled=yes
就是关闭该项服务喽!在非独立守护进程的配置文见中默认是
   disable = yes

# Define general logging characteristics.

        log_type        = SYSLOG daemon info

        log_on_failure  = HOST

        log_on_success  = PID HOST DURATION EXIT

定义登陆特征的选项,
log_type
选项设置显示登陆类型,如果登录失败,显示主机名,如果登陆成功,则显示登陆用户的
PID
,主机名,在线时间,出口。在非独立守护进程的配置文见中默认是
 log_on_failure  += USERID   
+=
”的意思是在
xinetd.conf
的基础上再加上
 USERID

# Define access restriction defaults

#       no_access       =

#       only_from       =

#       max_load        = 0

        cps             = 50 10

        instances       = 50

        per_source      = 10

 
定义用户登陆时的限制选项,“
no_access = 
”后跟不允许登录的主机,“
only_from= 
”后跟允许登陆的主机。表示主机的方法有四种。分别是:

1、
以网段形式
 
例如:
192.168.1.0

2、
以网络名形式
 
这些网络名来自
/etc/networks
的配置文件或者
NIS
 
例如:
@mynetwork

3、
以主机名形式(必须以
.
开头,切记)
 
例如:
.domain.com

4、
IP
地址加上子网掩码
 
例如:
192.168.0.0/255.255.255.0 
或者
192.168.0.0/24

【注】当在配置文件中同时存在
no_access 
 only_from
时系统取最佳匹配。也就是说以指定范围小的那个选项为准。若两个都不存在,则允许访问。

max_load  
最大登陆的客户端数

cps
限制进入的数率。这一项有两个值,前一个值代表每秒钟处理的最大并发链接数,但是如果超过最大链接时,后面一个值就有用途了。在超过最大链接数的情况下,当有新的链接进来时需要等待一段时间后重新进行链接,后一个值就是来定义这个等待时间的。

per_source 
允许一个
IP
发起的最大并发链接数。

 
 
# Address and networking defaults

#       bind            =

#       mdns           = yes

        v6only          = no

bind
的作用是绑定监听地址

v6only 
定义是否支持
IP v6
地址协议

# setup environmental attributes

#       passenv         =

        groups          = yes

        umask           = 002

这是设置环境变量的一些参数,一般用默认值就行了,在非独立守护进程中一般不会出现。

# Generally, banners are not used. This sets up their global defaults

#       banner          =

#       banner_fail     =

#       banner_success  =

 
一般来说,
banners
的用途不大。其作用是:当客户端链接时反馈给客户端的欢迎信息或者登录失败信息。

下面就以
telnet
服务为例来具体说明:

telnet
服务的配置文件在
/etc/xinetd.d/telnet
中,打开其配置文件可以看到:

service telnet{

        disable = no

        flags           = REUSE

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/sbin/in.telnetd

        only_from       =192.168.0.0/24

        log_on_failure  += USERID

        access_times     =8:00-18:00

}

其中:

flags  
表示服务运行标志

socket_type 
表示套接字类型,他有两个选项。
 stream 
表示使用的是
TCP
协议,
dgram 
表示使用的是
UDP
协议。

server 
表示客户端使用
telnet
登录服务器时,服务器要调用的系统进程。

wait 
yes 
no 
两个选项,
yes 
表示单线程,由非独立守护进程自己来管理用户的登录情况,
no 
表示多线程,由
xinetd
代为管理用户登录情况。

user 
以某个用户的身份来运行该程序。

access_times 
设定用户可以访问的时间段。

 
 
 
下面说一下
tcp_warpper
的一些设置:

事实上,除了使用
 xinetd
来设定安全机制之外,
 
我们还可以利用额外的机制来抵挡某些不受欢迎的主机!
 
那就是
/etc/hosts.allow 
以及
 /etc/hosts.deny 
这两个档案的功能啦!

tcp_warpper
的工作原理图为:

当有外界访问请求时,
tcp_warpper
就去
/etc/hosts.allow
文件中寻找对应条目,如果在该文件中寻找到就允许访问,如果寻找不到就接着去
/etc/hosts.deny
文件中寻找,如果找到,就拒绝访问,如果寻找不到,则允许访问。

这两个文件内容基本的语法是:

<service(program_name)> : <IP, name
netmask
network name> : <action>

第一项
<service(program_name)>

服务进程名:即可执行二进制程序名,不是服务名。

如是独立守护进程,则直接写进程名,例如
 vsftpd

如果是非独立守护进程,要在进程名前加
”in.”
,例如
 in.tenletd

另外,如果服务器端有两块以上的网卡,还可以对网卡进行绑定,即设置客户端是基于那块网卡来进行访问的。例如:
in.telnetd@192.168.0.254 : 192.168.0.

 
第二项
<IP, host name
netmask
network name>

IP 
即单个具体的
IP
地址,例如
 
192.168.0.82

还有一个特殊之处是
IP
地址可以写成
 192.168.0.  
意思是
192.168.0.
网段内的所有主机。

host name 
即某个域名,必须以“
.
”开头,例如
  .example.com  
意思是包括
example.com
域中所有主机。

netmask 
即包括某个网段,
 
例如:
192.168.0.0/255.255.255.0

【注:】与非独立守护进程配置文件不同,该文件不支持无类域间路由,所以不能写成
192.168.0.0/24 
必须写成子网掩码形式
192.168.0.0/255.255.255.0

network name 
即这些网络名来自
/etc/networks
的配置文件或者
NIS
 
例如:
@mynetwork

 
此外,我们还可以使用一些特殊参数(即宏定义)在第二项!内容有:

* ALL
:代表全部的
 program_name 
或者是
 IP 
都接受的意思,

例如
 ALL: ALL: deny

    * LOCAL
:匹配来自本地主机;例如:
 ALL: LOCAL: allow

    * UNKNOWN
:表示不可被解析的
 IP
domain 
等主机;

    * KNOWN
:表示为可解析的
 IP, domain
等主机;

* PARANOID
:表示正反向解析不匹配的地址;

* EXCEPT
:表示不包含后面的主机;

例如:
in.telnetd:192.168.0. EXCEPT 192.168.0.82

【注:】这些特殊参数必须要大些。

第三项
<action>

主要的内容有:

*spawn

可以利用后续接的
 shell 
来进行额外的工作,且具有变数功能,主要的变数内容为:
 %h, %a, %d
等等;

          %a 
表示客户端地址

%A 
表示服务器端地址

%h 
表示客户端主机名(如果名字不存在,则用
IP
来表示)
%H 
表示服务器端主机名

%d 
表示该项服务的可执行文件名

%c 
表示客户端信息(以
user@host
格式来表示)

 %s 
表示服务器短信息(以
server@host
格式来表示)

%p 
表示
PID

%% 
表示转义字符
%

* twist

立刻执行后面的指令,且执行完后终止该次连线的要求
 (DENY)

*banners

读取
/var/banners/servicename
下的的文件,将文件内的欢迎信息显示给登陆用户
 
切记
servicename
必须要与第一项
service
名字相同。否则就读取不到这些信息。有关具体实验步骤,请参阅实验部分。
本文转自 linuxtro 51CTO博客,原文链接:http://blog.51cto.com/linuxtro/278641,如需转载请自行联系原作者
你可能感兴趣的文章
BZOJ1791[Ioi2008]Island 岛屿 ——基环森林直径和+单调队列优化DP+树形DP
查看>>
业务学习
查看>>
围观窗体与组件04 - 零基础入门学习Delphi26
查看>>
springmvc中的数据传递
查看>>
HTTP解析-----第一课
查看>>
constructor 属性返回变量或对象的构造函数。判断是否为日期,数组的例子
查看>>
Filesystem Hierarchy Standard
查看>>
简单的计算几何
查看>>
在Windows2008r2 安装.net4.5
查看>>
小程序学习视频教程
查看>>
js 脚本学习 索引
查看>>
外部服务的隔离及降级
查看>>
从并发处理谈PHP进程间通信(二)System V IPC
查看>>
[LeetCode] Permutation Sequence, Solution
查看>>
[LeetCode]Binary Tree Postorder Traversal
查看>>
Linux防火墙(Iptables)的开启与关闭
查看>>
我与IBM敏捷培训中心的一次交流后的问答,关注的敏捷的可以看看交流.
查看>>
VM 使用问题 | 安装失败->>注册表
查看>>
一个实用的C#网页抓取类代码分享
查看>>
Git 码云操作
查看>>