网络安全工具 TCP Wrapper

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

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 引用 • 818 回帖
  • 网络
    139 引用 • 184 回帖 • 4 关注
  • TCP
    32 引用 • 38 回帖 • 2 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 639 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 2 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    21 引用 • 204 回帖
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 488 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    245 引用 • 1338 回帖 • 2 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 174 关注
  • Excel
    31 引用 • 28 回帖
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 87 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 157 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    198 引用 • 541 回帖 • 1 关注
  • Outlook
    1 引用 • 5 回帖 • 2 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • Sandbox

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

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

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 379 关注
  • Visio
    1 引用 • 2 回帖 • 1 关注
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    7 引用 • 69 回帖 • 3 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 204 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖 • 1 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 31 关注
  • Access
    1 引用 • 3 回帖 • 5 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    52 引用 • 228 回帖
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖 • 1 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 499 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    584 引用 • 3537 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    692 引用 • 535 回帖
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 524 关注