国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

借助Squid代理服務器,建立靈活的訪問控制系統

譯文
網絡
并非只有大企業和核實驗室才需要互聯網訪問策略和執行該策略的手段。我家制定有互聯網訪問策略,而我用來執行該策略的方法適用于幾乎任何企業組織。拿我家來說,我倒不過于擔心外部安全威脅。

并非只有大企業和核實驗室才需要互聯網訪問策略和執行該策略的手段。我家制定有互聯網訪問策略,而我用來執行該策略的方法適用于幾乎任何企業組織。拿我家來說,我倒不過于擔心外部安全威脅。我們的網絡在NAT路由器后面,無線網絡使用了相當復雜的密碼。我們的工作站不是Linux電腦,就是打上相應補丁的Windows電腦。不,我們擔心的問題恰恰來自網絡內部:孩子們喜歡玩網絡游戲,而這常常妨礙其他事務和家庭作業。

我們還擔心,孩子們無意中瀏覽到不該訪問的網絡內容。當然,我們不是在保護什么核機密或知識產權,而是讓全家人都能夠順利使用網絡,又沒有不必要的擔憂。

我和妻子通常不在乎孩子們玩在線游戲還是播放流媒體。但是如果家庭作業或其他事務沒完成,我們想要一種手段來禁止孩子訪問這些內容。問題在于,我們還施行在家教育,孩子們的教學內容大多也放在網上。所以,我們根本沒法阻止孩子訪問。我們需要更靈活一點的方法。

我著手解決這個問題時,列出了想要完成的幾個目標:

1. 我不想讓管理孩子的互聯網訪問成為一項全職工作。我想要能夠制定策略,然后執行策略。

2. 我妻子不想知道如何登錄、如何修改配置文件以及如何重啟代理守護程序。她只需要運行瀏覽器、勾選幾個方框就能完事。

3. 我不想編寫太多的代碼。我愿意編寫一點點代碼,但要是功能已經有了,我可沒興趣白費力氣做重復工作。

4. 我想能夠執行對我家來說很合理的幾乎任何策略。

5. 如果有人將筆記本電腦帶到外面去,我不希望影響他們訪問互聯網。

我確信并非只有我家才對這樣的結果有興趣。然而,我假設在其他企業組織可能沒有意義的一幕:我的孩子不會采取任何高明的措施來規避我們制定的策略。然而,要是孩子果真規避策略,我確實保留針鋒相對的權力。

為了撰寫本文,只要這個假定導致配置在較復雜的環境下可能毫無意義,我就會試著討論幾個辦法,好讓你可以加強配置。

我找不到市面上哪一款軟件包異常靈活,足以完成我想要實現的任務,又足夠易于使用,那樣我和妻子沒必要花大力氣來使用它。我明白,我只需要稍微編寫一點代碼,Squid代理服務器有望實現我想要實現的功能。我編寫的代碼會告訴代理服務器如何處理接到的每個請求。代理服務器會完成用戶請求,或者向用戶發送網頁,表明用戶試圖訪問的網站受到了阻擋。這就是代理將執行我們選擇的任何策略的方式。

我認定,我希望能夠為家人提供四種互聯網訪問級別當中的一種。在兩種極端情況下,擁有“允許”訪問權的家人可以隨意訪問網站,而訪問權“被阻止”的家人無權隨意訪問網站。比如說,我和妻子就擁有“允許”訪問權。要是禁止某個孩子上網,我們只要將他設為“阻止”狀態。

然而,能夠允許孩子只能訪問事先確定的網站列表(比如說用于教學內容)也許是明智之舉。這種情況下,我們需要“僅限白名單”訪問級別。最后,我打算采用一種“過濾”的訪問級別,那樣我們在控制訪問方面能做得更精細一點,阻止音樂下載、Flash游戲和Java小應用程序之類的內容。這是孩子通常擁有的訪問級別。然后我們可以說“不再玩游戲”,讓代理服務器執行該策略。

由于我不想為這一切編寫一個實際的界面,于是就使用phpMyAdmin來更新數據庫和設定策略(圖1)。為了授予特定的訪問級別,我只要更新格網中對應的單元,1表示開啟,0表示關閉。

 借助Squid代理服務器,建立靈活的訪問控制系統

圖1:更改訪問策略的phpMyAdmin界面

執行策略還需要一番客戶機配置,我稍后會加以討論。然而,我還要討論使用OpenDNS來過濾掉我不愿花時間來測試和過濾的內容。這是縱深防御體系的一個典例。

我配置了OpenDNS,過濾掉沒想過要改變想法的內容。我認為我家沒有任何理由能夠訪問約會網站、賭博網站或色情網站(圖2)。雖然不盡如人意,但OpenDNS的人員在過濾這類內容方面做得相當好,我自己沒必要做任何測試工作。

 借助Squid代理服務器,建立靈活的訪問控制系統

圖2:OpenDNS可過濾掉顯然不妥的內容

我在前面提到,這會需要一番客戶機配置。大多數Web瀏覽器允許你配置瀏覽器,以便使用代理服務器來訪問互聯網。最簡單的辦法就是勾選復選框,開啟代理訪問功能。然而,要是我的孩子將筆記本電腦帶到圖書館,而我們的代理系統在圖書館無法使用,他們就沒法訪問互聯網,這就違反了第五個目標。于是,我決定使用大多數現代瀏覽器支持的自動代理配置。這就需要我編寫一個JavaScript函數,確定如何來訪問網站,是直接訪問還是通過代理來訪問(代碼片段1)。

代碼片段1:自動代理配置腳本

1 function FindProxyForURL(url, host) {

2

3 if (!isResolvable("proxy.example.com") {

4 return "DIRECT";

5 }

6

7 if (shExpMatch(host, "*.example.com")) {

8 return "DIRECT";

9 }

10

11 if (isInNet(host, "10.0.0.0", "255.0.0.0")) {

12 return "DIRECT";

13 }

14

15 return "PROXY 10.1.1.158:3128; DIRECT";

16 }

每當瀏覽器訪問網站,它會調用FindProxyForURL()函數,看看應該使用什么方法來訪問網站:是直接訪問,還是通過代理訪問。代碼片段1中顯示的函數僅僅是個例子,不過它演示了幾種值得一提的使用場合。從第15行可以看出,你能返回分號隔開的列表,該列表列出了使用的方法。瀏覽器會依次逐一嘗試。在這種情況下,如果代理碰巧訪問不了,你可以回退到直接訪問該網站的辦法。在比較嚴格的環境下,這可能不是正確的訪問策略。

在第11行上,你能發現我確??梢栽谖壹业木钟蚓W上直接訪問網站。在第7行上,我演示了如何測試特定的主機名稱。有幾個網站我通過工作站上的VPN隧道來訪問,所以我就無法使用代理服務器。最后在第3行上,你能看到蠻有意思的東西。這里,我測試查看某個主機名稱是否可以解析成IP地址。我配置了局域網的DNS服務器來解析該名稱,但是其他DNS服務器就無法解析。這樣一來,孩子們將筆記本電腦帶到家庭網絡外面后,瀏覽器不會試著使用代理服務器。當然,我們完全可以切換故障、使用直接訪問方法,就像我們在第15上行做的那樣,但是故障切換需要時間。

比較懂行的用戶有可能規避代理自動配置。針對不同瀏覽器的一些插件可以防止用戶更改該配置。然而,這無法阻止用戶安裝新的瀏覽器或開啟新的火狐配置文件。想執行該策略,萬無一失的方法就是在網關路由器處執行:只要設定一條防火墻規則,阻止除代理服務器之外的任何IP地址訪問互聯網。如果需要的話,甚至可以為特定的客戶機/主機組合來設定防火墻規則。

你給網關路由器添加防火墻規則時,可能忍不住想配置路由器,以便通過代理服務器轉發所有的網絡流量,組成經常所謂的透明代理服務器。然而,據RFC 3143認為,這并不是推薦的配置,因為它常常會擾亂瀏覽器緩存和歷史記錄等內容。

所以前面已討論了客戶機、DNS和可能的路由器配置,現在就該看一看Squid代理服務器的配置了。安裝本身相當簡單直觀。我就使用了發行版的程序包管理系統,所以在此不作討論。Squid代理服務器提供了可以開啟的許多設置,以便優化緩存和互聯網連接。盡管性能改進是實施代理服務器的一個附帶好處,但是那些配置選項不在本文探討范圍之內。為了將我的代碼接入到系統,只需要更改一處配置。只要編輯/etc/squid/squid.conf文件,添加下面這一行即可:

redirect_program /etc/squid/redirector.pl

這一個指令實際上告訴Squid代理服務器“詢問”我的程序如何處理客戶機提出的每個請求。

程序邏輯相當簡單:

1. 偵聽STDIN、接收請求。

2. 解析請求。

3. 根據策略做出決定。

4. 將答復返回給代理服務器。

不妨看一下代碼片段2中的示例代碼。

代碼片段2:代理重定向器

1 #!/usr/bin/perl

2

3 use DBI;

4

5 $blocked = "http://192.168.1.10/blocked.html";

6

7 my $dbh = DBI->connect("dbi:mysql:authentication:host=

↪192.168.1.10", "user", "password") || die("Can\'t

↪connect to database.\n");

8

9 $|=1;

10

11 while () {

12 my($sth, $r, $c);

13 my($url, $client, $d, $method, $proxy_ip, $proxy_port);

14

15 chomp($r = $_);

16

17 if ($r !~ m/\S+/) { next; }

18

19 ($url, $client, $d, $method, $proxy_ip, $proxy_port)

↪= split(/\s/, $r);

20

21 $client =~ s/\/-//;

22 $proxy_ip =~ s/myip=//;

23 $proxy_port =~ s/myport=//;

24

#p#

25 $sth = $dbh->prepare("select * from web_clients

↪where ip=\'$client\'");

26 $sth->execute();

27 $c = $sth->fetchrow_hashref();

28

29 if ($c->{blocked} eq "1") {

30 send_answer($blocked);

31 next;

32 }

33

34 if ($c->{whitelist_only} eq "1") {

35 if (!is_on_list("dom_whitelist", $url)) {

36 send_answer($blocked);

37 next;

38 }

39 }

40

41 if ($c->{filtered} eq "1") {

42 if ($c->{games} eq "0") {

43 # Check URL to see if it's

↪on our games list

44 }

45

46 if ($c->{flash} eq "0") {

47 # Check URL to see if it looks

↪like flash

48 }

49

50 send_answer($url);

51 next;

52 }

53

54 if ($c->{open} eq "1") {

55 send_answer($url);

56 next;

57 }

58

59 send_answer($url);

60 next;

61 }

62

63 exit 0;

64

65 #############################################################

66

67 sub send_answer {

68 my($a) = @_;

69 print "$a\n";

70 }

71

72 sub is_on_list {

73 my($list, $url) = @_;

74 my($o, @a, $i, @b, $b, $sth, $c);

75

76 $url =~ s/^https*:\/\///;

77 $url =~ s/^.+\@//;

78 $url =~ s/[:\/].*//;

79

80 @a = reverse(split(/\./, $url));

81

82 foreach $i (0 .. $#a) {

83 push(@b, $a[$i]);

84 $b = join(".", reverse(@b));

85

86 $sth = $dbh->prepare("select count(*) from

↪$list where name=\'$b\'");

87 $sth->execute();

88 ($c) = $sth->fetchrow_array();

89

90 if ($c > 0) { return $c; }

91 }

92

93 return $c+0;

94 }

95

主循環在第11行開始,它從STDIN讀取。第11行至第24行主要涉及解析來自Squid代理服務器的請求。在第25行至第28行,程序查詢數據庫,看看某個客戶機有什么樣的權限。第29行至第57行是查看從數據庫讀取了什么樣的權限,然后返回相應值。在客戶機被允許“過濾”訪問互聯網的情況下,我在頭腦中對邏輯有了輪廓。我不想本文糾纏于瑣碎的代碼。更重要的是演示Squid代理重定向系統的結構和一般邏輯,而不是提供完整代碼。不過你會發現,我只要用短短幾行代碼和正則表達式,就能實施幾乎任何想得到的訪問策略。

從第67行開始的send_answer()函數其實眼下沒有多大作用,不過以后,我可以在這里相當輕松地添加一些日志功能。

從第72行開始的is_on_list()函數也許有點意思。該函數拿來客戶機試圖訪問的主機名稱后,將它細分成子域列表。然后,它檢查那些子域是否列在數據庫中,數據庫名稱作為參數來傳遞。這樣一來,我只要把example.com放入到數據庫,它就會匹配example.com、www.example.com或webmail.example.com。

通過傳遞不同的表名稱,我就能使用同樣的匹配算法來匹配許多不同的訪問控制列表。

正如你所見,代碼其實并不是很復雜。但是由于添加了一點復雜性,我應該能夠執行能想得到的幾乎任何訪問策略。然而,有一個方面需要加以改進。就處理的每個訪問請求而言,程序要訪問數據庫好幾次。這種操作的效率極其低下,等到你看到本文,我可能已經實施了某種緩存機制。

然而,緩存也會讓系統不太迅即響應訪問策略變更或訪問控制列表,因為我不得不等待緩存信息過期或重啟代理守護程序。

實際上,我見過值得一提的方法。大多數網站瀏覽器有各自的緩存機制。由于該緩存,如果你更改了代理服務器處的訪問策略,客戶機并不總是意識到變更。在“敞開”訪問權的情況下,客戶就需要刷新緩存,那樣才能訪問之前受阻的內容。在限制訪問的情況下,該內容在緩存過期之前仍可能可用。一個解決辦法就是,將本地緩存大小設為0,就依賴代理服務器的緩存。

此外,一旦客戶機經過配置、與本地網絡上的代理服務器對話,就有可能換入不同的代理服務器,或者甚至以菊花鏈方式連接代理服務器,而客戶機不需要任何操作。這就帶來了這種可能性:比如說,使用Dan's Guardian進行內容過濾,另外還能控制訪問。

至此,大家可能會想我在控制方面有點過于嚴格了。然而,我家人把大量時間花在網上――有時太過分了。大多數時候,我家人在適度使用互聯網,但要是使用沒節制,我和妻子需要有一種手段來執行家規,又沒必要老是監控孩子們。

責任編輯:何妍 來源: 51CTO.com
相關推薦

2012-09-18 09:55:28

2019-04-08 08:39:47

Nginx代理服務器

2009-12-03 18:07:48

Squid代理服務器

2011-02-21 09:24:05

2020-08-02 15:00:40

SquidSSH系統運維

2019-06-18 08:27:37

Squid代理服務器IP代理池

2009-02-12 15:51:00

squid代理服務器web服務器

2010-11-15 14:46:04

linuxsquidsquidGuard

2024-02-20 14:53:01

2024-11-21 09:18:08

2009-02-27 14:12:00

socks5代理服務器服務器

2009-02-10 15:42:00

代理服務器代理服務器設置

2010-03-24 17:01:00

Nginx代理服務器

2009-12-16 16:41:44

Linux代理服務器

2009-02-12 15:43:00

CCProxy代理服務器

2009-08-18 11:04:50

代理服務器設置代理服務器地址

2011-04-20 16:59:31

2018-11-05 09:34:43

2018-04-17 12:10:40

2010-03-09 11:21:24

代理服務器工作原理域名服務器工作原理
點贊
收藏

51CTO技術棧公眾號

白白色 亚洲乱淫| 一本大道亚洲视频| 欧美国产日韩激情| 亚洲一区二区三区高清| 成人激情春色网| 日韩深夜福利| 最好看的2019年中文视频| 曰本三级在线| 欧美老女人在线| 二区三区在线| 午夜成人在线视频| 少妇**av毛片在线看| 中文字幕欧美一| 蜜臀久久99精品久久久酒店新书| 国产成人一级电影| 中文精品视频一区二区在线观看| 国内综合精品午夜久久资源| 亚洲一区二区中文| 在线中文一区| 国产综合精品一区二区三区| 欧美日韩岛国| 久久久com| 久久天堂成人| 亚洲成人蜜桃| 国产一区二区精品久久91| 99久re热视频精品98| 国产一区91精品张津瑜| av动漫在线免费观看| av影院午夜一区| 国产精品动漫网站| 国产精品你懂的| 免费亚色电影在线观看| 亚洲国产一区二区a毛片| 日本h片在线看| 一本一本大道香蕉久在线精品 | 亚洲国产视频网站| 新欧美整片sss第一页| 色噜噜夜夜夜综合网| h视频在线播放| 精品国产91洋老外米糕| 成人精品电影在线| 性欧美亚洲xxxx乳在线观看| 精品一区av| 久久精品一二三区| 成人性生交大合| 国产91色在线观看| 欧美日韩国产在线看| 国产视频二区在线观看| 亚洲成人网在线| 99久久999| 国产综合色香蕉精品| 亚洲中字黄色| 精品人妻人人做人人爽| 一区免费观看视频| 福利视频在线导航| 国产亚洲在线播放| 精品国产一区二区三区噜噜噜| 国产亚洲二区| a级高清视频欧美日韩| 高清视频在线www色| 精品剧情v国产在线观看在线| 国产成+人+综合+亚洲欧美| 91成品人片a无限观看| 亚洲一区二区三区免费在线观看| 草草草视频在线观看| 亚洲免费在线观看| 欧美野外wwwxxx| 欧洲日本亚洲国产区| 国产日韩欧美在线播放不卡| 国产精品久久久久9999小说| 欧美日韩在线三区| 国产成人免费av一区二区午夜 | 在线国产99| 国产精品女同一区二区三区| 在线看的av网站| 伦理中文字幕亚洲| 一区在线观看| 国产精品97在线| 在线观看成人小视频| 波多野结衣亚洲一二三| 国产精品久久久久久久久久小说| 视频一区视频二区中文字幕| 99.玖玖.com| 亚洲第一男人天堂| 欧美手机视频| 日韩欧美猛交xxxxx无码| 婷婷成人激情在线网| 久久精品国产福利| 久久精品欧美| 亚洲激情欧美激情| 免费日韩电影| 国产日韩久久| 亚洲精品国产视频| 香蕉久久一区| 99re视频| 亚洲主播在线观看| 国产精品中文字幕久久久| 国产精品毛片久久| 热久久最新地址| 夜夜操天天操亚洲| 日韩三级网址| 国产精品国产精品国产专区不卡| 成人h精品动漫一区二区三区| 国产欧美高清视频在线| 国产91精品久| 国产成人99久久亚洲综合精品| 91美女视频在线| 国产va免费精品高清在线观看| 成人精品免费视频| sm久久捆绑调教精品一区| 97久久天天综合色天天综合色hd | 北条麻妃一区二区三区| 欧美成年黄网站色视频| 国产成人拍精品视频午夜网站| 99久久精品国产网站| 日本不卡1234视频| 久久人人爽爽人人爽人人片av| 亚洲亚洲人成综合网络| 老汉色老汉首页av亚洲| 欧美二区在线视频| 中文字幕av一区二区| 国产经典欧美精品| 啊啊啊久久久| 一区二区在线观看网站| 欧美精品一区男女天堂| 老司机精品视频网站| gogogogo高清视频在线| 久久久水蜜桃| 日韩一级片在线观看| 亚洲专区一区二区三区| 国产福利在线观看| 成人xxxx视频| 午夜电影一区二区三区| 精品免费久久久久久久| 日本二三区不卡| 亚洲欧美文学| 爱爱爱免费视频在线观看| 亚洲一区制服诱惑| 欧美丝袜美女中出在线| 国产真实久久| 欧美激情午夜| 日韩精品伦理第一区| 欧美一区二区三区公司| 日本不卡高清视频| 波多视频一区| 日韩在线视频在线观看| 欧美日韩国产123| 中文字幕在线免费不卡| 一区二区三区视频免费观看| av在线www| 国产在线精品日韩| 亚洲电影av在线| 国产成人在线视频网址| 中文成人在线| 污网站免费看| 成人黄色在线观看| 在线免费亚洲电影| 视频一区二区三区中文字幕| 草草在线观看| 国产精品亚洲a| 国产成人精品一区二区在线| 色吊一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 麻豆理论在线观看| 999香蕉视频| 国产精品久久久久99| 天天做天天摸天天爽国产一区 | 久久精品72免费观看| 精品123区| 成人狠狠色综合| 91精品国产一区二区三区动漫| 欧美一区二区三区电影| 国产99精品国产| 九九热精品视频在线观看| 国产露出视频在线观看| 青青草综合视频| 国产91色在线播放| 欧美日本在线播放| heyzo一本久久综合| 色综合天天爱| 波多野结衣亚洲| 毛片.com| 超碰成人在线免费观看| 欧美综合第一页| 精品国产污污免费网站入口 | 亚洲综合伊人| 深夜福利视频在线免费观看| 秋霞在线一区二区| 国产精品99久久久久久久久| 欧美成人午夜电影| 国产精品丝袜黑色高跟| 欧美精品一线| 欧美成a人片免费观看久久五月天| 亚洲网站情趣视频| 91视频成人免费| 96pao国产成视频永久免费| 国产亚洲一区二区精品| 欧美视频一区二区三区四区| 99视频精品免费视频| 亚洲经典在线|