当前位置: 首页 > news >正文

Linux中Apache网站基于Http服务的访问限制(基于地址/用户)

🏡作者主页:点击! 

👨‍💻Linux高级管理专栏:点击!

⏰️创作时间:2024年6月3日11点44分

🀄️文章质量:95分


为了更好地控制对网站资源的访问,可以为特定的网站目录添加访问授权。本节将分别介绍客户机地址限制和用户授权限制,这两种访问方式都应用于httpd.conf 配置文件中的目录区域范围内。

🫸1.客户机地址限制

通过Require配置项,可以根据主机的主机名或IP地址来决定是否允许客户端访问,在httpd服务器的主配置文件的<Location>,<Directory>,<Fires>,<Limit>配置段中均可以试用Reuire配置项来控制客户端的访问。试用Require配置,需要设置客户端地址以构成完整的限制策略,地址的形式可以是用IP地址,网络地址,主机名或域名,使用名称all 时候表示任意地址。

限制策略的常用格式:

Require all granted        表示允许所有主机访问

Require all denied        表示拒绝所有主机访问

Require local                 表示仅允许本地主机访问

Require [not] host <主机名或域名列表>:        表示允许或拒绝指定主机或域访问

Require [not] ip<ip地址或网段列表>:        表示允许或拒绝指定IP地址或网段访问

默认情况下httpd的访问全是是对所有客户机全开的

编辑主配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 

➡️允许访问限制

限制

基于IP地址限制,只允许192.168.93.112 主机访问

重启服务

该指令将限制对当前上下文(例如整个服务器或特定网站)的访问,仅允许来自指定 IP 地址的请求。

Apache 重新启动后,对 Web 服务器的访问将被限制为仅允许来自 IP 地址 192.168.93.112 的请求。来自任何其他 IP 地址的请求都将被拒绝。

测试

192.168.93.112

192.168.93.113

访问出现403的情况

⬅️禁止IP访问

禁止192.168.93.112 访问 其余所有都可以访问

限制

编辑配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 

systemctl restart httpd
重启Httpd服务
  • Require all granted :该行默认允许任何IP地址访问。
  • Require not ip 192.168.93.112 :此行专门拒绝对 IP 地址 192.168.93.112 的访问。
测试

192.168.93.112 无法访问因为我们 设置了拒绝的流量

报错403无法访问

192.168.93.113访问是可以的 因为我们没有拒绝它访问httpd

🫷2.用户授权限制

Apache HTTP Server (httpd) 中的用户授权限制涉及控制谁可以访问 Web 服务器上的特定资源。这对于维护安全性并确保只有授权用户才能访问敏感数据或功能至关重要。

🕉️创建用户密码

htpasswd -c /etc/httpd/conf/.awspwd smqnz

将在 /etc/httpd/conf/ 目录中创建一个名为 .awspwd (隐藏文件)的新密码文件,并使用哈希密码添加名为 smqnz 的用户。 以下是该命令的详细说明:

  • htpasswd :这是一个实用程序,用于管理 Apache HTTP 身份验证的密码文件。
  • -c :此选项告诉 htpasswd 创建一个新的密码文件(如果它不存在)。
  • /etc/httpd/conf/.awspwd :指定新密码文件的路径和文件名。请注意,文件名以点 (.) 开头,使其成为目录中的隐藏文件。
  • smqnz :这是密码文件中新条目的用户名。
  • 需要注意的是 如果你在创建用户的时候 不需要-c 选项

编辑配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf AuthName "smqnz"AUthType BasicAuthUserFile /etc/httpd/conf/.awspwdRequire valid-user
  • AuthName "smqnz": 设置认证提示的名称。当用户尝试访问受保护的资源时,浏览器会显示这个名称,提示用户输入用户名和密码。

  • AuthType Basic: 指定基本认证方式。基本认证要求用户提供用户名和密码进行访问。

  • AuthUserFile /etc/httpd/conf/.awspwd: 指定存储用户名和密码的文件路径。这个文件需要使用 htpasswd 工具来创建和管理。

  • Require valid-user: 允许所有在 AuthUserFile 中存在的有效用户访问受保护的资源。

配置完成之后重启httpd服务

🔂访问测试

这次访问的时候需要输入账户和密码才能进行访问

用户就是我们刚刚创建的用户和密码

字符界面访问的时候

显示需要你进行身份验证

相关文章:

Linux中Apache网站基于Http服务的访问限制(基于地址/用户)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f468;‍&#x1f4bb;Linux高级管理专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年6月3日11点44分 &#x1f004;️文章质量&#xff1a;95分 为了更好地控制对网站资源的访问&#xff0c;可…...

滚动条详解:跨平台iOS、Android、小程序滚动条隐藏及自定义样式综合指南

滚动条是用户界面中的图形化组件&#xff0c;用于指示和控制内容区域的可滚动范围。当元素内容超出其视窗边界时&#xff0c;滚动条提供可视化线索&#xff0c;并允许用户通过鼠标滚轮、触屏滑动或直接拖动滑块来浏览未显示部分&#xff0c;实现内容的上下或左右滚动。它在保持…...

06 Linux 设备驱动模型

1、Overview Linux-2.6 引入的新的设备管理机制 - kobject 降低设备多样性带来的 Linux 驱动开发的复杂度,以及设备热拔插处理、电源管理等将硬件设备归纳、分类,然后抽象出一套标准的数据结构和接口驱动的开发,就简化为对内核所规定的数据结构的填充和实现驱动模型是 Linu…...

检测五个数是否一样的算法

目录 算法算法的输出与打印效果输出输入1输入2 打印打印1打印2 算法的流程图总结 算法 int main() {int arr[5] { 0 };int i 0;int ia 0;for (i 0; i < 5; i) { scanf("%d", &arr[i]); }for (i 1; i < 5; i) {if (arr[0] ! arr[i]) {ia 1;break;} }…...

java 原生http服务器 测试JS前端ajax访问实现跨域传post数据

后端 java eclipse 字节流转字符 package Httpv3;import com.sun.net.httpserver.Headers; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer;import java.io.IOException; import java.i…...

【机器学习】消息传递神经网络(MPNN)在分子预测领域的医学应用

1. 引言 1.1. 分子性质预测概述 分子性质预测是计算机辅助药物发现流程中至关重要的任务之一&#xff0c;它在许多下游应用如药物筛选和药物设计中发挥着核心作用&#xff1a; 1.1.1. 目的与重要性&#xff1a; 分子性质预测旨在通过分子内部信息&#xff08;如原子坐标、原…...

Python Flask实现蓝图Blueprint配置和模块渲染

Python基础学习&#xff1a; Pyhton 语法基础Python 变量Python控制流Python 函数与类Python Exception处理Python 文件操作Python 日期与时间Python Socket的使用Python 模块Python 魔法方法与属性 Flask基础学习&#xff1a; Python中如何选择Web开发框架&#xff1f;Pyth…...

Vue10-事件修饰符

一、示例&#xff1a;<a>标签不执行默认的跳转行为 1-1、方式一 <a href"http://www.baidu.com" onclick"event.preventDefault();">点击我</a> 1-2、方式二 1-3、方式三&#xff1a;事件修饰符 二、Vue的六种事件修饰符 2-1、prevent&…...

oracle中如何查询特定日期?

1. select last_day(to_date(20230101,YYYYMMDD)) from dual; select last_day(to_date(V_END_DATE,YYYYMMDD)) from dual; --查询任意一天 当月的最后一天 2. select to_char(to_date(20230101,YYYYMMDD)-1,YYYYMMDD) INTO V_START_DATE FROM DUAL; select to_char(to_dat…...

Python使用rosbag使用getattr只能获取一层的数据,不能直接获取多层数据例如 a.b.c.d。使用for range写一个递归用来获取多层数据

使用for循环和range来遍历属性列表确实是一个更简单直观的方式&#xff0c;特别是不需要考虑性能优化和异常处理时。以下是使用for循环代替递归的示例代码&#xff1a; python def get_nested_attr(obj, attr_str): attrs attr_str.split(.) for attr in attrs: # 尝试获取下…...

LNWT--篇章三小测

问题1: BERT训练时候的学习率learning rate如何设置? 在训练初期使用较小的学习率&#xff08;从 0 开始&#xff09;&#xff0c;在一定步数&#xff08;比如 1000 步&#xff09;内逐渐提高到正常大小&#xff08;比如上面的 2e-5&#xff09;&#xff0c;避免模型过早进入…...

【NoSQL】Redis练习

1、redis的编译安装 systemctl stop firewalld systemctl disable firewalld setenforce 0 yum install -y gcc gcc-c make wget cd /opt wget https://download.redis.io/releases/redis-5.0.7.tar.gz tar zxvf redis-5.0.7.tar.gz -C /opt/cd /opt/redis-5.0.7/ # 编译 make…...

Git 和 Github 的使用

补充内容&#xff1a;EasyHPC - Git入门教程【笔记】 文章目录 常用命令配置信息分支管理管理仓库 概念理解SSH 密钥HTTPS 和 SSH 的区别在本地生成 SSH key在 Github 上添加 SSH key 使用的例子同步本地仓库的修改到远程仓库拉取远程仓库的修改到本地仓库拉取远程仓库的分支并…...

学习分享-断路器Hystrix与Sentinel的区别

断路器&#xff08;Circuit Breaker&#xff09;简介 断路器&#xff08;Circuit Breaker&#xff09;是一种用于保护分布式系统的服务稳定性和容错性的设计模式。它的主要作用是在检测到某个服务的调用出现故障&#xff08;如超时、异常等&#xff09;时&#xff0c;快速失败…...

社区物资交易互助平台的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;论坛管理&#xff0c;公告信息管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;论坛&#xff0c;求助留言板&#xff0c;公…...

19-Nacos-服务实例的权重设置

19-Nacos-服务实例的权重设置 1.根据权重负载均衡&#xff1a; 1.服务器设备性能有差异&#xff0c;部分实例所在及其性能较高&#xff0c;有一些较差&#xff0c;我们希望性能好的机器承担更多的用户请求 Nacos提供了权重配置来控制访问频率&#xff0c;权重越大则访问频率…...

R语言数据探索和分析23-公共物品问卷分析

第一次实验使用最基本的公共物品游戏&#xff0c;不外加其他的treatment。班里的学生4人一组&#xff0c;一共44/411组。一共玩20个回合的公共物品游戏。每回合给15秒做决定的时间。第十回合后&#xff0c;给大家放一个几分钟的“爱心”视频&#xff08;链接如下&#xff09;&a…...

Webix前端界面框架:深度解析与应用实践

Webix前端界面框架&#xff1a;深度解析与应用实践 Webix&#xff0c;作为一款功能强大的前端界面框架&#xff0c;近年来在开发社区中逐渐崭露头角。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;深入剖析Webix的特性、优势、应用实践以及面临的挑战&#xff…...

Qt基于SQLite数据库的增删查改demo

一、效果展示 在Qt创建如图UI界面&#xff0c;主要包括“查询”、“添加”、“删除”、“更新”&#xff0c;四个功能模块。 查询&#xff1a;从数据库中查找所有数据的所有内容&#xff0c;并显示在左边的QListWidget控件上。 添加&#xff1a;在右边的QLineEdit标签上输入需…...

新书推荐:2.2.4 第11练:消息循环

/*------------------------------------------------------------------------ 011 编程达人win32 API每日一练 第11个例子GetMessage.c&#xff1a;消息循环 MSG结构 GetMessage函数 TranslateMessage函数&#xff1a;将虚拟键消息转换为字符消息 DispatchMessage函数…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙

Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...

2.2.2 ASPICE的需求分析

ASPICE的需求分析是汽车软件开发过程中至关重要的一环&#xff0c;它涉及到对需求进行详细分析、验证和确认&#xff0c;以确保软件产品能够满足客户和用户的需求。在ASPICE中&#xff0c;需求分析的关键步骤包括&#xff1a; 需求细化&#xff1a;将从需求收集阶段获得的高层需…...

RushDB开源程序 是现代应用程序和 AI 的即时数据库。建立在 Neo4j 之上

一、软件介绍 文末提供程序和源码下载 RushDB 改变了您处理图形数据的方式 — 不需要 Schema&#xff0c;不需要复杂的查询&#xff0c;只需推送数据即可。 二、Key Features ✨ 主要特点 Instant Setup: Be productive in seconds, not days 即时设置 &#xff1a;在几秒钟…...

uniapp获取当前位置和经纬度信息

1.1. 获取当前位置和经纬度信息&#xff08;需要配置高的SDK&#xff09; 调用uni-app官方API中的uni.chooseLocation()&#xff0c;即打开地图选择位置。 <button click"getAddress">获取定位</button> const getAddress () > {uni.chooseLocatio…...