如何定制Squid的PHP认证助手?

Forward Proxy

1 前言

一个问题,一篇文章,一出故事。
笔者需要使用PHP语言为Squid定制一个不一样的验证逻辑,于是整理此文。

2 最佳实践

2.1 环境配置

2.1.1 配置Squid环境

如何yum部署Squid?

2.1.2 配置php运行环境

dnf install php-cli

2.2 配置认证助手

2.2.1 创建认证脚本

vim /usr/lib64/squid/squid_helper.php

加入如下配置,

<?php
if (!defined("STDIN"))
{
        defind("STDIN",fopen("php://stdin","r"));
}

while (!feof(STDIN))
{
        $line = trim(fgets(STDIN));
        $fields = explode(' ',$line);
        $username = rawurldecode($fields[0]);
        $password = rawurldecode($fields[1]);
        if ($username == 'user' and $password == 'passwd')
        {
                fwrite(STDOUT,"OK\n");
        }
        else
        {
                fwrite(STDOUT,"ERR\n");
        }
}
?>

以上仅仅是范例脚本,你可以根据自己的需求使用不同的语言和不同的业务逻辑,脚本创建后,你可以使用如下命令测试,

php /usr/lib64/squid/squid_helper.php

测试向导如下,

user passwd
OK
user password
ERR

2.2.2 加载认证脚本

vim /etc/squid/squid.conf

加入如下配置,

auth_param basic program /usr/bin/php /usr/lib64/squid/squid_helper.php
auth_param basic children 20
auth_param basic realm Username and password
auth_param basic credentialsttl 5 hours
acl AuthenticatedUsers proxy_auth REQUIRED
http_access allow AuthenticatedUsers

加入配置后,你需要检查配置的语法并重载使配置生效,

squid -k check
systemctl reload squid

2.3 测试认证助手

export http_proxy="http://user:passwd@10.168.0.80:3128"
export https_proxy="http://user:passwd@10.168.0.80:3128"
curl http://www.cmdschool.org
curl https://www.cmdschool.org

参阅文档
========================
http://freesoftwaremagazine.com/articles/authentication_with_squid/

没有评论

发表回复

Forward Proxy
如何基于openSSH部署Socks代理服务?

1 前言 一个问题,一篇文章,一出故事。 笔者需要实现Socks代理服务以便于内网的电脑客户端可以通 …

Forward Proxy
如何修改Squid的日志格式?

1 前言 一个问题,一篇文章,一出故事。 笔者查看Squid的访问日志发现时间部分是时间戳,笔者感觉 …

Forward Proxy
如何配实现Squid多开实例同时运行?

1 前言 一个问题,一篇文章,一出故事。 笔者整理本文的原因是遇到Squid遇到需要在同一台服务器启 …