1、xinetd是什么?
系统上的程序分为:独立守护进程和瞬时守护进程。xinetd就是用来管理瞬时守护进程。xinetd代理瞬时守护进程接受用户的请求,之后启动真正的进程进行响应。
例如:telnet服务就是瞬时守护进程,所以telnet受到xinetd进程的管理。平时telnet服务不启动,只有用户请求telnet服务的时候才会被xinetd启动并接受客户端请求。
所以我们经常看到的23号端口的telnet服务不是真正的telnet服务,只有你请求连接时才会被xinetd替换成真正的telnet服务。
2、了解的常识:
xinetd超级守护进程有两种配置文件:
全局配置文件:/etc/xinetd.conf ##这里的配置选项是全局的
局部的配置文件:/etc/xinetd.d/* ##这里的所有配置文件都会被包含到/etc/xinetd.conf里边。这里的每个文件都对应一个服务。(比如telnet服务对应的就是/etc/xinetd.d/telnet)。xinetd就是通过这些文件对他所代理的服务进行管控的。
注意修改完配置文件都要重启xinetd服务才会生效,所有被xinetd代理的服务都只需要重启xinetd即可
比如要重启telnet服务只需要: telnet 服务没安装? xinetd服务没安装? yum install telnet-server telnet -y 即可把他们都安装上。
service xinetd restart
chkconfig telnet on ##可以用命令:chconfig --list | grep telnet 查看下是不是已经启动了
3、访问控制:通过修改xinetd的配置文件,我们就可以控制它所代理的服务。
以telnet服务为例总结访问控制方法:其他的服务也一样(必须是xinetd能代理的服务)。
3.1service xinetd restart ##启动xinetd服务
3.2 chkconfig telnet on ##启动telnet服务。其实这个chkconfig 命令就只是修改了/etc/xinetd.d/telnet 文件里边的disable = no,之后重启了xinetd服务。
3.3允许某些ip或网段访问telnet
vim /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
only_from = 172.16.0.0/16 ##仅允许172.16.0.0网段的ip访问telnet服务(可以指定ip的)。
log_on_failure += USERID
}
3.4不允许某些ip或网段访问telnet
vim /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
no_access = 172.16.100.200 ##不允许172.16.100.200访问telnet服务(可以指定网段的)。
}
3.5允许用户,在某时间段访问telnet服务
vim /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
only_from = 172.16.0.0/16 ##仅允许172.16.0.0网段的ip访问telnet服务(可以指定ip的)。
access_time =10:00-14:00 ##允许用户在上午10点到下午2点之间访问telnet服务
}
3.6进让telnet服务监听在某个ip上(当服务器有多个ip时可以这样控制)
vim /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
only_from = 172.16.0.0/16 ##仅允许172.16.0.0网段的ip访问telnet服务(可以指定ip的)。
bind =172.16.100.7 ##telnet服务仅仅监听在172.16.100.7这个ip上
}
3.7控制客户端同一个ip最多建立几个链接
vim /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
only_from = 172.16.0.0/16 ##仅允许172.16.0.0网段的ip访问telnet服务(可以指定ip的)。
per_source = 10 ##表示同一个ip最多建立10个连接
log_on_failure += USERID}
3.8telnet一共可以和客户端建立多少连接
vim /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
only_from = 172.16.0.0/16 ##仅允许172.16.0.0网段的ip访问telnet服务(可以指定ip的)。
instances = 50 ##表示telnet服务最多建立50个连接
}
3.9如果某个服务启动的时候需要传递参数。可以用server_args = -d
3.10每秒允许10个客户端连接进来,如果超过了 10个每s 这个速率。就要临时禁用telnet20秒(不能登陆telnet)。
vim /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
only_from = 172.16.0.0/16 ##仅允许172.16.0.0网段的ip访问telnet服务(可以指定ip的)。
cps = 10 20 ##每秒链接进来的客户端不能超过10个,超过10的话就要禁用telnet服务20秒
}
3.11 日志记录功能:默认是记录到系统日志:/var/log/message。这里改下记录的位置
vim /etc/xinetd.d/telnet
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
only_from = 172.16.0.0/16 ##仅允许172.16.0.0网段的ip访问telnet服务(可以指定ip的)。
log_type = FILE /var/log/telnet.log
}