首页 > 其他分享 >hosts.allow与hosts.deny详解

hosts.allow与hosts.deny详解

时间:2024-10-29 18:50:39浏览次数:7  
标签:deny 192.168 访问 hosts allow 客户端

概述

在 Linux 系统中,hosts.allowhosts.deny 都属于 TCP Wrappers 的一部分,用于控制服务的访问权限。不过它们的应用方式有所不同:

  • 默认情况下,这两个文件都不会主动限制任何访问。也就是说,如果 hosts.allowhosts.deny 文件中都没有任何规则配置,系统会默认允许所有连接。

  • 优先级顺序:系统会优先检查 hosts.allow,再检查 hosts.deny

    • 如果某个访问请求匹配了 hosts.allow 中的允许规则,则立即允许访问,忽略 hosts.deny 中的配置。
    • 如果访问请求不符合 hosts.allow 中的任何规则,系统再检查 hosts.deny,若匹配到拒绝规则,则会拒绝访问。
    • 如果两者中都没有匹配的规则,则系统默认允许访问。

因此,可以总结为:

  • hosts.allow 优先,定义允许的例外规则。
  • hosts.deny 用于补充,定义拒绝的例外规则。

语法规则

/etc/hosts.allow/etc/hosts.deny 文件的语法规则基本一致,都用于定义哪些客户端可以访问系统上的服务,以及哪些客户端不允许访问服务。以下是具体的语法规则和示例。

基本语法

两者的基本语法格式如下:

<服务名>: <客户端地址> [ : <选项> ] 
  • 服务名:指定服务名称,通常与 /etc/services 中的名称一致。可以使用 ALL 表示所有服务。
  • 客户端地址:指定被允许或拒绝的客户端,可以是 IP 地址、主机名、域名或网段,也可以用 ALL 表示所有地址。
  • 选项(可选):可以添加自定义命令或日志记录。通常以 spawntwist 等关键字开头。

详细说明

  1. 服务名
    可以是一个具体服务(如 sshd),或使用 ALL 代表所有服务。

  2. 客户端地址
    指定允许或拒绝的客户端,可以包括:

    • IP 地址:如 192.168.1.100
    • 网段:如 192.168.1.,表示以 192.168.1. 开头的所有地址
    • 主机名:如 example.com
    • 域名:以 . 开头表示域,如 .example.com,代表来自该域的所有主机
    • 关键字 ALL:表示所有客户端
  3. 选项(可选)
    在规则后面可以添加选项,比如记录日志、发送自定义消息、执行特定命令等。

    • spawn:可以在访问控制生效时执行命令。
    • twist:将客户端请求重定向到其他服务或显示自定义消息。

示例

1. 在 /etc/hosts.allow 中允许特定的客户端访问服务
sshd: 192.168.1.100 # 允许 IP 192.168.1.100 访问 sshd 服务 
httpd: .example.com # 允许来自 example.com 域的所有主机访问 httpd 服务 
ALL: LOCAL # 允许本地网络的所有服务 
2. 在 /etc/hosts.deny 中拒绝特定的客户端访问服务
sshd: ALL # 拒绝所有客户端访问 sshd 服务 
telnet: 192.168.1.200 # 拒绝 IP 192.168.1.200 访问 telnet 服务 
ALL: .malicious.com # 拒绝 malicious.com 域中的所有客户端访问所有服务 
3. 添加日志或自定义命令
sshd: 192.168.1.100 : spawn (/bin/echo "Access granted to %c" >> /var/log/ssh_access.log) 

这条规则允许 192.168.1.100 访问 sshd,并将 "Access granted to %c" 写入日志文件。

4. 重定向拒绝请求
sshd: 192.168.1.200 : twist /bin/echo "Access denied" 

这条规则在拒绝 192.168.1.200 访问 sshd 时,返回 "Access denied" 消息。

注意事项

  • 优先级hosts.allow 中的规则优先级高于 hosts.deny。如果在 hosts.allow 中找到匹配规则,则直接允许访问,不会检查 hosts.deny
  • 测试生效情况:可以通过 /var/log/auth.log(或系统日志)查看访问控制规则的生效情况。

这种语法和规则机制提供了灵活的访问控制方式,在配置多个服务的权限时尤其有效。

TCP Wrappers概述

libwrap 库是一个独立的库文件,通常以共享库的形式存在,一般命名为 libwrap.so。在 CentOS 或其他 Linux 系统上,这个文件的路径通常是 /lib64/libwrap.so/usr/lib64/libwrap.so,取决于系统架构和库的安装位置。

libwrap 提供了 tcp_wrappers 的核心功能,使服务程序可以调用其函数(如 hosts_access()hosts_ctl())来解析 /etc/hosts.allow/etc/hosts.deny 中的规则。因此,只要应用程序在编译时链接了 libwrap 库,就可以直接使用 tcp_wrappers 进行访问控制,而不需要额外的配置。

[root@ct7_node01 pam.d]# ldd /usr/sbin/sshd | grep libwrap
	libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fd835824000)

TCP Wrappers VS PAM

tcp_wrappers 并不是 PAM(Pluggable Authentication Module)中的一个模块。它是一种独立的访问控制机制,主要通过 libwrap 库提供对 TCP 服务的访问限制。tcp_wrappers 通过 libwrap 函数实现对 /etc/hosts.allow/etc/hosts.deny 的解析,并根据规则决定是否允许客户端连接特定服务。

PAM 模块,如 pam_access.sopam_hosts.so,可以提供类似的基于主机的访问控制功能,但它们与 tcp_wrappers 是独立的。事实上,某些服务(如 sshd)本身直接集成了对 tcp_wrappers 的支持,而不依赖 PAM,因此可以在没有 PAM 模块的情况下直接使用 /etc/hosts.allow/etc/hosts.deny 文件来控制访问。

标签:deny,192.168,访问,hosts,allow,客户端
From: https://blog.csdn.net/zyqash/article/details/143337333

相关文章

  • nginx: [emerg] "user" directive is not allowed here in /etc/nginx/conf.d/nginx.c
    昨日测试使用dockerfile搭建nginx,遇到了报错:nginx:[emerg]“user”directiveisnotallowedherein/etc/nginx/conf.d/nginx.conf:1。网上没搜到相关的原因,今日找到原因,记录一下一、配置描述我的目录层级是这样的我的Dockerfile是这样的FROMnginx:latestEXPOS......
  • github下载加速[findstr修改hosts]
    @echooffremcolor1fsettitle=github下载加速[修改hosts]title%title%set"HOSTS_PATH=%windir%\system32\drivers\etc\hosts"REM备份原始的hosts文件copy"%HOSTS_PATH%""%HOSTS_PATH%.bak"rem使用findstr获取最后一行setnumber=0for/f"de......
  • pbootcms访问页面出现PHP Fatal error: Allowed memory size of 13421
    问题描述客户在使用PbootCMS时,访问首页出现以下错误:PHPFatalerror:Allowedmemorysizeof134217728bytesexhausted(triedtoallocate262144bytes)inxxx\core\database\Sqlite.phponline173PHPFatalerror:Allowedmemorysizeof134217728bytesexh......
  • cargo deny 插件
    cargodeny2024-10-18插件Rust它专门用于帮助Rust开发者检查项目依赖项的安全性、许可证合规性、多版本依赖管理等.执行cargodenycheck启用检查.deny.toml文件基本配置:#关于advisories部分的更多文档可以在这里找到:#https://embarkstudios.github.io/cargo-d......
  • 电脑如何屏蔽网站?使用浏览器或者 Hosts 文件都可以
    在使用互联网的过程中,用户有时可能会遇到需要屏蔽特定网站的情况。那么电脑如何屏蔽一个网站呢?下面就总结了一些电脑屏蔽网站的不同方法。如何屏蔽网站屏蔽网站的方法多种多样,取决于设备、操作系统和浏览器的不同。以下是一些常见的屏蔽网站的方式。Windows在Windows操作......
  • Safari Webkit, NotAllowedError: The request is not allowed
    使用tauriv2,跑前后端项目学习时,遇到这条报错:UnhandledPromiseRejection:NotAllowedError:Therequestisnotallowedbytheuseragentortheplatforminthecurrentcontext,possiblybecausetheuserdeniedpermission.测试代码console.log(navigator.userAge......
  • Android SELinux——allow语句参数(五)
           通过上一篇文章我们知道,TE(TypeEnforcement,类型强制)的allow语句中主要包括主体(source)、对象(target)、类别(class)和权限(permissions),这里我们就来看一下其中的参数信息。一、参数详解1、主体        在SELinux的上下文中,主体类型source是指发起访......
  • SOMEIP_ETS_164: SD_SubscribeEventgroup_with_unallowed_option_ip_2
    测试目的:验证DUT能够拒绝一个在请求中包含错误参数(端点选项中包含无效IPv4地址,即111.111.111.111)的SubscribeEventgroup消息,并以SubscribeEventgroupNAck作为响应。描述本测试用例旨在确保DUT遵循SOME/IP协议,当接收到一个在端点选项中包含无效IPv4地址(111.111.111.111)的S......
  • DBeaver 连接 mysql 报错:Public Key Retrieval is not allowed
    前言DBeaver连接mysql报错:PublicKeyRetrievalisnotallowed遇到"PublicKeyRetrievalisnotallowed"错误时,通常意味着你正在使用的身份验证方法需要加密连接,但是没有正确地配置客户端或服务器来支持这种加密。解决第一种可以在连接字符串中添加 allowPublicKey......
  • mysql 连接失败:message from server: "Host 'xx.xxx' is not allowed to connect to t
    前言mysql连接失败:messagefromserver:"Host'192.168.xx.xxx'isnotallowedtoconnecttothisMySQLserver"解决错误信息表明你尝试从IP地址192.168.xx.xxx连接到MySQL服务器,但是该IP地址没有被授权连接权限。为了解决这个问题,你需要确保你的MySQL用户权......