网络安全工具 TCP Wrapper

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

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

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖 • 2 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖 • 1 关注
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 1 关注
  • 程序员

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

    588 引用 • 3538 回帖
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • Office

    Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。

    5 引用 • 34 回帖
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖 • 2 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 341 关注
  • 前端

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

    245 引用 • 1338 回帖 • 1 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    20 引用 • 7 回帖 • 2 关注
  • SQLite

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

    5 引用 • 7 回帖 • 1 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖 • 1 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    91 引用 • 59 回帖 • 3 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖 • 1 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    174 引用 • 3852 回帖
  • Quicker

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

    37 引用 • 157 回帖 • 3 关注
  • Access
    1 引用 • 3 回帖 • 1 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 29 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    181 引用 • 821 回帖
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 63 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 1 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 3 关注
  • DNSPod

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

    6 引用 • 26 回帖 • 531 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 20 关注
  • 京东

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

    14 引用 • 102 回帖 • 316 关注