Squid代理的用户认证(基本认证、集成Windows域认证)

2023-10-26

Squid代理的用户认证(基本认证、集成Windows域认证)
 
2012-07-02  TsengYia#126.com
 
    关于Squid代理服务的用户验证,本文简要介绍了两种方法的实现:basic基本认证、ntlm域认证。
    basic认证采用账户数据文件的方式,能够对代理访问做简单的登录验证,从而实现用户控制。而ntlm认证依赖于已有的Windows域环境,Squid服务器本身需要加入域,而客户机只要以域用户登录,即自动通过代理验证,从而省去了域环境中客户机的反复验证过程,提高了代理访问的易用性。
 
##############################################################################  
 
系统环境:  
    Squid代理服务器(RHEL 6.2)——
        主机名:proxy.example.com
        IP地址:192.168.4.6/24
        主要软件包:squid-3.1.10-1.el6_1.1.i686、samba-winbind-3.5.10-114.el6.i686、samba-common-3.5.10-114.el6.i686
 
    域控制器(Win2008 R2)——
        主机名:w2k8.example.com
        IP地址:192.168.4.2/24
        主要软件包:Active Directory域服务
 
    测试用Web服务器(RHEL 5.5)——
        主机名:www.example.com
        IP地址:192.168.4.105/24
        主要软件包:httpd-2.2.3-43.el5
 
    测试用客户机(WinXP或Win7)——
        主机名:station110.example.com
        IP地址:192.168.4.110/24
        主要软件包:Internet Explorer 8.0
 
##############################################################################  
 
一、方式1:使用基本认证
 
1. 准备账户数据文件
    使用httpd提供的htpasswd工具,-c表示建库,首次添加用户时使用,省略-c时可用来改密码
[root@localhost ~]# htpasswd -c /etc/squid/passwd tsengyia
New password:
Re-type new password:
Adding password for user tsengyia
 
2. 调整squid.conf配置文件
[root@localhost ~]# vim /etc/squid/squid.conf   //参考 man cgconfig.conf
... ...
http_port 3128
hierarchy_stoplist cgi-bin ?
cache_dir ufs /var/spool/squid 200 16 256
cache_mem 128 MB
coredump_dir /var/spool/squid
visible_hostname proxy.example.com
####
auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 10      # 基本认证程序的子进程数
auth_param basic credentialsttl 2 hours    # 每次认证的TTL值
auth_param basic realm Squid Cache Server  # 认证领域字串,登录窗口中会显示
acl auth_user proxy_auth REQUIRED     # 将通过代理认证的用户定义为一个ACL
http_access allow auth_user      # 允许此ACL使用代理服务
acl all src 0.0.0.0/0.0.0.0
http_access deny all       # 默认策略设为拒绝
####
[root@localhost ~]# service squid restart
 
3. 在客户机中测试代理访问
    为IE浏览器配置代理,并访问测试用Web服务器,将会弹出认证登录框。
    必须验证成功(使用/etc/squid/passwd中的账户)方可正常访问网页,否则将提示被拒绝。
 
 
二、方式2:与Windows域集成认证
 
1. 将Squid服务器加入Windows域
    详见另篇《将Linux主机加入Windows域》:
 
2. 调整squid.conf配置文件
[root@localhost ~]# vim /etc/squid/squid.conf   //参考 man cgconfig.conf
... ...
####
auth_param ntlm program /usr/bin/ntlm_auth  --helper-protocol=squid-2.5-ntlmssp   //指定ntlm认证程序、使用的协议
auth_param ntlm children 10      //ntlm认证程序的子进程数
auth_param basic program /usr/bin/ntlm_auth  --helper-protocol=squid-2.5-basic   //替换基本认证程序
auth_param basic children 10      //基本认证程序的子进程数
auth_param basic credentialsttl 2 hours    //每次认证的TTL值
auth_param basic realm Squid Cache Server    //认证领域字串,登录窗口中会显示
acl DomainUsers proxy_auth REQUIRED     //将通过ntlm域认证的用户定义为一个ACL
http_access allow DomainUsers      //允许此ACL使用代理服务
acl all src 0.0.0.0/0.0.0.0
http_access deny all       //默认策略设为拒绝
####
[root@localhost ~]# service squid restart
 
3. 调整winbind服务的Socket目录权限
1)查看原有权限
    默认情况下,Squid服务对winbindd_privileged目录不具有访问权限:
[root@localhost ~]# ls -ld /var/lib/samba/winbindd_privileged/
drwxr-x---   2 root wbpriv 4096 7月  3  11:18  /var/lib/samba/winbindd_privileged/
    这可能会导致代理验证失败,日志消息类似如下:
[root@localhost ~]# tail /var/log/messages
... ...
Jul 2 11:35:27 proxy (ntlm_auth):  Login for user [example]\[tsengyia]@station110] failed due to [winbind client not authorized to use winbindd_pam_auth_crap. Ensure
permissions on /var/lib/samba/winbindd_privileged are set correctly.]
Jul 2 11:35:27 proxy (ntlm_auth):  [2012/07/02  11:35:27.365870, 0] utils/ntlm_auth.c:896(manage_squid_ntlmssp_request_int)
Jul 2 11:35:27 proxy (ntlm_auth):  NTLMSSP BH: NT_STATUS_ACCESS_DENIED
 
2)添加新的权限,允许squid程序访问
    建议不要使用chown、chmod来修改目录的基本属性和权限,否则可能导致winbind服务无法启动。
    这里采用setfacl工具来为squid服务程序的运行用户(squid)添加访问权限。
[root@localhost ~]# setfacl -m user:squid:r-x /var/lib/samba/winbindd_privileged/
[root@localhost ~]# service squid reload
 
4. 在客户机中测试代理访问
    为IE浏览器配置代理,并进行访问测试。
1)以域用户登录时
    若访问测试用Web站点(192.168.4.105),无需再次验证(已经通过域认证);
    在测试用Web服务器上,可以看到来自Squid代理服务器的访问记录。
2)未以域用户登录时
    若访问测试用Web站点(192.168.4.105),浏览器会弹出登录框,必须以域用户验证后才能访问;
    在测试用Web服务器上,同样可以看到来自Squid代理服务器的访问记录。
 
##############################################################################
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Squid代理的用户认证(基本认证、集成Windows域认证) 的相关文章

  • 如何从 C++ 程序中重新启动 Linux?

    我有一个 Qt 4 GUI 我需要在下拉菜单中提供一个选项 允许用户选择重新启动计算机 我意识到这对于以其他方式重新启动计算机的能力来说似乎是多余的 但选择需要保留在那里 我尝试使用 system 来调用以下内容 suid root she
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 如何使用 Cloud Init 挂载未格式化的 EBS 卷

    Context 我正在使用https wiki jenkins io display JENKINS Amazon EC2 Plugin https wiki jenkins io display JENKINS Amazon EC2 Pl
  • 在centos中安装sqlite3 dev和其他包

    我正在尝试使用 cpanel 在 centos 机器上安装 sqlite dev 和其他库 以便能够编译应用程序 我对 debian 比 centos 更熟悉 我知道我需要的库是 libsqlite3 dev libkrb5 dev lib
  • tcpdump 是否受 iptables 过滤影响?

    如果我的开发机器有iptables规则到FORWARD一些数据包 这些数据包是否被 tcpdump 捕获 我有这个问题 因为我知道存在其他链称为INPUT如果数据包路由到 它会过滤发往应用程序的数据包FORWARD链 它会到达吗tcpdum
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 如何查找哪个 Yocto 项目配方填充图像根文件系统上的特定文件

    我经常与 Yocto 项目合作 一个常见的挑战是确定文件为何 或来自什么配方 包含在 rootfs 中 这有望从构建系统的环境 日志和元数据中得出 理想情况下 一组命令将允许将文件链接回源 即配方 我通常的策略是对元数据执行搜索 例如gre
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • Linux 为一组进程保留一个处理器(动态)

    有没有办法将处理器排除在正常调度之外 也就是说 使用sched setaffinity我可以指示线程应该在哪个处理器上运行 但我正在寻找相反的情况 也就是说 我想从正常调度中排除给定的处理器 以便只有已明确调度的进程才能在那里运行 我还知道

随机推荐

  • 2021最新 阿里云搭建饥荒专用服务器

    前几天我一朋友在steam上邀请我一起玩饥荒 可是联机的时候 总是一卡一卡的 好不容易玩的正尽兴的时候 我朋友突然有事就离开了房间 好不容易打的怪 建的家 房主一退就不能再次玩了只能等待他回来 针对这样个的问题 我决定自己搭建饥荒的专有服务
  • 【matlab】:matlab中如何三维画球?

    首先介绍一个函数ellipsoid 这个函数是在三维立体空间画椭圆用的 这个函数参数如下 ellipsoid x y z x1 y1 z1 x y z代表了椭球的中心 x1 y1 z1代表了x y z方向的分量 然后如果是要画球的话 把这三
  • HTML5+CSS3小实例:简单又好看的加载动画效果

    HTML5 CSS3做一个简单又好看的加载动画效果 一个三色圆环转动 再加圆环内部文字转动 效果虽然简单 但第一次看到还是很惊艳的 最主要一点 代码真的超简单的 效果 源码
  • 曲线拟合

    问题解决 给你一个二维的序列 你如何用多项式进行曲线拟合 一阶直线拟合 二阶抛物线拟合 并非阶次越高越好 看拟合情况而定 曲线拟合 clear clc syms s 声明一个符号变量 详细参考 https jingyan baidu com
  • PicoDet代码学习记录

    推理步骤 picodet s 320 coco yml Infer py main gt run Trainer py init self model create cfg architecture Picodet py from conf
  • Ubuntu20.04 中已经安装 Pytorch 但 Import 报错 - 解决记录

    01 问题描述 笔者使用的是 Ubuntu 20 04 3 LTS 在使用 PyTorch 训练模型的时候 torch 模块引用失败 报错信息是 OSError home wang local lib python3 8 site pack
  • CUDA学习笔记——cudaDeviceSynchronize()的理解

    内核是操作系统提供软件对计算机硬件进行访问的软件 内核启动是异步的 这意味着在内核完成执行之前 他将在启动gpu进程后立即将控制权返回给cpu线程 而cpu线程的下一步是应用程序的退出 在应用程序退出时 其将输出发送到标准输出的功能由操作系
  • 会议论文和期刊论文在写作上有什么区别?有什么侧重点?

    作为一名科研工作者 无论你是初入圈内的 小萌新 还是久经沙场的 老将 写论文都是我们的必经之路 而要想论文投中 就需要我们的积极努力啦 其中 杂志社以及很多大型学术会议的征稿就是很好的一个途径哦 不过这两者的论文要求是否一致呢 又是否匹配我
  • cocos2d之Box2D详解 鼠标关节实现

    cocos2d之Box2D详解 鼠标关节实现 DionysosLai2014 5 7 我们经常要移动物理世界中的某个物体 比方说石头 木块等 如果我们直接改变这些物体的位置 让这些物体跟随我们手指移动 即使这样是可行的 却违反了物理世界的基
  • Ubuntu16.04下安装Android机顶盒(Android4.4.2)NDK交叉编译环境

    Ubuntu16 04下安装Android机顶盒 Android4 4 2 NDK交叉编译环境 文章目录 Ubuntu16 04下安装Android机顶盒 Android4 4 2 NDK交叉编译环境 一 前言 二 ndk下载 三 ndk安
  • 拦截器响应头中配置“Access-Control-Expose-Headers”实现跨域请求暴露token

    问题场景 和前端同事联调接口中 前端同事反映说在跨域请求的情况下无法获取token的值 后来找到解决办法 解决 1 在登录拦截器处理类中的响应对象 把token对象暴露出来即可 2 关键代码 response setHeader Acces
  • Java设计模式之单例模式_Demo

    单例模式 初识 单例模式 Singleton Pattern 是 Java 中最简单的设计模式之一 这种类型的设计模式属于创建型模式 它提供了一种创建对象的最佳方式 这种模式涉及到一个单一的类 该类负责创建自己的对象 同时确保只有单个对象被
  • LaTeX学习笔记

    在编辑公式的时候 可能会用到这个命令 begin array lcl end array 其中 lcl 表示左对齐 如果将 lcl 替换为 c 即 begin array c end array 则表示居中对齐 科研文献中常常需要使用eps
  • 文心一言更大的故事是在云计算

    3月16日 百度发布新一代大语言模型 生成式AI产品文心一言 展示了文心一言在文学创作 商业文案创作 数理推算 中文理解 多模态生成五大场景中的综合能力 生成式AI为科技创新带来无限想象 文心一言依托 百度AI大底座 而落地 由百度智能云对
  • ubutu下ros2实现小车仿真建模与目标检测

    1 安装ros2 这里使用小鱼的一键安装 根据自己的喜好安装 博主用的是ros2的foxy版本 wget http fishros com install O fishros fishros 2 下载代码 这里使用的是古月居的代码 http
  • 用Requests和正则表达式爬取豆瓣图书TOP250

    思路和上文大同小异 import requests from requests exceptions import RequestException import re import json headers User Agent Mozi
  • vue props设置默认值的基本方式

    vue官方文档解释 为该 prop 指定一个默认值 如果该 prop 没有被传入 则换做用这个值 对象或数组的默认值必须从一个工厂函数返回 默认值为字符串 props fieldString type String default 默认值为
  • Python如何绘制误差直方图?曲线的阴影图?shade range graph

    问题抽象 Python如何绘制曲线的阴影图 建议的方案 flights sns load dataset flights flights head sns lineplot data flights x year y passengers
  • 基于stm32蓝牙接收信息并显示在OLED上

    两个单片机基于蓝牙连接通信 可以使能串口 把蓝牙当作串口来使用 例如 蓝牙通过串口发送信息 蓝牙通过串口接收信息 这样就可以使两个单片机进行通信 下面代码是基于STM32蓝牙接收另外一块单片机蓝牙发送过来的温湿度信息 并显示在OLED上 主
  • Squid代理的用户认证(基本认证、集成Windows域认证)

    Squid代理的用户认证 基本认证 集成Windows域认证 2012 07 02 TsengYia 126 com 关于Squid代理服务的用户验证 本文简要介绍了两种方法的实现 basic基本认证 ntlm域认证 basic认证采用账户