第十六章 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,如需转载请自行联系原作者
相关实践学习
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
5月前
|
网络协议 Python
151 python网络编程 - TCP相关介绍
151 python网络编程 - TCP相关介绍
14 0
|
1月前
|
网络协议 Python
Python网络编程实现TCP和UDP连接
Python网络编程实现TCP和UDP连接
27 0
|
5月前
|
网络协议 Python
152 python网络编程 - TCP服务器
152 python网络编程 - TCP服务器
21 0
|
2月前
|
网络协议 网络安全 开发者
掌握Python网络编程:从TCP到UDP
掌握Python网络编程:从TCP到UDP
|
5月前
|
网络协议 Python
153 python网络编程 - TCP客户端
153 python网络编程 - TCP客户端
16 0
|
网络协议 数据挖掘 Python
第99天:TCP 编程
第99天:TCP 编程
167 0
第99天:TCP 编程
|
域名解析 缓存 网络协议
一文详解 TCP与UDP区别
计算机与其他网络设备相互通信,通信的双方在发送和接收数据包时必须基于相同的规则(例如:如何找到通信目标、如何发起通信、如何结束通信等规则都需要事先确定),我们将这种规则称为协议(Protocol)。TCP/IP协议簇是 Internet 的基础,其是一系列网络协议的总称,例如:TCP、UDP、IP、FTP、HTTP、ICMP、SMTP等都属于TCP/IP协议族内的协议。
335 0
|
算法 安全 网络协议
《TCP IP 详解卷1:协议》阅读笔记 - 第十八章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
2209 0
|
缓存 算法 网络协议
《TCP IP 详解卷1:协议》阅读笔记 - 第十六章
阅读须知:笔记为阅读《TCP IP 详解卷1:协议》后摘抄的一些知识点,其间也有加入一些根据英文原版的自己翻译和结合网上知识后的理解,所以有些段落之间并不能够串联上或者知识点与书上略有差别(基本差别不大,参考的资料属RFC官方文档)。
2017 0
|
网络协议
TCP/IP详解 卷1 第十七章 TCP:传输控制协议
17.2 TCP的服务 TCP提供了一种面向连接的、可靠的字节流服务。两个使用TCP的应用在彼此交换数据之前必须先建立一个TCP连接。   TCP通过下列方式来提供可靠性: 1)  应用数据被分割成TCP认为最合适发送的数据块 2)  当TCP发送一个段后,它会启动一个定时器,等待目的端确认。
1181 0