瞬时守护进程的访问控制

对瞬时守护进程的访问控制

我们知道瞬时守护进程是由超级守护进程xinetd代为管理的,由于超级守护进程接受TCP Wrappers的访问控制,因此瞬时守护进程也接受TCP Wrappers的控制管理。

虽然TCP  Wrappers可以对瞬时守护进程做访问限制,但是他只能控制哪些用户可以访问哪些服务,不能精确的控制每一个服务的使用。比如,控制telnet服务的最大同时连接数、控制每一客户端访问该服务的最大连接数等等。TCP Wrappers是无法做到的。

要想有效的管理的这些瞬时守护进程,需要编辑超级守护进程的配置文件。

超级守护进程的文件为/etc/xinetd.conf和/etc/xinetd.d/*

其中/etc/xinetd.conf为主配置文件,或者叫做默认配置文件

/etc/xinetd.conf的语法格式如下:

#vim  /etc/xinetd.conf

defaults

{

aryuement = value

includedir  /etc/xinetd.d/

在主配置文件中定义的参数具有全局性,也就是说他们在任何一个由xinetd代为管理的瞬时守护进程的配置文件里都有效。

常见的参数有:

enable = {yes|no}     表示是否启用该服务,yes为启用该服务

disabled = {yes|no}   表示是否启用该服务,no表示启用该服务

log_type = SYSLOG daemon info  表示日志类型为SYSLIG 日志级别为info

还有一个日志类型为FILE 后面接记录日志文件

例如:log_type = FILE /var/log/telnet.log

log_on_failure = HOST  表示访问失败时,将访问主机信息记录下来

log_on_success = PID HOST DURATION EXIT

#表示访问成功时,将服务的pid、访问主机、以及在此会话期间的相关信息和退出时的信息#  都记录下来

cps = num1  num2  表示每一秒的最大连接数为num1,如果超过num1就暂停num2秒

instances = num1    表示某个服务的最大连接数

per_source = num1   表示每个客户端允许的最大连接数

only_from = {IP|NETWORK/MASK|HOSTNAME|DOMAIN}

#表示只有指定的主机才可以访问该服务

no_access = {IP|NETWORK/MASK|HOSTNAME|DOMAIN}

#表示不允许访问某服务的主机。

bind = IP

#默认情况下,如果某个服务有多个ip,那么这些ip默认都处于监听状态。bind = IP表示只

#  允许哪一个ip处于监听状态。或者理解为只允许哪个ip可以使用此服务

interface = IP 和bind的意思一样。

access_tiomes = HH:MM-HH:MM

#表示只允许指定的之间段内访问某服务

port = PORT 指定某服务的端口号,如果不使用默认端口,则可以使用此选项

wait = {no|yes}

#表示如果同时有多个请求,该服务是同时进行响应,还是一个一个的响应,其他请求处于

#  等待状态。no表示为同时启动多个进程或线程进行响应。默认为no

socket_type = {stream|dgram|raw}

#stream表示为tcp报文,dgram表示为udp报文,raw表示使用rpc协议进行连接

user = root 表示该服务以哪个用户身份来运行

group = root 表示以哪个组的身份来运行和user的意思大致相同

server = 二进制程序  表示某个服务的二进制程序

#例如:server = /usr/bin/rsync

server_args = ARGS  表示给二进制程序传递的参数

#例如:/usr/bin/rsync  --daemon

umask = UMASK 表示设定用户建立目录和文件时的属性

banner = /path/to/file  登入成功后,显示该文件的内容

以上这些参数如果定义在主配置文件中,则全局生效。当然也可以定义在各个服务的配置文件中。这些瞬时守护进程的配置文件在/etc/xinetd.d/目录下。如果这些参数定义在各个服务的配置文件中,则只对该服务生效。这些瞬时守护进程的配置文件语法格式如下:

service  <service_name>

{

<attribute> <assign_op> <value> <value> ...

...

}

其中<service_name>和配置文件名称相同

<attribute>表示参数选项,就是上面的这些参数

<assign_op>表示操作符,例如”=”

<value>表示为某个参数赋值

实例:设定本地的rsync服务(非独立守护进程),满足如下需求:

1、  仅监听在本地192.168.0.103的地址上提供服务

2、  仅允许192.168.0.0/24网络内的主机访问,但不允许192.168.0.100访问

3、  仅允许运行最多3个实例,而且每个ip最多只允许发起2个连接请求

解决办法:

#vim  /etc/xinetd.d/rsync

service rsync

{

disable = no

socket_type     = stream

wait            = no

user            = root

server          = /usr/bin/rsync

server_args     = --daemon

log_on_failure  += USERID

bind            = 192.168.0.103

only_from       = 192.168.0.0/24

no_access       = 192.168.0.100

instances       = 3

per_source      = 2

}

启动瞬时守护进程除了修改参数disable = no或enable = yes之外,还可以使用

chkconfig 服务名称 on来启动服务

使用chkconfig命令修改的其实就是disable或enables这个参数的值。

时间: 2024-08-05 17:13:52

瞬时守护进程的访问控制的相关文章

Python setdaemon守护进程

setdaemon守护进程 #_*_coding:utf-8_*_ __author__ = 'gaogd' import time import threading ''' 守护进程,如果主线程down了,子线程也就没有了. 下面先通过主进程生成main主线程,之后main主线程再生成10个子线程. ''' ''' def run(num):     if not num == 5:         time.sleep(1)     print 'Hi, I am thread %s..la

转:linux守护进程的启动方法

Linux 守护进程的启动方法 作者: 阮一峰 日期: 2016年2月28日 "守护进程"(daemon)就是一直在后台运行的进程(daemon). 本文介绍如何将一个 Web 应用,启动为守护进程. 一.问题的由来 Web应用写好后,下一件事就是启动,让它一直在后台运行. 这并不容易.举例来说,下面是一个最简单的Node应用server.js,只有6行. var http = require('http'); http.createServer(function(req, res)

Python实例浅谈之五Python守护进程和脚本单例运行

一.简介 守护进程最重要的特性是后台运行:它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符.控制终端.会话和进程组.工作目录以及文件创建掩码等:它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业规划进程crond启动,还可以由用户终端(通常是shell)执行. Python有时需要保证只运行一个脚本实例,以避免数据的冲突. 二.Python守护进程 1.函数实现 #!/usr/bin/env python #coding: utf-8

#python#守护进程的实现

找了整天,终于找到一个可以用的代码 #! /usr/bin/env python2.7 #encoding:utf-8 #@description:一个python守护进程的例子 #@tags:python,daemon import sys import os import time import atexit from signal import SIGTERM      class Daemon:   """   A generic daemon class.     

linux守护进程

#include <iostream>#include <unistd.h>//#include "curl/curl.h"#include "app_curl.h"#include "youtube_package.h"#include "CAutoMail.h"#include <fcntl.h>#include <signal.h>#include <unistd.h

C#开发Linux守护进程

C#开发Linux守护进程 Linux守护进程是Linux的后台服务进程,相当于Windows服务,对于为Linux开发服务程序的朋友来说,Linux守护进程相关技术是必不可少的,因为这个技术不仅仅是为了开发守护进程,还可以拓展到多进程,父子进程文件描述符共享,父子进程通讯.控制等方面,是实现Linux大型服务的基础技术之一. 去年我也曾写了一篇关于守护进程的帖子,名字叫<.NET跨平台实践:用C#开发Linux守护进程>,这篇文章的的确确实现了一个Daemon,不过,它有一个弱点,不能运行多

守护进程的创建过程

编写守护进程需要5步 1 创建子进程,父进程结束(让这个进程由init进程托管) pid = fork(); if(pid > 0) //父进程 { exit(0); }2 在子进程中创建新会话(此进程就可以脱离原来进程,脱离控制终端,脱离原来进程组) setsid(); //最主要是脱离控制终端 3 改变当前目录(每一个进程都有一个当前目录), 不是必须的 chdir("/tmp"); 4 重新设置文件权限掩码(不是必须的) umask(0); 5 关闭打开的文件描述符(如果父

Linux守护进程实现程序只运行一次

1.守护进程 守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件. 2.让程序只运行一次 如果让程序只运行一次,有很多方法,此处的一种方法是创建一个名字古怪的文件(保证不跟系统文件或其他文件重名),判断文件存在则让程序不再运行且提示程序正在运行,如果不存在则可以运行. 3.测试代码 此代码额外添加了系统LOG,记录操作的信息. 1 #include <stdio.h> 2 #include <unistd.h> 3

Linux系统开发7 进程关系,守护进程

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲> Linux系统开发7  进程关系守护进程 终端 网络终端 Linux PCB结构体信息 进程组 修改子进程.父进程的组ID 会话组 设置一个会话脱离控制终端 生成一个新的会话 守护进程 守护进程模板 获取当前系统时间  终端 在UNIX系统中用户通过终端登录系统后得到一个Shell进程这个终端成为Shell进 程的控制终端Controlling Terminal在讲进程时讲过控制终端是保存在PCB