第十六章 tcp_wrappers

简介:

16.1 tcp_wrappers简介

  tcp wrappers:Transmission Control Protocol Wrappers为由inetd生成的服务提供了增强的安全性。TCP Wrappers是一种对使用/etc/inetd.sec的替换方法。

  TCP Wrappers提供防止主机名和主机地址欺骗的保护。欺骗是一种伪装成有效用户或主机以获得对系统进行未经授权的访问的方法。


  tcp_wrapper是一种对基于TCP协议开发并提供服务的应用程序提供的一层访问控制工具。

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


16.2 tcp_wrappers工作模式

  TCP Wrappers使用访问控制列表(ACL)来防止欺骗。ACL是/etc/hosts.allow和/etc/hosts.deny文件中的系统列表。

  在配置为验证主机名到IP地址映射,以及拒绝使用IP源路由的软件包时,TCP Wrappers提供某些防止IP欺骗的保护。


16.3 tcp_wrappers工作原理

  在服务器向外提供的tcp服务上包装一层安全检测机制。外来连接请求首先通过这个安全检测,获得安全认证后才可被系统服务接受。


  TCP Wrapper作为客户服务器模型的一部分,依赖/etc/hosts.allow和/etc/hosts.deny文件作为简单访问控制语言的基础,可用于任何包含了libwrap.so的daemon程序使用。访问控制语言限定的规则是:基于客户端地址和客户端试图访问的daemon程序,选择性地允许客户端访问服务器在本地系统上的daemon程序。


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


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

  那么既然iptables也可以进行控制,为什么还要用tcp_wrapper呢?其一是因为tcp_wrapper配置非常简单,tcp_wrapper是一个用户空间的工具;其二是因为tcp_wrapper只能对基于TCP协议开发并调用了libwrap库的应用程序进行访问控制,而iptables则无此限制。


  tcp_wrapper基于库调用实现其功能:调用libwrap库

  只有基于TCP协议开发并调用了libwrap库的应用程序才能使用tcp_wrapper对其进行访问控制。

  判断服务是否能够由tcp_wrapper进行访问控制的方法有以下两个方向:

  a) 动态编译的程序:使用ldd命令,其如果调用了libwrap库则表示支持tcp_wrapper控制

  b) 静态编译的程序:使用string命令(string /path/to/program)查看应用程序文件,其结果如果出现以下内容则表示支持tcp_wrapper控制

    hosts.allow

    hosts.deny


16.4 tcp_wrapper配置

16.4.1 tcp_wrapper配置文件

  tcp_wrapper的配置文件有两个:/etc/hosts.allow和/etc/hosts.deny


16.4.2 tcp_wrapper配置

  在配置文件中为各服务分别定义访问控制规则实现访问控制,文件中的规则是即时生效的。


  配置文件语法:

1
daemon_list: client_list[:options]

  常用的daemon_list格式:

    应用程序的文件名称,而非服务名

    应用程序的文件名称列表,彼此间使用逗号分隔,例如:sshd,vsftpd

    ALL:表示所有服务

  常用的client_list格式:

    IP地址

    主机名

    网络地址:必须使用完整格式的掩码(如255.255.255.0),不能使用前缀格式掩码(如/24)

    简短格式的网络地址:如172.16. 表示172.16.0.0/255.255.0.0

    ALL:所有主机

    KNOWN:所有可以解析主机名的主机

    UNKNOW:所有无法解析主机名的主机

    PARANOID:主机名的正反解结果不匹配

  EXCEPT:除了。如在hosts.allow文件中如下定义:

1
2
vsftpd: 172.16. EXCEPT 172.16.100.1      #表示允许172.16网段的主机(除了172.16.100.1)访问vsftpd
vsftpd: 172.16. EXCEPT 172.16.100.0 /255 .255.255.0 EXCEPT 172.16.100.1      #表示允许172.16网段的主机(除了172.16.100.0子网)和172.16.100.1这台主机访问vsftpd

  常用的[options]:

    deny:拒绝,主要用于hosts.allow文件中,实现deny功能

    allow:允许,主要用于hosts.deny文件中,实现allow功能

    spawn:启动额外应用程序,常用于实现记录日志。如在hosts.deny文件中如下定义:

1
vsftpd: ALL :spawn  /bin/echo  ` date ` login attempt from %c to %s, %d >>  /var/log/vsftpd .deny.log      #表示拒绝所有人访问vsftpd,若有人来访问记录至/var/log/vsftpd.deny.log文件中

      %c:client ip

      %s:server ip

      %d:daemon name


  tcp_wrapper规则检查逻辑:

    client --> /etc/hosts.allow --> (Y) --> ALLOW

    client --> /etc/hosts.allow --> (N) --> /etc/hosts.deny --> (Y) --> DENY

    client --> /etc/hosts.allow --> (N) --> /etc/hosts.deny --> (N) --> ALLOW


  下图是tcp_wrapper的工作流程:

wKioL1lUchnhc4K2AABzVk_0Kvw324.png










本文转自 忘情OK  51CTO博客,原文链接:http://blog.51cto.com/itchentao/1943001,如需转载请自行联系原作者
目录
相关文章
|
消息中间件
mq安装出现的问题 Unable to load crypto library. Failed with error:
mq安装出现的问题 Unable to load crypto library. Failed with error:
391 0
|
Prometheus Kubernetes 负载均衡
Opentelemetry collector用法
本文详细介绍了Opentelemetry Collector的使用方法及其各个组件(receiver、processor、exporter、connector和服务配置)的功能与配置。Collector的核心组件通过官方仓库提供丰富的实现,涵盖了认证、健康监控等功能。
1729 63
Opentelemetry collector用法
|
3月前
|
缓存 Java 数据安全/隐私保护
Java动态代理详解
动态代理是Java中一种强大且灵活的设计模式,它允许在运行时创建代理对象,从而实现对目标对象方法的拦截与增强。通过动态代理,开发者可以在不修改原始代码的情况下,增强对象功能,适用于日志记录、事务管理、权限控制等多个场景。
|
8月前
|
安全 IDE Java
重学Java基础篇—Java泛型深度使用指南
本内容系统介绍了Java泛型的核心价值、用法及高级技巧。首先阐述了泛型在**类型安全**与**代码复用**中的平衡作用,解决强制类型转换错误等问题。接着详细讲解了泛型类定义、方法实现、类型参数约束(如边界限定和多重边界)、通配符应用(PECS原则)以及类型擦除的应对策略。此外,还展示了泛型在通用DAO接口、事件总线等实际场景的应用,并总结了命名规范、边界控制等最佳实践。最后探讨了扩展知识,如通过反射获取泛型参数类型。合理运用泛型可大幅提升代码健壮性和可维护性,建议结合IDE工具和单元测试优化使用。
309 1
|
SQL 关系型数据库 MySQL
mysql和polardb
mysql和polardb
3968 2
|
人工智能 运维 安全
智慧工地:建筑热潮退去后的挑战与应对策略
智慧工地作为建筑业数字化转型的重要趋势之一,将共同推动建筑行业向更加高效、安全、可持续的方向发展
212 5
|
机器学习/深度学习 自然语言处理 语音技术
使用Python实现深度学习模型:智能产品设计与开发
【10月更文挑战第2天】 使用Python实现深度学习模型:智能产品设计与开发
241 4
|
存储 监控 Linux
|
Docker 容器
6-16|docker怎么把容器内的文件传出来
6-16|docker怎么把容器内的文件传出来
|
Linux 网络安全 数据安全/隐私保护
基于Linux下限制指定用户或IP地址通过SSH登录(访问控制)
基于Linux下限制指定用户或IP地址通过SSH登录(访问控制)
1189 0