深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限

文章目录

  • 深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限
  • 引言
  • 什么是 TCP Wrappers?
    • 工作原理
  • 什么是 /etc/hosts.allow 和 /etc/hosts.deny?
  • 匹配规则
  • 配置语法详解
    • 配置示例
      • 允许特定 IP 访问 SSH 服务
      • 拒绝整个子网访问 FTP 服务
      • 允许内网,拒绝外网
      • 记录非法访问尝试
    • 注意事项
  • 高级配置与技巧
    • 允许特定 IP 地址访问服务
    • 拒绝某个网段的访问
  • 混合使用/etc/hosts.allow和 /etc/hosts.deny
  • 常见问题及调试
  • 实际应用场景
    • 限制管理端口访问
    • 防止暴力破解
    • 内外网隔离
  • 与防火墙的对比
  • 总结


深入解析/etc/hosts.allow与 /etc/hosts.deny:灵活控制 Linux 网络访问权限

引言

在 Linux 服务器管理中,保障服务的安全性至关重要。除了防火墙(如 iptablesfirewalld),TCP Wrappers 是一个轻量级但高效的工具,可通过 /etc/hosts.allow/etc/hosts.deny 文件快速定义网络服务的访问规则。本文将深入探讨这两个文件的作用、配置方法以及实际应用场景。

什么是 TCP Wrappers?

TCP Wrappers 是一个基于主机的访问控制系统,通过封装网络服务(如 sshdvsftpd 等),在服务请求到达前进行权限验证。只有支持 libwrap 库的服务才能使用此机制(可以通过 ldd /usr/sbin/sshd | grep libwrap 来验证服务是否启用了 TCP Wrappers)。

工作原理

TCP Wrappers 通过检查 /etc/hosts.allow/etc/hosts.deny 文件来决定是否允许远程主机访问本机服务。其工作流程如下:

  1. 系统首先检查 /etc/hosts.allow 文件,查看是否有匹配的规则。如果匹配成功,则允许访问。
  2. 如果 /etc/hosts.allow 中没有匹配项,系统会继续检查 /etc/hosts.deny 文件。如果找到匹配项,则拒绝访问。
  3. 如果两个文件都没有匹配项,系统默认允许访问。

这种访问控制机制简单、直接,适用于大多数 Linux 系统服务。

什么是 /etc/hosts.allow 和 /etc/hosts.deny?

/etc/hosts.allow/etc/hosts.deny 文件是 TCP Wrappers 的一部分,用于控制主机对系统上服务的访问权限。它们的主要作用是通过 IP 地址、主机名或网络地址来允许或拒绝远程主机的访问。

  • /etc/hosts.allow:定义允许访问指定服务的主机或网络。
  • /etc/hosts.deny:定义拒绝访问指定服务的主机或网络。

匹配规则

  1. 客户端发起请求时,系统首先检查 /etc/hosts.allow
  2. 若匹配到允许规则,则直接放行。
  3. 若未匹配,则继续检查 /etc/hosts.deny
  4. 如果 hosts.deny 中有匹配规则,则拒绝访问。
  5. 如果两个文件都没有匹配规则,默认情况下允许访问。

这两个文件的作用是互补的:如果 /etc/hosts.allow 中匹配到某个主机或 IP 地址,则允许访问;如果 /etc/hosts.deny 中匹配到,则拒绝访问。

配置语法详解

/etc/hosts.allow/etc/hosts.deny 的配置格式类似,每一行都包含三个部分:

服务列表 : 客户端列表 [: 操作选项]
  • 服务列表:多个服务用逗号分隔(如 sshd, vsftpd),或者使用 ALL 表示所有服务。
  • 客户端列表:可以使用以下格式:
    • 单个 IP 地址(192.168.1.10
    • 网段(192.168.1.0/255.255.255.0192.168.1.
    • 域名(.example.com 匹配所有子域)
    • 特殊关键字:ALL(所有客户端)、LOCAL(本地网络)、KNOWN(可解析的主机名)等。
  • 操作选项:可以指定网络接口、用户名等额外限制。

配置示例

允许特定 IP 访问 SSH 服务

sshd: 192.168.1.0/24
sshd: 192.168.1.20, 10.0.0.5
httpd: .mydomain.com
  • 允许 192.168.1.0/24 网段的主机访问 SSH 服务(sshd
  • 允许 192.168.1.2010.0.0.5 访问 SSH 服务(sshd
  • 允许来自 .mydomain.com 域名的所有主机访问 HTTP 服务(httpd

拒绝整个子网访问 FTP 服务

# /etc/hosts.deny
vsftpd: 192.168.2.0/255.255.255.0
ALL: ALL

这里一个ALL已经是全部了,我把vsftpd加到这,是表示可以拒绝FTP服务的意思

  • 拒绝 192.168.2.0/24 网段的所有主机访问 FTP 服务(vsftpd)。
  • ALL: ALL 会拒绝所有未在 /etc/hosts.allow 中明确允许的访问。

允许内网,拒绝外网

# /etc/hosts.allow
ALL: 192.168.1.0/24, LOCAL# /etc/hosts.deny
ALL: ALL
  • 允许 192.168.1.0/24 网段和本地网络访问所有服务。
  • 拒绝所有其他来源的访问。

记录非法访问尝试

# /etc/hosts.deny
sshd: ALL : spawn /bin/echo "Blocked %a at %d" >> /var/log/secure.log
  • 每次拒绝 SSH 访问时,记录拒绝的 IP 地址和时间到 /var/log/secure.log 文件中。

注意事项

  1. 优先级与顺序/etc/hosts.allow 的规则优先于 /etc/hosts.deny。如果同一服务在两个文件中都有配置,hosts.allow 中的规则将优先生效。
  2. 立即生效:修改后无需重启服务,规则会自动生效。
  3. 服务兼容性:只有支持 TCP Wrappers 的服务(如 sshdxinetd 管理的服务)才会受此控制。可以通过 ldd 命令检查服务是否链接了 libwrap 库(例如:ldd /usr/sbin/sshd)。
  4. 避免冲突:如果同时在两个文件中为同一服务配置规则,可能会导致意外的访问控制行为,需确保规则清晰明确。

高级配置与技巧

允许特定 IP 地址访问服务

如果希望只允许某个特定 IP 地址访问某个服务,可以这样配置:

sshd: 192.168.1.10

这表示只允许 IP 地址为 192.168.1.10 的主机访问 SSH 服务。

拒绝某个网段的访问

你可以拒绝某个网段的所有访问:

ALL: 192.168.2.0/24

这表示拒绝 192.168.2.0/24 网段的主机访问所有服务。

混合使用/etc/hosts.allow和 /etc/hosts.deny

你可以灵活配置这两个文件。以下是允许特定 IP 地址访问 SSH 服务,同时拒绝其他所有主机的配置:

  • /etc/hosts.allow
sshd: 192.168.1.10
  • /etc/hosts.deny
sshd: ALL

常见问题及调试

  1. 配置没有生效

    • 如果修改后规则没有生效,可能是因为使用的服务没有启用 TCP Wrappers 支持。你可以通过 ldd 命令检查服务是否链接了 libwrap 库。例如:ldd /usr/sbin/sshd
  2. 优先级问题
    /etc/hosts.allow 中的规则优先于 /etc/hosts.deny。因此,如果在 hosts.allow 中明确允许某个主机,而在 hosts.deny 中拒绝了该主机的访问,hosts.allow 中的规则会优先生效。

  3. 服务未使用 TCP Wrappers
    不是所有服务都支持 TCP Wrappers 访问控制。你需要查阅服务的文档来确认是否支持此机制。如果不支持,建议使用防火墙(如 iptables)进行访问控制。

实际应用场景

限制管理端口访问

通过限制只允许特定 IP(如管理员 IP)访问 SSH 服务,可以提高安全性:

  • /etc/hosts.allow
sshd: 192.168.1.0/24
  • /etc/hosts.deny
sshd: ALL

防止暴力破解

结合 Fail2Ban 动态更新 /etc/hosts.deny 来封禁暴力

破解攻击者的 IP 地址。

内外网隔离

允许内网访问数据库服务,拒绝外网连接,以保护数据库的安全。

与防火墙的对比

特性TCP Wrappers防火墙(iptables)
配置复杂度简单,基于文本文件复杂,需学习规则语法
作用层级应用层(服务进程)网络层(IP/端口)
适用场景快速控制服务访问权限全面控制网络流量

总结

/etc/hosts.allow/etc/hosts.deny 是 Linux 系统中简单却强大的访问控制工具。它们适合快速配置黑白名单,尤其在小规模环境中效果显著。对于复杂的网络控制,仍然需要结合防火墙进行全面防护。掌握其用法,能够在安全与便捷之间找到完美平衡。

提示:修改前务必备份原文件,并通过 telnetnc 等工具测试规则是否生效!在配置这些文件时,务必小心,避免误配置导致合法用户无法访问系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/72479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring AI:开启Java开发的智能新时代

目录 一、引言二、什么是 Spring AI2.1 Spring AI 的背景2.2 Spring AI 的目标 三、Spring AI 的核心组件3.1 数据处理3.2 模型训练3.3 模型部署3.4 模型监控 四、Spring AI 的核心功能4.1 支持的模型提供商与类型4.2 便携 API 与同步、流式 API 选项4.3 将 AI 模型输出映射到 …

大白话面试中应对自我介绍

在面试中,自我介绍是开场的关键环节,它就像你递给面试官的一张“个人名片”,要让面试官快速了解你并对你产生兴趣。下面详细讲讲应对自我介绍的要点及回答范例。 一、自我介绍的时间把控 一般面试中的自我介绍控制在1 - 3分钟比较合适。时间…

postman请求后端接受List集合对象

后端集合 post请求,即前端请求方式

Spark基础篇 RDD、DataFrame与DataSet的关系、适用场景与演进趋势

一、核心概念与演进背景 1.1 RDD(弹性分布式数据集) 定义:RDD 是 Spark 最早的核心抽象(1.0版本引入),代表不可变、分区的分布式对象集合,支持函数式编程和容错机制。特点: 无结构化信息:仅存储对象本身,无法自动感知数据内部结构(如字段名、类型)。编译时类型安全…

软件测试人员在工作中如何运用Linux?

软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。 对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux系统完全了解,你只…

数据结构秘籍(二)图(含图的概念、存储以及图的两大搜索)

1 引言 线性数据结构的元素满足唯一的线性关系,每个元素(初第一个和最后一个外)只有一个直接前趋和一个直接后继。树形数据结构的元素之间有着明显的层次关系。但是图形结构的元素之间的关系是任意的。 什么是图? 简单来说&…

printf 与前置++、后置++、前置--、后置-- 的关系

# 前置和前置-- 先看一段代码 大家是不是认为printf输出的是 2 3 3 2 1 1 但是实际输出的是 3 3 3 1 1 1 在这两行printf函数代码里,编译器会先计算 a 和 --a 的值,然后再 从右向左 开始输出。 printf函数中,如果有多个…

永磁同步电机无速度算法--反电动势观测器

一、原理介绍 在众多无位置传感器控制方法中,低通滤波反电势观测器结构简单,参数整定容易,易于编程实现。但是该方法估计出的反电势会产生相位滞后,需要在估计永磁同步电机转子位置时进行了相位补偿。 二、仿真模型 在MATLAB/si…

VS2015 c++和cmake配置编程

Visual Studio 2015:确保安装了C开发工具,并安装“使用C的桌面开发”工作负载。CMake:可以从 CMake官网 下载并安装,并将其添加到系统环境变量中。vs加载项目启动Visual Studio。选择“继续但无代码”。点击“文件”。选择 “打开…

大语言模型揭秘:从诞生到智能

引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)无疑是技术领域最耀眼的明星之一。它们不仅能够理解人类的自然语言,还能生成流畅的文本,甚至在对话、翻译、创作等任务中表现出接近人类的智能…

MongoDB 高级索引

MongoDB 高级索引 摘要 在数据库管理中,索引是提高查询效率的关键因素。MongoDB,作为一款流行的NoSQL数据库,其索引功能尤为强大。本文将深入探讨MongoDB的高级索引特性,包括复合索引、部分索引、文本索引、地理空间索引等,旨在帮助数据库管理员和开发者更好地利用Mongo…

STM32MP1xx的启动流程

https://wiki.st.com/stm32mpu/wiki/Boot_chain_overview 根据提供的知识库内容,以下是STM32 MPU启动链的详细解析: 1. 通用启动流程 STM32 MPU启动分为多阶段,逐步初始化外设和内存,并建立信任链: 1.1 ROM代码&…

Collab-Overcooked:专注于多智能体协作的语言模型基准测试平台

2025-02-27,由北京邮电大学和理想汽车公司联合创建。该平台基于《Overcooked-AI》游戏环境,设计了更具挑战性和实用性的交互任务,目的通过自然语言沟通促进多智能体协作。 一、研究背景 近年来,基于大型语言模型的智能体系统在复…

QT——文件IO

QFile 类 构造函数 QFile() 无参构造 仅仅构建一个QFile 对象,不设定文件名 QFile(文件名) 构建一个QFile对象的同时,设定文件名 但是注意,仅仅设定文件名,并不会打开该文件 设定文件名 QFile file file.setFileName…

HTML第三节

一.初识CSS 1.CSS定义 A.内部样式表 B.外部样式表 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&g…

xr-frame 3D Marker识别,扬州古牌坊 3D识别技术稳定调研

目录 识别物体规范 3D Marker 识别目标文件 map 生成 生成任务状态解析 服务耗时&#xff1a; 对传入的视频有如下要求&#xff1a; 对传入的视频建议&#xff1a; 识别物体规范 为提高Marker质量&#xff0c;保证算法识别效果&#xff0c;可参考Marker规范文档 Marker规…

html+js 轮播图

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>轮播图示例</title><style>/* 基本样式…

NAT 代理服务 内网穿透

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; NAT 技术背景二&#xff1a;&#x1f525; NAT IP 转换过程三&#xff1a;&#x1f525; NAPT四&#xff1a;&#x1f525; 代理服务器&#x1f98b; 正向…

[Web 安全] PHP 反序列化漏洞 —— PHP 魔术方法

关注这个专栏的其他相关笔记&#xff1a;[Web 安全] 反序列化漏洞 - 学习笔记-CSDN博客 PHP 魔术方法 - 简介 - PHP 魔术方法 - 简单教程&#xff0c;简单编程PHP 中&#xff0c;以两个下划线 ( __ ) 开头方法称之为 「 魔术方法 」 这些 「 魔术方法 」 在 [PHP](/l/yufei/php…

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式

20250304在Ubuntu20.04的GUI下格式化exFAT格式的TF卡为ext4格式 2025/3/4 16:47 缘起&#xff1a;128GB的TF卡&#xff0c;只能格式化为NTFS/exFAT/ext4。 在飞凌的OK3588-C下&#xff0c;NTFS格式只读。 exFAT需要改内核来支持。 现在只剩下ext4了。 linux R4默认不支持exFAT…