init系统服务管理&&xinetd&&tcp_wrapper

System Resources Managed by init
使用init管理系统资源

init
    需要结合/etc/inittab配置文件来完成
        其中指定init进程会加载一个脚本--> /etc/rc.d/rc.sysinit (系统初始化)

例如:实现让用户可以通过串行口连接
co:23:respawn:/sbin/agetty -f /etc/issue.serial 19200 ttyS1
标识符:运行级别2和3:指定动作(重新发起连接):启动终端命令  读取欢迎语 连接速率 从哪个控制台启动 建议这种串行控制台不要启动过多
#man inittab

实现系统初始化管理:
系统初始化 inittab将系统启动级别告知rc.sysinit并启动之 rc.sysinit会进入到执行级别下 如果要启动某种级别 就执行此级别下所有以S开头的脚本 如果要退出这种级别 就执行以K开头的脚本

    UNIX
    ->System v -->HPunix
    ->BSD -->sun
    系统启动脚本 两种:
        -->System V 风格 繁多,功能多,易用,用链接管理(Redhat)
        -->BSD 风格 简洁 不易用 关闭服务kill
System 风格:
/etc/init.d    --> /etc/rc.d/init.d/ 可以接受多个参数 启动数个进程
    链接到/etc/rc.d/rcN (N为启动级别)
BSD 风格:
直接就是个脚本 并且只能用来启动服务 而且几乎不接受什么参数 需要停止服务时 只能kill

redhat使用chkconfig命令管理这些system风格的启动脚本 并自动为它们在相应级别加入链接
#chkconfig --list servicename
#chkconfig --level [0-6] servicename on|off 如果不加level 默认为3 5
#chkconfig --add mysqld 添加新脚本(必须是system v风格的)
#chkconfig --del mysqld 移除某个脚本
服务的启动|停止|状态
#service startup_script start|stop|status    redhat风格管理方式
#/etc/init.d/startup_scripts start|stop|status     通用方式管理服务

chkconfig /etc/init.d/
/etc/sysconfig/下 有对应于每个服务的同名的配置文件 此配置文件可以在启动某个服务时 向其传递一些额外的参数 来决定其运行状态的 服务的额外配置文件 功能扩展 细化
例如:    dhcpd文件 -->可以定义dhcp服务只监听某个网卡
    firstboot -->RUN_FIRSTBOOT=NO 是否在开机时提示用户重新配置系统参数
    desktop    配置桌面环境
    vncservers

独立守护进程 (随时在内存中运行 等待访问) (响应速度快)
    -->超级守护进程xinetd(属于独立守护进程)
        -->非独立守护进程 (由超级守护进程管理,当需要被访问时,由超级守护进程唤醒,加载入内存,接受访问请求) (节省资源)

xinetd的配置文件 和配置文件格式:
/etc/xinetd.conf 超级守护进程自己的配置文件 定义了每个服务的默认参数
    -->includedir /etc/xinetd.d 将这个目录下的文件包含进来
/etc/xinetd.d/定义了非独立守护进程的启动方式等信息 服务的详细参数 控制信息

xinetd.conf 和xinetd.d/目录下 配置文件的格式解释:
接受=(直接等于) +=(在默认选项中增加) -=(在默认选项中去除) 方式的赋值
默认选项都在xinetd.conf里
id
    用来唯一的标识一个服务
type   
    服务类型 rpc|internal|TCPNUX|TCPNUXPLUS|UNLISTED(不包含以上几个的)
flags   
    标志 nodelay(无延迟,立即将用户请求转交给服务,不参与队列)|ipv4|
disable   
    接受yes|no yes表示禁用 no表示启用 disable优先级高于enabled
enabled
    接受yes|no 与disable相反
instances
    实例 一个启动了的进程占用了套接字并可以提供服务 叫做一个实例
    例如一个系统中运行了两个SqlServer 相互独立 就叫做两个实例
    在此决定了某个服务允许的最大访问量 即并发连接数 如果value为UNLIMITED
    则为无限制
per_source
    允许一个客户端能够同时发起多少个连接
v6only
    是否只接受ipv6 一般为no
log_type
    SYSLOG 产生的任何信息发送给syslog 由syslog记录日志
        daemon,auth,authpriv等等
            emerg,alert,crit,err,warning,notice,info,debug八个级别
    FILE 指定相应文件
        日志文件大小的 (软限制) (硬限制)
        如 =FILE /var/log/telnet 生效前要保证文件存在
log_on_failure
    当服务启动失败的时候记录哪些信息
    HOST 远程主机地址
    USERID
    ATTEMPT 登录尝试所有的信息
log_on_success
    登录成功时 记录哪些信息
    PID server process id 进程ID
    HOST 从哪里登录
    USERID
    EXIT 如何退出的
    DURATION 整个服务期间持续记录 登录持续时间
    TRAFFIC 记录流量
cps
    限制入站链接的速率 接受两个参数 (限制每秒最大处理连接数) (如果超过此限制服务将暂停多少时间)
    主要做ddos攻击限制        50                10
banner
    欢迎信息 相当于/etc/issue的作用
    接受一个文件路径作为值 当用户访问此服务时 显示 定义的文件中的内容
banner_success
banner_fail
socket_type
    套接字类型 stream(tcp的套接字) |dgram (udp)|raw(绕过tcp直接到第三次)
wait   
    如果服务为单线程/多线程的 由xinetd管理还是由自己管理 yes服务为单线程
    xinetd将启动服务并代替管理此进程
    no多线程 xinetd继续保持为之处理每一个连接请求
user   
    指定用谁的身份运行此进程 linux上小于1023的端口只有root才能访问
log_on_failure
    关于日志
only_from
    基于主机的访问控制 仅允许
    可接受类似 192.168.0.0/24 或者192.168.1.0或者192.168.0.1的地址方式
    网络名(如NIS域) 或者hostname或者domain   
no_access
    基于主机的访问控制 禁止访问
    接受值同上 如果两者同时定义 将结合使用 如果都没定义 则服务开放
    如only_from=192.168.0.0/24
        no_access=192.168.0.1 只接受noly_from的内容但除了192.168.0.1之外
per_source
    接受一个int整数值 代表允许同一个地址同时使用服务的个数
access_times
    允许连接服务的时间段 接受如12:00-18:00的值
bind
    如果主机上有多块网卡 多个IP 则使用bind绑定网卡或者IP地址
interface
    synonym for bind 与bind相同

#ldd 显示二进制文件运行时对库文件的依赖关系
#which xinetd
#ldd `which xinetd` 显示xinetd运行时依赖的库

tcp_wrapper (tcp包装器,在tcp层对网络服务的控制管理)(可以基于主机实现安全访问控制功能)
    tcp_wrapper是一个提供过滤功能的库文件
    2个配置文件:    /etc/hosts.allow    /etc/hosts.deny
    两个文件的优先级取决于检查顺序 如果所有条目都没有匹配 默认允许

    默认检查顺序: 先检查allow如果匹配则允许 就不再检查deny文件
        如果allow没有定义 则检查deny文件如果匹配则deny 类似防火墙acl
    配置文件中的条目设置格式:
    daemon_list:client_list [:options]
    daemon1,daemon2:client1,client2 同时定义多个进程
    daemon_list@host:client    定义只控制哪个IP地址

    如telnet 进程名为in.telnetd
    只允许192.168.1.0网段访问 则
        host.allow+>in.telnetd: 192.168.1.0/255.255.255.0
        host.deny+>in.telnetd: ALL
        可接受多种方式:如IP(192.168.0.1或者10.0.0.) 主机名域名(www.redhat.com,.example.com)
        需要服务器的反向解析支持 不建议使用 bynetmask(192.168.0.0/255.255.255.0)不支持/24无类            域间路由这种写法 不带后缀
    tcp_wrapper的宏定义:
        LOCAL代表本地主机
        ALL代表所有主机
        UNKNOWN
        KNOWN
        PARANOID无法解析或者正反向解析    不匹配的
        EXCEPT (EXCEPT可以被嵌套)
    例如:    host.allow+>sshd: 192.168.0.    EXCEPT 192.168.0.253
        host.deny+>sshd: ALL
    [:options]
        %a|c|d|h|n|p|s|u
        %%
        例如:
    host.allow+>in.telnetd: 192.168.0.0/255.255.255.0 : spawn echo "`date` %u from %h attempt %d@%H" | mail -s warning root
    host.allow+>in.telnetd: 192.168.0.0/255.255.255.0 : spawn echo "`date` %u from %h attempt %d@%H" >> /var/log/telnet2.log  (telnet2.log这个文件需要首先创建的)
    也可以将in.telnetd换成sshd 则可以实现对ssh操作的访问控制

查看某个服务是否支持tcp_wrappers控制:
#ldd `which xinetd`    如果某个服务链接到tcp_wrappers库文件 则表示它接受tcp_wrappers的管理
    例如:
    [root@station179 xinetd.d]# ldd `which xinetd`
        linux-gate.so.1 =>  (0x00760000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00679000)
        libwrap.so.0 => /lib/libwrap.so.0 (0x00abc000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00110000)
        libm.so.6 => /lib/libm.so.6 (0x0064a000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x00e9e000)
        libc.so.6 => /lib/libc.so.6 (0x00202000)
        libdl.so.2 => /lib/libdl.so.2 (0x00c65000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x00127000)
        /lib/ld-linux.so.2 (0x001e6000)

你可能感兴趣的:(tcp,xinetd,wrapper,init,amp)