Linux下通过Windows的ISA代理认证上网

21 篇文章 0 订阅
4 篇文章 0 订阅

ISA的http代理有2种形式:

一种是基本的认证方式,即base认证,具体表现为如果http的请求头里没有base_authenticate字段则会返回401错误;要进行base认证的方法很简单,直接把预先提供好的用户名和密码通过base64加密,然后作为http请求头的base_authenticate字段对应的值即可。
一种是基于Windows域用户的身份认证,具体表现为如果http的请求头中没有proxy_authenticate字段则会返回407错误;要进行Windows认证则比较繁琐,需要至少3次握手才能实现一次http请求【可见网速会损耗】,请求的过程类型tcp链接,主要就是对内容进行特定的动态加密,保证用户的身份有效且不易被破解。通常ISA服务可以支持多个认证方式,选择任意一个均可: 了解更多详情见 这里
Proxy-Authenticate: Negotiate 
Proxy-Authenticate: Kerberos 
Proxy-Authenticate: NTLM 


不能上网的原因:

而实际上linux下的代理设置只能支持base认证方式,所以如果想要linux机器能通过ISA的Windows用户身份认证的话,则必须要再加一个中间代理,才能实现全网的http请求有效,否则的话只能部分程序能用isa代理服务,比如火狐浏览器,因为它已经内嵌了一个代理程序【其支持的认证方式是Negotiate】,如果发现返回的http头是需要用户认证,则会根据相应的代码来自动进行认证的。


解决方法:

当然,这样的问题很多前辈们早就遇到并已经解决了,通过介绍知道有一个ntlmaps的工具可以实现,【其中NTLM就是其所支持的认证方式】,于是就下了一个进行了简单的配置后就好使了,而且是python编写的,好处嘛:开源,跨平台!其下载地址见: 这里


附配置文件详解(英文不过关,有些信息理解错误,导致配置不好用,最后还是花了不少时间看源码才解决的问题,郁闷)

#========================================================================
[GENERAL]
#NTLM程序要监听的端口
LISTEN_PORT:5865  
#实际要需进行验证的代理服务器IP
PARENT_PROXY:192.168.80.20 
#实际代理服务器的端口号
PARENT_PROXY_PORT:8080 
#连接实际代理的超市时间,单位为秒
PARENT_PROXY_TIMEOUT:15  
#是否允许其他机器链接该ntlm代理访问外部网络,0为不允许,1为允许任意机器通过该代理对外部访问,只是都会用的你配置文件里的用户
ALLOW_EXTERNAL_CLIENTS:0  
#友好的ip,只在上一个设置为0时生效,设置只有特定的ip才可以通过该代理对外部访问
FRIENDLY_IPS:192.168.96.98 192.168.96.6   
#是否打开url访问日志,为1时会在url日志中记录所有url的访问记录
URL_LOG:0   
#该代理所支持的最大链接数,其实就是该代理允许同时起几个线程来跑远程代理
MAX_CONNECTION_BACKLOG:5   
#========================================================================
[CLIENT_HEADER]
#在这里设置该代理向实际代理发送http请求时的头部信息,还可以自己加其它的http头信息
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*
#User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)
#上面的User-Agent是win98,通常使用下面的这个
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT5)
Accept-Encoding: gzip, deflate
#========================================================================
[NTLM_AUTH]
#本地机器的名字,为空时会取允许机器的机器名,可以使用别人的机器名
NT_HOSTNAME:
#本地机器所在的windows域,不区分大小写
NT_DOMAIN:domainname
#本地域中的有效用户名
USER:domain username
#本地域用户对应的密码
PASSWORD:domain user's password
###########################################################
##这里是认证的主要配置,配合下面的NTLM_FLAGS一起使用。共有下面3个有效组合,如果均为0时默认会使用下面的第一种情况
# 仅LM_PART为1时,NTLM_FLAGS为06820000
# 仅NT_PART为1时,NTLM_FLAGS为05820000
# LM_PART和NT_PART均为1时,NTLM_FLAGS为07820000
###########################################################
LM_PART:1
NT_PART:1
NTLM_FLAGS: 07820000
#转换基本认证为ntlm认证,默认设置为0即可;
#为1时该代理将不使用此配置文件中的用户名和密码,而是从客户端的http请求头中的base认证内容中获取
NTLM_TO_BASIC:0
#========================================================================
[DEBUG]
#是否打开进行NTLM认证时所进行的通信内容
DEBUG:0
#是否打开客户端和实际代理代理服务器的请求信息
BIN_DEBUG:0
#是否打开关键时间段日志
SCR_DEBUG:0
#是否打开进行NTLM认证时的认证信息的调试信息,包括message1,message2,message3;对于计算和调试ntlm信息格式有用
AUTH_DEBUG:0


使用:

根据目录下的配置说明配置好了,测试是否可用,不可用的话,确认一下用户名密码是否正确,还有认证方式的3种组合,都可以试试了,我就是没有一个个试,才费了好久时间,成功后在/etc/rc.local文件中添加一个自动启动的命令即可。

/path/to/your/ntlm/main.py &


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上帝De助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值