ITPub博客

首页 > > > linux服务管理-非独立服务

linux服务管理-非独立服务

作者:longmanma 时间:2019-12-09 10:19:16 0 删除 编辑

 非独立服务

Xinetd 托管服务。又名:超级守护进程,可以把一些小服务放到xinetd里进行托管。拖管后的好处就是可以使用xinetd强大的参数来控制这些服务,并且增强安全性。(比如一个小服务没有一些控制功能,但支持xinetd拖管,你就可以拖管并使用xinetd的参数来控制它)。

Xinetd提供类似于inetd + TCP Wrappers的功能,但是更加强大和安全。后面xinetd已经取代了inetd,并且提供了访问控制、加强的日志和资源管理功能。

TCP Wrappers是一个应用层的访问控制程序,其原理是在服务器向外提供的TCP服务上包裹一层安全检测机制。外来的连接请求首先要通过这层安全检测,获得认证之后才能被系统服务接收。TCP Wrappers的功能有两种实现方式:一种是由tcpd守护进程实现的,常被用于inetd + TCP Wrappers的系统中(如FreeBSD等);另一种是通过每种服务程序调用libwrap.so链接库实现的,即libwrap.so库支持的网络服务程序都能使用TCP Wrappers来实现访问控制,常用于xinetd + TCP Wrappers的系统中(如CentOS等)。

非独立服务原理图

超级守护进程:银行里还有一种窗口,提供综合服务,像汇款,转账,提款等业务;这种窗口附近也始终坐着一个人(xinet),她可能不提供具体的服务,提供具体服务的人在里面闲着聊天啊,喝茶啊,但是当有人来汇款时他会大声喊一句,小王,有人汇款啦,然后里面管汇款的小王会立马跑过来帮忙办完汇款业务。其他的人继续聊天,喝茶。这些负责具体业务的人我们就称之为超级守护进程。当然可能汇款人会有一些规则,可能不能往北京汇款,他就会提早告诉xinet,所以如果有人来汇款想汇往北京的话,管理员就直接告诉他这个我们这里办不到的,于是就根本不会去喊汇款员了,相当于提供了一层管理机制。

xinetd服务的主配置文件: /etc/xinetd.conf --保持默认即可

用于存放被托管的服务的目录:/etc/xinetd.d/

xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。它能提供以下特色:

* 支持对tcp、udp、RPC服务(但是当前对RPC的支持不够稳定)

* 基于时间段的访问控制

* 功能完备的log功能,即可以记录连接成功也可以记录连接失败的行为

* 能有效的防止DoS攻击(Denial of Services)

* 能限制同时运行的同一类型的服务器数目

* 能限制启动的所有服务器数目

* 能限制log文件大小

* 将某个服务绑定在特定的系统接口上,从而能实现只允许私有网络访问某项服务

* 能实现作为其他系统的代理。如果和ip伪装结合可以实现对内部私有网络的访问

它最大的缺点是对RPC支持的不稳定性,但是可以启动portmap,与xinetd共存来解决这个问题。

原则上任何系统服务都可以使用xinetd,然 而最适合的应该是那些常用的网络服务,同时,这个服务的请求数目和频繁程度不会太高。像DNS和Apache就不适合采用这种方式,而像FTP、 Telnet、SSH等就适合使用xinetd模式,系统默认使用xinetd的服务可以分为如下几类。

① 标准Internet服务:telnet、ftp。

② 信息服务:finger、netstat、systat。

③ 邮件服务:imap、imaps、pop2、pop3、pops。

④ RPC服务:rquotad、rstatd、rusersd、sprayd、walld。

⑤ BSD服务:comsat、exec、login、ntalk、shell、talk。

⑥ 内部服务:chargen、daytime、echo、servers、services、time。

⑦ 安全服务:irc。

⑧ 其他服务:name、tftp、uucp。

部署一个非独立服务 Telnet

#yum -y install telnet-server telnet xinetd

#cat /etc/xinetd.d/telnet

service telnet

{

flags = REUSE

socket_type = stream

wait = no

user = root

server =/usr/sbin/in.telnetd

log_on_failure += USERID

disable = no

}

================

#可以设置为yes或no, 设置为yes将禁用一个服务,详见flags的disable标 签

disable = no

#指定 失败时登记的信息。总是登记表明错误性质的消息,默认时不登记任何信息。该属性支持所有操作符。USERID: 通过RFC1413调用捕获客户机用户的UID。只可用于多 线程的流服务。

log_on_failure += USERID

#使用的TCP/IP socket类型,值可能为stream(TCP),dgram(UDP),raw和seqpacket(可 靠的有序数据包)

socket_type = stream

#指定 传送给该进程的参数,但是不包括服务程序名

server_args = --daemon

#用来 设定连接速率。它需要两个参数,第一个参数表示每秒可以处理的连接数,如果超过了这个连接数时,之后进入的 连接将被暂时停止处理;第二个参数表示停止处理多少秒后,继续处理先前暂停处理的连接

cps = 25 30

#指定该服务使用的协议,其值必须是在/etc/protocols中 定义的。如果不指定,使用该项服务的默认协议

protocol = tcp

#这个属性 有两个可能的值。如果是yes,那么xinetd会启动对方 请求的进程,并停止处理该项服务的其他请求直到该进程终止,适合于单线程服务;如果是no,那xinetd会 为每个请求启动的一个进程,而不管先前启动的进程的状态,适合于多线程服务

wait = no

#设置服务进程的UID。 若xinetd的有效UID不是0, 该属性无效

user = root

#要激 活的进程,必须指定完整的路径

server = /usr/sbin/sshd

#指定 传送给该进程的参数,但是不包括服务程序名

server_args = -i

#用空 格分开的允许访问服务的客户机列表。如果不为该属性指定一个值,就拒绝任何人访问这项服务。该属性支持所有操作符。

only_from = 192.168.1.0/24

no_access = 192.168.1.20 192.168.1.200

# 最大连接数为3

instances = 3

# 每个源IP只能有1个连接

per_source = 1

# 只能9:00到18:00才能ssh连接

access_times = 9:00-18:00

# 指定日志记录到/var/log/xinetd_ssh.log里

log_type = file /var/log/xinetd_ssh.log # 指定日志记录到/var/log/xinetd_ssh.log里

#服务端口

port = 7722

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2730/viewspace-3126995/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-12-18

  • 博文量
    492
  • 访问量
    11987