tcp_wrapper:简单的基于主机的访问控制工具

一、常用的主机访问控制工具

独立(stand alone)守护进程(httpd,vsftpd)、瞬时(transient)守护进程(rsync,tftp,telnet), 这两类守护进程都支持基于iptables进行控制。哪一端口运行客户端访问,哪一端口不允许客户端访问,基于主机做防火墙时,都能进行控制。

做主机防火墙时,有些瞬时守护进程,甚至是某些独立独立守护进程,还能够接受另一种方式,tcp_wrapper,来控制。

在众多的基于主机的安全访问控制中,tcp-wrapper是简单而易于配置的一种。

在linux下能实现基于主机访问控制的常用工具有三个:iptables、tcp_wrapper、xinetd(超级守护进程)。

二、tcp_wrapper简介

显而易见,只能控制tcp协议下的软件。

一般翻译为tcp包装器,能够实现监听在某一tcp服务上,对于进出某本主机区访问某一套接字的应用做检查,而且能够实现所谓授权访问。

简单来说,tcpwrapper本身是一个守护进程,工作于tcp协议上。iptables工作于内核的tcp/ip协议栈上,而tcp_wrapper工作于内核的tcp/ip协议栈的tcp协议上,而且是在tcp的入口处启动一个进程,监视每一个tcp服务的相关请求,同时把这个报文本身跟tcp_wrapper的配置文件中的放行规则或拒绝规则中的规则进行对比。若果一旦匹配,则给予放行或拒绝访问。

工作进程为:tcpd

工作在tcp包文所要经过的位置上,有且只有一个位置。工作于tcp协议层,比工作在网络层的iptables更高一层,因此可以和iptables结合使用。但tcp_wrapper的控制完成之后,iptables就无需控制了,同理,iptables控制完成之后,tcp_wrapper也就无需控制了。二者可以有一个能完成控制就可以了。

iptables既然能完成工作,为什么还需要tcp_wrapper呢?因为tcp_wrapper的配置非常简单。

配置文件:/etc/hosts.allow,/etc/hosts.deny

但是并非所有服务都能接受tcp_wrapper的控制,事实上,tcp_wrapper与其说是一个服务,不如说是一个库更合适。因为所有的守护进程,都是工作在用户空间的,所以与其说tcp_wrapper是一个守护进程,不如说是一个库更合适。

所有的服务都能接受iptables控制,但并非所有都接受tcp_wrapper控制。只有用户在开发某个程序时,如果链接到这个库上,或者说依赖于这个库,就意味着他他是接受tcp_wrapper控制的。

三、使用tcp_wrapper控制

a).只需将受控制程序名写入配置文件即可实现控制:

允许访问:/etc/hosts.allow

拒绝访问:/etc/hosts.deny

b).控制原理

程序链接的库文件,会自动在用户访问服务时,基于tcpd检测

/etc/hosts.allow、/etc/hosts.deny两个配置文件,并判断某一主机是否能够访问服务。

c).匹配机制

1.先检查/etc/hosts.allow,如果被允许,则直接放行;

2.如果/etc/hosts.allow没有匹配项,则检查/etc/hosts.deny;如果有匹配项则禁止访问;

3.如果均无匹配,则默认放行。

d).配置文件语法格式

daemo_list:client_list [:options]
daemon_list:
          一定是应用程序名,不是进程名;
          如果有多个,则用逗号隔开;
          如果匹配所有,则用ALL;
client_list:
          IP地址:172.16.100.100
          主机名称:www.magedu.com
          网络地址/子网掩码:(子网掩码只能使用长格式)
          简短格式:
               如:172.16. 表示 172.16.0.0/255.255.0.0
[:options]
          deny     使在hosts.allow中选项deny
          allow    使在hosts.deny中选项allow
          这样的机制可以让我们只需写一个配置文件就可以将所有配置搞定
                 例: vim /etc/hosts.allow
                     in.telnetd: ALL EXCEPT 172.16.251.105 :deny
          spawn     发起执行一条命令,比如:如果有人访问访问服务器,别拒绝了,这通常是一种恶意访问,或非正常访问,就可以使用spawn echo一些命令保存至日志中
              vim /etc/hosts.allow
                  in.telnetd: 172.16 EXCEPT 172.16.251.105
              vim /etc/hosts.deny
                  in.telnetd: ALL : spawn echo `date` login attempt from %c to %s >> /var/log/tcp_wrapper.log
                     %c:[email protected]
                     %s:[email protected]
                     %h:客户端主机名
                     %p:服务器上的进程PID
                    获取完整帮助信息:man 5 hosts_access
                    注意:echo的信息无需加引号,否则命令替换不会进行

e).tcp_wrapper有几个内置的宏(Macro)

用于client_list的有:ALL,NONE,UNKNOW(主机名无法解析的地址),
                     PARANOID(正反向解析不匹配的地址)
用于daemon_list的有:ALL
两者都可以都可以用:EXCEPT (排除)
           例: vim /etc/hosts.allow
                in.telnetd: 172.16. EXCEPT 172.16.251.105

f).事例

如果我们要定义仅放行某一网段,则定义/etc/hosts.allow放行网段,在/etc/hosts.deny定义拒绝所有主机。

演示控制:telnet

yum install telnet-server
     ldd `which in.telnetd`  没有显示
     ldd `which xinetd`   显示有,telnet自己本身不监听程序,而是由xinetd监听,所有它是接受tcp_wrapper控制的。
     chkconfig telnet on
     service xinetd start
     ss -tnl | grep 23
 仅放行172.16网段:
     vim /etc/hosts.allow
          in.telnetd:     172.16.
     vim /etc/hosts.deny
          in.telnetd:     ALL
     不用重启,立即生效,因为工作在内核中的,和iptables一样立即生效

总结:

tcp_wrapper确实非常简单而又易于配置。尤其是控制ftp服务时,强烈推荐,因为基于iptables的访问控制与tcp_wrapper相比,真的太复杂了。

tcp_wrapper:简单的基于主机的访问控制工具,布布扣,bubuko.com

时间: 2024-08-09 19:52:48

tcp_wrapper:简单的基于主机的访问控制工具的相关文章

一款简单的基于Web的投票工具(PHP+SQLite 实现)

    最近实现了一个简单的投票工具--小兵投票(下文称"本软件").     本软件是一款简单的基于Web的投票工具,使用 PHP+SQLite 实现.      本软件是一款开源.免费软件. 软件下载地址: https://sourceforge.net/projects/xb-vote/files/latest/download?source=files     用户在系统中注册后,即可以创建投票,或参与投票. 首次使用时,请先注册一个用户名为root的用户,用于管理用户与投票.

locust安装及其简单使用----基于python的性能测试工具

1.已安装python3.6 ,安装步骤略 pip安装: pip install locust 检查locust是否安装成功 locust --help 2.安装 pyzmq If you intend to run Locust distributed across multiple processes/machines, we recommend you to also install pyzmq. 如果你打算运行Locust 分布在多个进程/机器,我们建议你也安装pyzmq. 通过pip命

简单主机批量管理工具

题目:简单主机批量管理工具 需求: 主机分组 登录后显示主机分组,选择分组后查看主机列表 可批量执行命令.发送文件,结果实时返回 主机用户名密码可以不同 流程图: 说明: ### 作者介绍: * author:lzl ### 博客地址: * http://www.cnblogs.com/lianzhilei/p/5881434.html ### 功能实现 题目:简单主机批量管理工具 需求: 主机分组 登录后显示主机分组,选择分组后查看主机列表 可批量执行命令.发送文件,结果实时返回 主机用户名密

httpd虚拟主机配置及基于用户的访问控制

本文旨在实践httpd虚拟主机及基于用户的访问控制 知识储备 虚拟主机有三种实现方案: 基于ip: 为每个虚拟主机准备至少一个独有ip地址: 基于port: 为每个虚拟主机使用至少一个独有的port: 基于FQDN: 为每个虚拟主机使用至少一个FQDN: 注意:一般虚拟机不要与中心主机混用:因此,要使用虚拟主机,得先禁用'main'主机: 禁用方法:注释中心主机的DocumentRoot指令即可: 基于用户的访问控制: http协议认证方式2种 basic:明文 digest:消息摘要认证 本次

Python开发程序:简单主机批量管理工具

题目:简单主机批量管理工具 需求: 主机分组 登录后显示主机分组,选择分组后查看主机列表 可批量执行命令.发送文件,结果实时返回 主机用户名密码可以不同 流程图: 说明: ### 作者介绍: * author:lzl ### 博客地址: * http://www.cnblogs.com/lianzhilei/p/5881434.html ### 功能实现 题目:简单主机批量管理工具 需求: 主机分组 登录后显示主机分组,选择分组后查看主机列表 可批量执行命令.发送文件,结果实时返回 主机用户名密

最简单的基于FFmpeg的libswscale的示例附件:测试图片生成工具

本文记录一个自己写的简单的测试图片生成工具:simplest_pic_gen.该工具可以生成视频测试时候常用的RGB/YUV格式的测试图片.下面简单介绍一下这些测试图片的生成函数.这里有一点需要注意:查看生成的图片需要使用RGB/YUV播放器. 灰阶测试图 亮度取值为16-235的灰阶测试图下面这张图是一张灰阶测试图的示例.这张图的分辨率是1280x720,像素格式是YUV420P,亮度的取值范围是16-235,一共包含了10级的灰度.最左边的灰度竖条的YUV取值为(16,128,128),最右

http2.2常用配置(虚拟主机,访问控制,压缩,缓存,压力测试)

系统环境 [[email protected] ~]# cat /etc/redhat-release  CentOS release 6.6 (Final) [[email protected] ~]# uname -r 2.6.32-504.el6.x86_64 [[email protected] ~]# uname -m x86_64 程序环境 配置文件: 主配置文件:/etc/httpd/conf/httpd.conf 分段配置文件:/etc/httpd/conf.d/*.conf 服

RBAC (基于角色的访问控制)

基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注.在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限.这就极大地简化了权限的管理.在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色.角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收.角色与角色的关系可以建立起来以囊括更广

httpd服务之虚拟主机、访问控制、https配置详解

前言 上文讲解了http协议及httpd的一些特性,是学习web服务需要掌握的一些基础知识,接下来让我们进一步了解httpd相关功能的配置,本文讲解的是虚拟主机,访问控制及https等功能的配置. httpd之虚拟主机 虚拟主机共分为三种模式:基于IP.基于端口.基于主机名(FQDN) 实验环境介绍 开始之前,先介绍一下httpd在CentOS6.6版本及文件: 版本:      httpd-2.2.15(CentOS7升级为2.4系列) 配置文件:         /etc/httpd/con