tcpwrapper杂谈

本文为作者自己的思想斗争,感兴趣可以看一看。

起因

在做内网渗透的时候利用nmap扫描端口开放信息的时候发现了多处端口的服务为tcpwrapped

因此来了解一下tcpwrappers是什么

查询资料结果及分析

TCP_Wrappers 是一个工作在第四层(传输层)的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制。它只能针对某些具体的应用或者服务起到一定的防护作用。比如说 ssh、telnet、FTP、sendmail、nfsauthd等服务的请求,都会先受到 TCP_Wrappers 的拦截。TCP_Wrappers 是基于库调用实现的,包名为 libwrap.so(也有的叫做tcp_wrappers-lib)。

那么这里我们提取到第一个知识点,tcpwrappers工作在传输层,在配置 TCP Wrappers 之前,要确定服务是否对其支持。

可以使用ldd 命令来查看服务程序是否使用了 libwrap.so 这个动态链接库,如果包含那么表示该服务支持 TCP Wrappers,否则不支持。

# ldd /usr/sbin/sshd |grep libwrap

libwrap.so.0 => /lib/libwrap.so.0 (0x002b1000)

如果输入ldd命令显示上面的结果,则代表服务使用了libwrap.so这个动态链接库,也就是说便可以配置tcpwrapper对该服务进行防护。

也可以通过查询 RPM 数据库(RH/CentOS 发行版)来获取使用到 libwrap.so.0 这个动态库的软件包列表,如:

# rpm -q --whatrequires libwrap.so.0

tcp_wrappers-7.6-40.7.el5

sendmail-8.13.8-8.el5

conman-0.1.9.2-8.el5

stunnel-4.15-2.el5.1

audit-1.7.18-2.el5

openssh-server-4.3p2-72.el5

quota-3.13-4.el5

nfs-utils-1.0.9-50.el5

注解:RPM 全名 RedHat Package Managerment,是由Red Hat公司提出,被众多Linux发行版本所采用,是一种数据库记录的方式来将所需要的软件安装到到Linux系统的一套软件管理机制。

详情信息请见链接:RPM详解_rpm 数据库问题_q1y2y3的博客-CSDN博客

也就是说可以通过上面两种方式去查询哪些服务使用了llibwrap.so库,进而也就知道了该服务是否可以可以配置tcpwrappers。

配置方法

配置 TCP Wrappers 有两个文件:/etc/hosts.allow 和 /etc/hosts.deny ,通过这两个文件配置规则以允许或阻止指定客户端对指定服务的访问,修改并保存文件后无需重新启动服务就能立即生效。

配置规则以下面的顺序读取:

(1) 如果 /etc/hosts.allow 文件中明确允许访问的,那么授予访问权。

(2) 如果 /etc/hosts.deny 文件中明确拒绝访问的,那么不允许启动服务。

(3) 如果两个文件中都没有发现的计算机或 IP 地址,那么自动授权访问,xinetd 服务启动。

(4) 如果两个文件中都有同样的计算机或 IP 地址,则以 /etc/hosts.allow 中的规则为准。

注解:xinetd是一个用于管理Internet服务的守护进程,它可以监听多个端口,并针对每个端口分别调用相应的服务程序。xinetd可以限制对服务的访问,允许对服务进行访问控制,并提供了更好的安全性和更好的性能。常见的网络服务(如 Telnet、FTP、SSH、HTTP 等)可以通过 xinetd 运行,以便管理员能够更好地控制它们的访问和资源使用。xinetd 在提供了更多灵活性和安全性的同时,也有助于减少不必要的系统负载,因为它只在需要时启动服务。

初始状态下:

/etc/hosts.allow/etc/hosts.deny什么都没有添加,此时没有限制,是都可以连接的

配置文件格式遵循如下规则

/etc/hosts.allow

<服务列表> : <允许访问的主机或IP地址列表>

示例:

sshd : 192.168.1.100, 192.168.1.101

httpd : 10.0.0.0/24

ALL : 127.0.0.1

上述示例允许主机 192.168.1.100 和 192.168.1.101 访问 SSH 服务,10.0.0.0/24 网络中的主机访问 HTTP 服务,以及允许本地主机(127.0.0.1)访问所有服务。

/etc/hosts.deny

<服务列表> : <拒绝访问的主机或IP地址列表>

示例:

sshd : ALL

ALL : ALL

上述示例拒绝所有主机访问 SSH 服务,以及拒绝所有主机访问所有其他服务。

由此我便想到了linux有两个层面的防火墙,接下来会详解一下linux防火墙。

Linxu防火墙分类

Linux 上防火墙分为,封包过滤机制的 Netfilter和程序管控机制的 TCP Wrappers。

那这里可能有人要问了,说tcpwrapper能够理解,毕竟上面已经说过了。但这个netfilter是什么呢?

其实大家应该知道更多的应该是iptables和firewalld。而netfilter是Linux内核中的一个框架,用于对网络数据包进行处理和操作。它可以用于实现网络地址转换(NAT)、数据包过滤、端口转发等功能。iptables和firewalld都是使用netfilter框架来实现防火墙功能的工具。iptables直接使用netfilter提供的API,而firewalld则是基于iptables和netfilter构建的高级防火墙管理工具。因此,netfilter是iptables和firewalld背后的技术基础。

也就是说iptables和firewalld是防火墙管理工具,真正实现防火墙功能的其实是netfilter这个存在于linux内核中的框架。

因此当存在访问数据包的时候首先会经过iptables或firewalld的检测。如果数据包能够通过第一层防火墙的检测,这个时候就会面临第二层防火墙tcpwrappers的检测。但如果目标服务没有开启tcpwrappers的话,便会直接访问到对应的服务。

如果你认真的看到这里的话,便会有一个疑问,tcpwrappers是针对服务的一个防火墙,那么它为什么不是工作在应用层而是传输层呢。其实我在上面写tcpwrappers的简介的时候搜索了很多地方,对于它工作在哪一层有很多种说法。以我的理解来说,它肯定不会低于三层,因为它是在经过iptables或者firewalld之后才到的防火墙。而iptables和firewalld工作在三层,所以根据七层模型的数据处理流程来说,它肯定是高于三层的。然后因为它是针对服务的防火墙,所以我觉得应该是应用层。

这里放出chatgpt的回答:

TCP Wrapper(也称为tcpd或hosts.allow和hosts.deny的工具)位于网络协议栈的应用层之上,它实际上不是一个网络层协议,而是一个用于访问控制和安全性的应用程序。因此,它不属于OSI模型的七个层次之一。

总之,TCP Wrapper不工作在OSI模型的任何特定层,而是在应用层之上进行操作。

而具体iptables和firewalld的区别可以见链接:iptables和firewalld的介绍与区别_iptables和firewalld的区别-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaopeisec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值