认识系统服务(daemon)

2019-01-22  本文已影响0人  epiiplus1equal0

系统为了某些功能必须提供一些服务, 这个服务就叫做service

service的提供总需要进程的运行, 实现这个service的程序就叫做daemon(后台程序)

1. daemon的主要分类

2. 服务与端口的对应

当客户端连接我们的主机时, 我们主机是如何分辨不同服务的请求呢?

答: 通过端口号

可以修改/etc/services来修改一个服务的端口号, 不过很可能造成一些协议的错误, 除非你要架设一个地下网站

3. daemon的启动脚本与启动方式

3.1 stand alone的/etc/init.d/*启动

service [service name] {status|start|stop|restart|reload|...}
service --status-all #将所有stand alone的状态列出来

3.2 super daemon及其受管服务启动方式

super daemon也是一个stand alone, 但super daemon所管理的服务如何得知呢?

grep -i "disable" /etc/xinetd.d/*

先修改/etc/xinetd.d/下的配置文件, 在重启xinetd就可以启动super daemon管理的服务

4. super daemon的配置文件

默认的配置文件: xinetd.conf

若服务的设定值没有指定, 则以xinetd.conf中的默认值为主

assign_op为参数的设置方式:

arrribute(功能) 说明与范例
服务的识别, 启动与程序
disable (启动与否) [yes|no] , 默认值为disable=yes
id (服务识别) [服务名称]
server (程序文件名) [program的完整文件名]<br />server=/usr/bin/rsync
server_args (程序参数) [程序的相关设置参数]
attribute (功能) 说明与范例
连接方式与连接数据包协议
socket_type (数据包类型) [stream|dgram|raw]<br />stream(tcp), dgram(udp), raw(服务与ip直接交互)
wair (连接机制) [yes(single)|no(multi)], 默认wait=no
instances (最大连接数) [数字或UNLIMITED], 此服务可接受的最大连接数
per_source (单用户来源) [数字或UNLIMITED] ,控制每一来源ip仅有一个最大的同时连接数
cps (新连接限制) [两个数字], 第一个数字为一秒内能够接受的最多新连接请求, <br />第二个数字为若超过第一个数字则关闭该服务的秒数
attribute (功能) 说明与范例
高级设置选项: 环境, 网络端口与连接机制等
env (额外变量设置) [变量名称=变量内容]
port (非正规端口号) [一组数字 (小于65534)]
redirect (服务转址) [IP port]
includedir (调用外部设置) [目录名称]
attribute (功能) 说明与范例
安全管控选项
bind (服务接口锁定) [IP]
only_from (防火墙机制) [0.0.0.0, 192.168.1.0/24, hostname, domainname]
no_access (防火墙机制) [0.0.0.0, 192.168.1.0/24, hostname, domainname]
access_times (时间控制) [00:00112:00, HH:MM-HH:MM]
umask [000, 777, 022], 设置用户新建目录或文件时的属性

5. 服务的防火墙管理: xinetd, TCP wrappers

5.1 /etc/hosts.{allow, deny}管理

任何以xinetd管理的服务都可以通过以上两个文件来设置防火墙

其实/etc/hosts.{allow, deny}都是/usr/sbin/tcpd (用来分析进入系统的TCP网络数据包的一个软件)的配置文件 , 通过分析TCP数据包并搭配这两个文件的规则比较, 就可以决定该连接是否能进入我们的主机

所以, 我们要通过TCP wrappers进行管控

#如何得知一个服务是否支持TCP wrappers呢?
ldd $(which command) | grep "libwrap.so"    
#ldd (library dependency discovery): 查询某个程序的动态函数库支持

#配置文件语法:
service_name    :    [IP|domain|hostname]    :    action
第一, 二个字段的特殊参数:
ALL: 代表全部的program_name或IP都接受的意思
LOCAL: 代表本机
KONWN: 代表可解析的IP或domain或服务
UNKONWN: 代表未知的IP或domain或服务

#实例:
1. 只允许140.116.0.0/255.255.0.0与203.71.39.0/255.255.255.0这两个域, 
及203.71.38.123这个主机可以进入我们的rsync服务器
2. 此外, 其他IP全部阻挡
vi /etc/hosts.allow
rsync    :    140.116.0.0/255.255.0.0
rsync    :    203.71.39.0/255.255.255.0
rsync    :    203.71.38.123
rsync    :    LOCAL
vi /etc/hosts.deny
rsync    :    ALL

6. TCP wrappers的特殊功能

#确定有没有安装TCP wrappers
rpm -q tcp_wrappers

详见<鸟哥的Linux私房菜>P565

7. 系统开启的服务

7.1 查看系统启动的服务

netstat -tulnp #查看系统目前启动的网络服务
netstat -lnp #查看所有有监听网络的服务 (包括socket状态)
service --status-all #查看所有服务状态

7.2 设置开机后立即启动服务的方法

在启动Linux系统时, 可以进入不同的模式, 这模式我们称之为执行等级(run level), 不同的执行等级有不同的功能与服务, run level 3 : 纯文本界面, run level 5 : 图形界面

chkconfig #管理系统服务默认开机与否
chkconfig --list [service_name]
chkconfig [--level [0123456]] [service_name] [on|off]
chkconfig [--add|--del] [service_name]
#--add: 增加一个服务名称给chkconfig来管理, 需要将该服务加入/etc/init.d/中
    #实例: 在/etc/init.d/内新建一个myalex的文件, 该文件必须是这样的:
    vi /etc/init.d/myalex
    #!/bin/bash
    # chkconfig: 35 80 70
    # description: 范例
    echo "Nothing"
    # 比较重要的是第二行, 语法是: chkconfig: [runlevels] [启动顺序] [停止顺序]
    # 启动顺序(start number)与结束顺序(stop number)则是在/etc/rc.d/rc[35].d内新建以
    # S80myalex及K70myalex为文件名的设置方式
    chkconfig --list myalex
    chkconfig --add myalex ; chkconfig --list myalex
    chkconfig --del myalex ; rm /etc/init.d/myalex

ntsysv #类图形界面管理模式, 红帽系统特有
ntsysv [--level [0123456]]
      本文基于<鸟哥的Linux私房菜>, 归纳整理, 在此致谢鸟哥.
上一篇 下一篇

猜你喜欢

热点阅读