网络安全工具 TCP Wrapper

本贴最后更新于 2289 天前,其中的信息可能已经事过景迁

1. 什么是 TCP Wrapper

TCP Wrapper 是一个基于主机的网络访问控制表系统,用于过滤对类 Unix 系统(如 Linux 或 BSD)的网络访问。
当网络请求到达我们的服务器时,TCP Wrapper 使用 hosts.allow 和 hosts.deny(按此顺序)来确定客户端能否访问给定的服务。
需要注意的是,并非所有网络服务都支持使用 TCP Wrapper,我们可以下面的命令确认网络服务是否支持 TCP Wrapper

$ ldd /path/to/binary | grep libwrap

如果上述命令有结果输入,则表示该服务支持 TCP Wrapper。
注意:/path/to/binary 是指网络服务的绝对路径
我们以 sshd 和 vsftpd 服务为例:

[wxyuan@node1 ~]$ ldd $(which sshd) | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f3b1b1e4000) [wxyuan@node1 ~]$ [wxyuan@node1 ~]$ ldd $(which vsftpd) | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fcde2dfd000)

可以看到 sshd 和 vsftpd 服务都支持 TCP Wrapper.

2. 如何使用 TCP Wrappers 限制对服务的访问

TCP Wrappers 对网络服务的访问控制基于下面两个文件:

  • /etc/hosts.allow
  • /etc/hosts.deny

当客户端尝试连接到远程系统上的网络服务时,这两个文件用于确定是允许还是拒绝客户端访问。
使用/etc/hosts.allow 和/etc/hosts.deny 定义访问规则,控制客户端对网络服务的访问。
两个文件的语法是相同的:

: [: command : command : ...]

参数说明:

  • services:应用当前规则的逗号分隔的服务列表。,关键字 ALL 表示所有服务
  • clients:表示受该规则影响的逗号分隔的主机名或 IP 地址列表,关键字 ALL 表示所有的客户端
  • command:冒号分隔动作的可选列表指示触发给定规则时应该发生什么

要允许客户端访问,请在/etc/hosts.allow 中添加客户端主机名或 IP 地址。要拒绝客户端访问,请在/etc/hosts.deny 中添加其名称或 IP 地址。
请注意:/etc/hosts.allow 中允许的规则优先于/etc/hosts.deny 中禁止的规则。
当服务器接收到对指定网络服务的请求时,规则匹配过程如下:

首先读取/etc/hosts.allow 文件,并从上到下读取。将网络服务(services)和客户端(clients),与文件中的第一行进行对比,如果匹配,则授予访问权限。
如果该行不匹配,则读取下一行并执行相同的检查。如果读取所有行并且不匹配,则从顶部开始读取/etc/hosts.deny 文件。
如果在 hosts.deny 文件中找到匹配行,则拒绝访问。如果在两个文件中都找不到匹配行,或者两个文件都不存在,则授予对服务的访问权限。

举两个例子:
(1) 只允许 192.168.1.101、192.168.1.102 和 192.168.1.103 访问 sshd 服务,拒绝其它客户端对 sshd 服务的访问。首先在/etc/hosts.allow 文件中添加如下内容:

sshd:192.168.1.101,192.168.1.102,192.168.1.103

在/etc/hosts.deny 添加如下内容:

sshd:ALL

注意:由于首先应用 hosts.allow 中的访问规则,所以它们优先于 hosts.deny 中指定的规则。因此,如果 hosts.allow 中允许访问服务,则会忽略 hosts.deny 中相同服务的规则。
(2) 允许 192.168.1.0/24 子网的客户端访问 vsftpd 服务,拒绝其它客户端对 vsftpd 服务的访问。首先在/etc/hosts.allow 文件中增加如下内容

vsftpd:192.168.1.*

在/etc/hosts.deny 添加如下内容:

sshd:ALL

从这个例子可以看到,/etc/hosts.allow 和/etc/hosts.deny 支持使用通配符来配置规则
(3) 允许 example.com 子域中的主机访问 sshd 和 vsftpd 服务,在/etc/hosts.allow 文件中增加如下内容:

sshd,vsftpd:.example.com

从这个例子可以看到,/etc/hosts.allow 和/etc/hosts.deny 支持使用域名来配置规则

  • 安全

    安全永远都不是一个小问题。

    203 引用 • 816 回帖 • 1 关注
  • 网络
    139 引用 • 184 回帖 • 4 关注
  • TCP
    32 引用 • 38 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 636 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 74 关注
  • RemNote
    2 引用 • 16 回帖 • 12 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 167 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    226 引用 • 476 回帖
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 321 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 636 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    289 引用 • 4492 回帖 • 658 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    143 引用 • 442 回帖 • 2 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 1 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 212 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 698 关注
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖 • 1 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 2 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 52 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    425 引用 • 1250 回帖 • 598 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 17 关注
  • 印象笔记
    3 引用 • 16 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 1 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    36 引用 • 155 回帖 • 1 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    116 引用 • 54 回帖 • 2 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    267 引用 • 666 回帖
  • 笔记

    好记性不如烂笔头。

    311 引用 • 796 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 814 关注
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    41 引用 • 130 回帖 • 252 关注