网络安全工具 TCP Wrapper

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

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 支持使用域名来配置规则

  • 安全

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

    199 引用 • 818 回帖 • 1 关注
  • 网络
    140 引用 • 184 回帖 • 4 关注
  • TCP
    32 引用 • 38 回帖 • 2 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • CSS

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

    198 引用 • 543 回帖 • 2 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 410 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 394 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    346 引用 • 757 回帖 • 1 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    186 引用 • 1021 回帖
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 280 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    134 引用 • 1127 回帖 • 108 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 655 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    98 引用 • 367 回帖
  • OnlyOffice
    4 引用 • 18 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    93 引用 • 122 回帖 • 616 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    336 引用 • 324 回帖 • 3 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 739 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 444 关注
  • Vim

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

    29 引用 • 66 回帖
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    209 引用 • 2040 回帖
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    172 引用 • 1538 回帖
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    10 引用 • 15 回帖
  • 浅吟主题

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

    1 引用 • 31 回帖 • 2 关注
  • WordPress

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

    46 引用 • 114 回帖 • 169 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • InfluxDB

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

    2 引用 • 104 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 446 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • 前端

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

    246 引用 • 1338 回帖