9.认识系统服务

时间:2022-08-24 16:06:21

/etc/hosts.deny

/etc/hosts.allow

/usr/sbin/tcpd            ----分析进入系统的TCP网络封包


一.daemon基本介绍

    1.daemon与sevice的区别【1-0】   

    2.daemon的分类

        按线程处理方式划分:

        a.stand alone:自行单独启动

        b.super daemon:油一只特殊的daemon管理【1-1】 

            .multi-threaded(多重线程)   

            .single-threaded(单线程)

        按工作形态(响应方式)分:

        a.signal-control

        b.interval-control   

    3.daemon的命名规则   

    4.服务与端口的对应

        # cat /etc/services    ----查看daemon对应的端口<daemon port> <port/封包协议> <该服务的说明>

        注意:尽量避免修改这个文件   

    5.daemon的启动脚本【1-2】与启动方式

        Stand alone启动方式

        a./etc/init.d/* status|stop|restart|restart|condreatart启动方式

        # /etc/init.d/syslog        ----不加参数会给出关于参数的提示

        # /etc/init.d/syslog status   ----查看syslog的启动状态

        # /etc/init.d/syslog reatart  ----重新读取配置文件

        b./sbin/service【1-3】

        # service crond restart  <==> # /etc/init.d/crond restart ----重新启动crond这支daemon

        # service --status-all         ----列出目前系统所有服务的运行状态

        

        利用Super daemon(xinetd本身是stand alone的启动方式)启动的方式

        (适合那些开放较多权限或本身不具备防火墙等管理机制的服务)

        # grep -i 'disable' /etc/xinetd.d/*        ----查看super daemon管理的程序是否启动(disable=yes代表取消)

        # vi /etc/xinetd.d/rsync        ----.编辑文件使rsync启动(改为disable=no)

        # /etc/init.d/xinetd restart      ----..重启super service

        # grep  'rsync' /etc/services        ----...观察服务使用的端口的

        # vim /etc/xintd.conf          ----super daemon的默认配置文件【1-4】

        # vim /etc/xintd.d        ----super daemon的服务参数档(上面的配置文件为默认值,这里为实际设置的位置)【1-5,6,...,13】

        

    6.通过server的管理使daemon对不同client拥有不同权限

        案例一:一个简单的rsync(提供同步文件夹服务)案例【1-14】

        # cat /etc/xinetd.d/rsync      ----查看一下原来的设置

        service rsync{

            disable = no      ----预设是关闭的,这里已经被打开了

            socket_type = stream        ----使用tcp封包协议

            wait = no        ----可以同时进行大量联机

            user = root        ----用root这个身份启动服务(rysnc的默认端口为873,root身份才能启动这种小于1024的端口)

            server = /usr/bin/rsync        ----就是这支程序启动服务

            server_args = --daemon        ----必选项

            log_on_failure +=USERID        ----登陆错误时额外记录用户ID

        }

        # vim /etc/xinetd.d/rsync        ----重新设置进行权限的控制

        #针对内部王网域进行限制

        service rsync{

            disable = no        

            bind = 127.0.0.1        ----服务绑定在这个接口上

            only_from = 127.0.0.1/8        ----只开放这个网域的来源

            no_access = 127.0.0.{100,200}        ----限制这两个不可登入

            instances =  UNLIMITED        ----取代/etc/xined.conf的设定值

            socket_type = stream        ----底下设定保留            wait = no        ----可以同时进行大量联机

            user = root  

            server = /usr/bin/rsync       

            server_args = --daemon       

            log_on_failure +=USERID        

        }

        # 再针对外部的联机     进行限制

        service rsync

        {

            disable = no

            bink = 192.168.0.100

            only_from = 140.166.0.0/16        ----

            only_from = .edu.tw        ----+=代表累加

            access_times = 01:00-9:00 20:00-23:00         ----两个时间段用空格隔开

            instances = 10        ----只有十条联机

            socket_type = stream        ----底下设定保留            wait = no        ----可以同时进行大量联机

            user = root  

            server = /usr/bin/rsync       

            server_args = --daemon       

            log_on_failure +=USERID

        }

        # netstat -tnlp | grep 873        ----配置完后看一下873端口的状态

        # /etc/init.d/xinetd restart        ----重启xinetd

        # netstat -tnlp | grep 873        ----再观察

二. 服务的防火墙管理 xinetd,TCP Wrappers

    1./etc/hosts.allow,/etc/hosts.deny的管理【1-15,16】

    注意:一个服务受xinetd管理或者支持TCP Wrappers就可以使用这两个配置文件

    范例一:测试一下sshd和httpd这两支程序是否支持TCP Wrapper套件

    # ldd $(which sshd httpd)    ----查看sshd和httpd支持的动态链接库,如果有libwrap.so说明支持TCP Wrapper(发现sshd有而httpd没有)

    范例二:只允许140.116.0.0/255.255.0.0与140.116.0.0/255.255.0.0这两个网域及203.71.38.123这个主机可以进入我们的rsync服务器,其它的IP全部挡掉

    # vim /etc/hosts.allow

    rsync:140.116.0.0/255.255.0.0

    rsync:140.116.0.0/255.255.0.0

    rsync:203.71.38.123

    rsync:LOCAL

    # vim /etc/host.deny

    rsync:ALL

    

    2.TCP Wrapper的特殊功能

    # rpm -q tcp_wrapper        ----查看是否安装了tcp_wrapper

    案例一:【1-17】

    # vim /etc/hosts.deny【1-18,19】

    raync:ALL:spawn (echo "security notice from host $(/bin/hotname)";\         ----spawn指令,在自己的屏幕上显示"security notice from 自己的主机名"

          echo;/usr/sbin/safe_finger @%h) | \        ----对方发起请求时追踪对方的主机名称并交给管道

          /bin/mail -s "%d-%h security" root&\        ----将管道的信息(请求连接的主机名信息)mail给root

          :twist(/bin/echo -e "\nWARNING connection not allowed.\n\n")        ----向对方屏幕发送警告信息,然后终止联机

三.系统开机启动服务设定

    1.观察系统启动的服务

    # netstat -tulp   ----找出目前系统启动的网络服务有哪些

    # netstat -lnp        ----找出所有有监听网络的服务(包括socket状态)

    # netstat --status-all        ----观察所有的服务状态

    2.设定开机启动的方法

    系统开机流程【1-20】

      chkconfig    管理系统服务默认开机启动与否【1-21】

    # chkconfig --list | more        ----列出目前系统上所有被chkconfig管理的服务

    # chkconfig --list | grep '3:on'        ----显示出目前runlevel 3开启的服务

    # chkconfig --level 345 atd on        ----让atd这个服务在3,4,5runlevel开启

    案例一:先观察httpd这个服务是否启动,然后设定预设开机启动(并不会立即启动哦)

    # /etc/init.d/httpd status        ----观察httpd这个服务的运行状态 

    # chkconfig --list | grep httpd        ----观察是否预设开机启动

    # chkcnffig httpd on;chkconfig --list | grep httpd    ----设定开机启动

    # /etc/init.d/httpd status            ----再观察一次还是没有启动

    案例二:查看rsync是否启动,是则将其关闭

    # /etc/init.d/rsync status        ----发现不行,因为rsync不是stand alone的启动方式

    # netstat -tlnp | grep rsync        ----因为rsync是一个网络服务,因此可以这样看

    # chkconfig --list | grep rsync        ----查看是否是开机预设启动的

    # chkconfig rsync off;chkconfig --list | grep rsync        ----设置开机关闭

    # /etc/init.d/xinetd restart;netstat -tlup| grep rsync        ----重启xinetd对super daemon管理的服务相当于重启计算机呢

      chkconfig    设定自定义系统服务【1-24】

    案例一:【1-25】

    # vim /etc/init.d/mySystemService

    #!/bin/bash

    #chkconfig: 35 80 70    -----【1-26】

    #description:用来练习的一个简单自定义系统服务脚本

    echo "nothing"

    # chkconfig --list mySystemService     ----这个时候还没有加入ckconfig管理

    # chkconfig --add mySystemService;chkconfig --list mySystemService            ----此时已经加入chkconfig管理

    # chkconfig --del mySystemService        ----删除对这个服务自定义服务的管理

    # rm /etc/init.d/mySystemService        ----删除那个脚本

      ntsysv    类图型接口管理模式(redhat系列发行版特有)【1-22,23】

四.centos5.x预设启动的服务列表【1-27...31】

五.重点回顾【1-32】 

六.习题

    案例:【1-34】    

    

    # rpm -q telnet-server        ----查看telnet服务程序是否启动

    # yum install telnet-server        ----如果没安装的话就安装

    # chkconfig --list telnet        ----查看开机启动情况(发现时super daemon启动方式)

    # ll /etc/xinetd.d/telnet        ----如果有有这个文件说明真的是super daemon管理的

    # grep '^telnet' /etc/services        ----开头是telnet的那些行(可以看到端口信息)

    # chkconfig telnet on;chkconfig --list telnet        ----设置telnet预设开机启动

    # /etc/init.d/xinetd restart        ----这样telnet就启动了呢

    # netstat -tlnp| grep xinetd        ----看看是不是启动的23号端口

    # grep server /etc/xinetd.d/telnet        ----这个文件中记录着telnet的主程序绝对路径(server=/usr/sbin/in.telnetd)

    # vim /etc/hosts.allow        ----设置允许的网域

    in.telnetd:.edu.tw        

    # vim /etc/hosts.deny        ----设置阻止的网域

    in.telnetd:ALL

    简答题【1-33】