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

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 &

=======================================================================================

先决条件

Python语言的翻译版本1.5.2或更高。

 

安装NTLMAPS

 

下载最新的稳定版本ntlmaps – 0.9.9.0.1.tar.gz源文件从 ntlmaps.sourceforge.net

安装NTLMAPS

 

运行以下命令解压缩下载的文件:

tar xvfz ntlmaps-0.9.9.0.1.tar.gz -C /usr/local/bin

 

运行下面的命令来创建一个链接:

 

ln -s /usr/local/bin/ntlmaps-0.9.9.0.1 /usr/local/bin/ntlmaps

运行命令备份ntlmaps:

 

cp -a /usr/local/bin/ntlmaps/server.cfg /usr/local/bin/ntlmaps/server.cfg-default

 

运行下面的命令来编辑NTLMAPS:

vi /usr/local/bin/ntlmaps/server.cfg

 

配置NTLMAPS

默认NTLMAPS端口5865,你可以把它改成任何端口。改变默认端口,请记住修改后做如下保存(例如):

 

LISTEN_PORT:5865

PARENT_PROXY:your.isa.server.name

 

PARENT_PROXY_PORT:your.isa.server.port

 

ALLOW_EXTERNAL_CLIENTS:1

FRIENDLY_IPS:your.client.ip1 your.client.ip2

NT_HOSTNAME:your.ntlmaps.server.name

NT_DOMAIN:your.domain

USER:your.nt.username

PSAAWORD:your.nt.password

 

开始NTLMAPS

 

运行下面的命令启动NTLMAPS:

/usr/local/bin/ntlmaps/main.py -c /usr/local/bin/ntlmaps/server.cfg &

 

系统配置

你可以设置代理在/ etc / profile文件修改变量如下(tested with curl,elinks,lynx and wget):

 

export http_proxy=http://127.0.0.1:5865

 

用户界面的Web浏览器配置

你可以使用以下信息来配置你的网络浏览器:

Proxy IP address: 127.0.0.1

Proxy IP port: 5865

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值