1. 程式人生 > >Linux下通過Windows的ISA代理認證上網

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 &


相關推薦

Linux通過Windows的ISA代理認證上網

ISA的http代理有2種形式: 一種是基本的認證方式,即base認證,具體表現為如果http的請求頭裡沒有base_authenticate欄位則會返回401錯誤;要進行base認證的方法很簡單,直接把預先提供好的使用者名稱和密碼通過base64加密,然後作為http請

Linux通過find命令進行rm文件刪除的小技巧

ase test sysconfig ger sdn tun 執行過程 fun alt 我們常常會通過find命令進行批量操作。如:批量刪除舊文件、批量改動、基於時間的文件統計、基於文件大小的文件統計等。在這些操作其中,因為rm刪除操作會導致文件夾結構變化,

linux通過yum倉庫安裝mysql

linux mysql 倉庫 環境:Centos6.5查看centos版本:[[email protected]/* */ ~]# cat /etc/redhat-release CentOS release 6.5 (Final)1.查看是否安裝了mysql[[email 

Linux通過vconfig配置vlan

strong str 都是 指定 ssa 註冊 chkconfig init add 初衷: 我在centos上面搭建了一個dhcp server,由於client發來的dhcp request是加了tag的,為了使dhcp server能夠正常response分給clie

Linux通過源碼編譯安裝程序

安裝程序 configure 系統目錄 install 命令 com 需要 figure .com ASK: Linux下通過源碼編譯安裝程序(configure/make/make install的作用) configure Linux 平臺有各種不同的配置,安裝時需

linux通過軟連接實現訪問項目路徑外面的資源

技術 虛擬目錄 color 相關 上傳文件 eclipse 擔心 成功 tail 在javaweb項目開發中,圖片上傳是個比較常見的場景。一般都是在項目路徑下建個文件夾,然後上傳到該文件夾下;這樣這個圖片就可以和靜態資源一樣被直接訪問。這樣的好處就是訪問這圖

Linux通過rdesktop遠程windows主機

rdesktopLinux下使用rdesktop命令,可完美遠程windows主機。實驗環境如下:OS版本:elementaryos-0.4.1-stable.20170814-x64本機環境:物理機一般有的Linux發行版的軟件中心,都會有Remmina遠程工具,比如國產deepin OS,使用起來也很方便

linux通過phpize為php在不重新編譯php情況安裝模塊memcache

memcache with tps emca 添加 pecl inux usr ron 通過phpize為php在不重新編譯php情況下安裝模塊memcache 1. 下載 wget http://pecl.php.net/get/memcache-2.2.4.tgz

linux配置squid代理

linux squid 代理工具、×××工具yum install -y squid (安裝squid服務)配置正向代理(企業中用於訪問控制等)vim /etc/squid/squid.conf (編輯squid配置文件) ...... acl http proto HTTP

(轉)Linux通過rsync與inotify(異步文件系統事件監控機制)實現文件實時同步

-a 推送 root started init.d log tool mysql同步 .tar.gz Linux下通過rsync與inotify(異步文件系統事件監控機制)實現文件實時同步原文:http://www.summerspacestation.com/linux%

Linux使用Nginx代理訪問json文件包404錯誤

方案 onf 圖片 代理 con 發現 404錯誤 image 解決 在網上看了很多,都說是IIS的問題,關鍵是使用servlet就可以正常訪問,使用Nginx就不行,最後發現是其他問題,解決方案如下: 1.確認配置的路徑是否正確,Nginx代理的路徑和你訪問的路徑。 2.

記錄linux通過對limits的設置來優化系統性能

pgrep 目前 接下來 total 滿足 執行 獲取 linux下 第一個 系統中子進程繼承父進程的系統限制。只有以root用戶運行的進程能任意修改限制。其它進程不能增加硬限制值。這樣在一個session中登錄進程設置的硬限制值影響該session中的所有進程。 當要優化

SpringBoot熱部署和linux通過vim修改jar裡面的檔案

解決問題: 1、在專案測試或者部署後,經常會遇到需要更改一些配置檔案或者java類,這時使用SpringBoot熱部署可以快速的修改後重啟,方便開發測試; 2、在專案上線後,會遇到一些需要修改的地方,使用linux下的vim工具可以快速的修改已部署好的專案。 一、引入熱部署依賴 &l

[轉載][old] linux 通過wine 執行windows程式包括IE

一、相關說明 Ubuntu9.10 舉例(因為它方便,N多東西直接線上安裝,省得編譯了),其他linux基本相同(不同的就是有些要進行原始碼安裝,但用到的軟體是一樣的),整個安裝我以經做成指令碼放方便下載安裝不過指令碼寫的比較簡單沒有做太多判斷到這裡下載:http://download.csdn

linux搭建socket5代理

VPN大家耳熟能詳,但是socks用到的人比較少,那什麼是socks呢?請看第二段或者百度百科,socks分別有4和5兩個版本,現在5為主流。工作中經常用VPN訪問國外,但是同時國內的速度又慢了,讓人很糾結,實際上這個時候可以考慮使用socks。指定某一個程式使用國外socks即可。這樣國內國外速度

Linux通過rdesktop連線Windows遠端桌面

rdesktop是linux下支援Windows遠端桌面連線的客戶端程式,在linux系統下可通過它遠端訪問Windows桌面,支援多種版本。rdesktop是sourceforge下支援GPL協議的一個開源專案,採用RDP(Remote Desktop Protocol,遠端桌面協議),幾乎可以連線wind

Linux nginx反向代理與負載均衡

前面幾篇記錄下nginx的基本運功,代理伺服器的訪問,這裡來試驗下nginx的反向代理。 反向代理(Reverse Proxy)方式是指以 代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時

Linux通過shell進MySQL執行SQL或匯入指令碼

這條命令表示通過使用者名稱和密碼執行shell然後在shell裡面執行一個建表語句: USER="root" PASS="root" mysql -u $USER -p$PASS <<EOF 2> /dev/null CREATE DATABASE um; EOF 下面的命令在登陸My

linuxNginx反向代理多個tomcat(單獨訪問或叢集配置) Nginx upstream的5種權重分配方式

第一步需要在你的伺服器上安裝Nginx,請檢視此文章:https://blog.csdn.net/u013641234/article/details/73838472 安裝完成以後,啟動Nginx,看看是否能夠正常訪問, 然後開始配置Nginx反向代理 : 同一臺伺服器或多臺伺服

Linux通過rdesktop遠端登陸Windows系統圖文詳解

rdesktop是一種客戶端程式,可以通過它在Linux系統下遠端訪問Windows桌面,而且支援多種版本,諸如NT 4 Terminal Server, 2000, XP, 2003, 2003 R2, Vista, 2008, 7, and 2008 R2等。(自動掛載以及YUM倉庫的建立詳細步驟如下)