国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于IPTABLES的Web認(rèn)證系統(tǒng)的實(shí)現(xiàn)

2009-03-10 09:50:26宋光慧郭建康
中國教育信息化 2009年2期
關(guān)鍵詞:防火墻

宋光慧 郭建康

摘 要:在Linux操作系統(tǒng)中,利用IPTABLES服務(wù)實(shí)現(xiàn)了防火墻、NAT功能,并將端口轉(zhuǎn)發(fā)規(guī)則和Web應(yīng)用服務(wù)相結(jié)合,實(shí)現(xiàn)了用戶Web認(rèn)證功能,保證了內(nèi)網(wǎng)計(jì)算機(jī)的安全。經(jīng)過測試,系統(tǒng)能夠高效穩(wěn)定地運(yùn)行,實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。

關(guān)鍵詞:防火墻 網(wǎng)絡(luò)地址轉(zhuǎn)換 端口轉(zhuǎn)發(fā) 訪問日志

中圖分類號:TP393.08 文獻(xiàn)標(biāo)識碼:B 文章編號:1673-8454(2009)03-0056-03

一、引言

隨著Internet的迅速發(fā)展,寬帶網(wǎng)絡(luò)的接入日益增多,Internet用戶的數(shù)量也迅速膨脹。尤其對于高校中的網(wǎng)絡(luò)接入數(shù)量也快速增加,學(xué)校中網(wǎng)絡(luò)管理人員面臨著IP地址缺乏、用戶訪問認(rèn)證、二級單位上網(wǎng)管理以及內(nèi)部網(wǎng)絡(luò)安全等一系列問題。特別是公安部門要求對上網(wǎng)用戶進(jìn)行身份認(rèn)證和上網(wǎng)記錄保存的問題,對網(wǎng)管人員提出了嚴(yán)格的要求。Linux操作系統(tǒng)的穩(wěn)定安全和網(wǎng)絡(luò)性能優(yōu)異等特色,使其成為廣大網(wǎng)管人員解決上述問題的首選。

IPTABLES是在Linux操作系統(tǒng)下基于2.4內(nèi)核版本之后集成的網(wǎng)絡(luò)安全工具,該工具實(shí)現(xiàn)了多種網(wǎng)絡(luò)安全功能,如:數(shù)據(jù)包過濾、狀態(tài)保持、NAT(Network Address Translation,網(wǎng)絡(luò)地址翻譯),以及抗攻擊等等。利用該工具可以在較低配置下的傳統(tǒng)PC機(jī)上實(shí)現(xiàn)安全穩(wěn)定、功能強(qiáng)大的防火墻+NAT系統(tǒng),因此它被企業(yè)和高校廣泛采用,成為一種比較成熟的技術(shù)。然而隨著對網(wǎng)絡(luò)安全性要求的日益提高,用戶認(rèn)證功能越來越受到重視,基于IPTABLES提供的上述功能卻不能滿足這一需求。

Squid是Linux平臺下最為流行的代理服務(wù)器,是解決用戶上網(wǎng)認(rèn)證的有效方法。但是Squid也存在著一些缺陷,如:命中率和效率相對低下;支持的協(xié)議類型有限;需要在客戶端計(jì)算機(jī)對瀏覽器或其他網(wǎng)絡(luò)軟件進(jìn)行設(shè)置;某些服務(wù)對代理訪問有限制等等,使其應(yīng)用受到很大局限。透明代理是NAT(IPTABLES)和代理(Squid)的完美結(jié)合,此種工作方式不需要在客戶端瀏覽器或其他網(wǎng)絡(luò)工具上進(jìn)行任何設(shè)置,用戶感覺不到代理服務(wù)器的存在。然而由于Squid不支持在透明代理模式下啟用身份認(rèn)證功能,所以它仍然不能解決用戶認(rèn)證問題,且Squid自身的性能依然存在缺陷。

二、系統(tǒng)應(yīng)用模塊

為了解決上述問題,依據(jù)透明代理的實(shí)現(xiàn)思路,即利用IPTABLES將發(fā)往80端口的數(shù)據(jù)包轉(zhuǎn)發(fā)到Squid服務(wù)器的3128端口,將上網(wǎng)認(rèn)證工作交給Squid處理的方法。該方法實(shí)現(xiàn)了基于IPTABLES的Web認(rèn)證系統(tǒng),它既發(fā)揮了IPTABLES服務(wù)NAT性能上的優(yōu)勢,又實(shí)現(xiàn)了用戶上網(wǎng)認(rèn)證功能。

該系統(tǒng)主要應(yīng)用了IPTABLES服務(wù)的防火墻功能、NAT功能、端口轉(zhuǎn)發(fā)功能,并利用Ulogd工具實(shí)現(xiàn)了IPTABLES的日志記錄功能。同時(shí)在Linux系統(tǒng)中部署了Tomcat服務(wù)器,用于實(shí)現(xiàn)用戶認(rèn)證和IPTABLES規(guī)則修改功能。

利用IPTABLES規(guī)則實(shí)現(xiàn)防火墻具有很高的靈活性和穩(wěn)定性,在本系統(tǒng)中防火墻安全政策定義為正面列表,即將INPUT、OUTPUT、FORWARD等規(guī)則設(shè)置為DROP來禁止所有的數(shù)據(jù)包通過,然后再分別設(shè)置規(guī)則來允許合法的數(shù)據(jù)包通過,這樣系統(tǒng)的安全性就被提高。NAT功能將每個(gè)內(nèi)網(wǎng)計(jì)算機(jī)節(jié)點(diǎn)的地址轉(zhuǎn)換成一個(gè)外網(wǎng)IP地址,使之能夠訪問外網(wǎng)的資源,采用該方式能有效地解決二級單位的上網(wǎng)問題。端口轉(zhuǎn)發(fā)功能也就是重定向,當(dāng)IPTABLES服務(wù)接收到一個(gè)數(shù)據(jù)包后,不是轉(zhuǎn)發(fā)這個(gè)包,而是將其重定向到系統(tǒng)上的某一個(gè)應(yīng)用程序,最常見的應(yīng)用就是和Squid配合使用,使其成為透明代理。Ulogd工具將IPTABLES的訪問日志記錄到Mysql數(shù)據(jù)庫中,便于對數(shù)據(jù)進(jìn)行分析和操作,同時(shí)也滿足了公安部對上網(wǎng)日志保存的要求,在本系統(tǒng)中依據(jù)數(shù)據(jù)庫中的日志記錄來判斷計(jì)算機(jī)的上網(wǎng)狀態(tài)。Tomcat容器是一款優(yōu)秀的Web服務(wù)器,它可與Java語言程序相結(jié)合,用來實(shí)現(xiàn)用戶認(rèn)證和對Linux系統(tǒng)sh腳本命令的操作,從而實(shí)現(xiàn)對IPTABLES規(guī)則的動(dòng)態(tài)設(shè)置。

三、系統(tǒng)功能及實(shí)現(xiàn)方法

1.網(wǎng)絡(luò)環(huán)境

網(wǎng)絡(luò)環(huán)境如圖1所示,是典型的三層網(wǎng)絡(luò)結(jié)構(gòu)。

接入層為Cisco2950設(shè)備,負(fù)責(zé)接入客戶端計(jì)算機(jī),并劃分VLAN;匯聚層為Cisco 3550設(shè)備,負(fù)責(zé)實(shí)現(xiàn)各個(gè)VLAN之間的互聯(lián)互通,并接入核心層設(shè)備Cisco3750。Linux服務(wù)器安裝雙網(wǎng)卡作為網(wǎng)關(guān),負(fù)責(zé)內(nèi)網(wǎng)與外網(wǎng)的連接。在本系統(tǒng)中內(nèi)網(wǎng)設(shè)為192網(wǎng)段,外網(wǎng)設(shè)為10網(wǎng)段,Linux服務(wù)器內(nèi)網(wǎng)網(wǎng)卡IP地址設(shè)為192.168.1.254(eth0),外網(wǎng)網(wǎng)卡IP地址設(shè)為10.80.1.100(eth1)。為了實(shí)現(xiàn)在內(nèi)網(wǎng)網(wǎng)段中的客戶端計(jì)算機(jī)能夠訪問外網(wǎng),需在核心層交換機(jī)Cisco3750上設(shè)置一條路由信息:ip route 0.0.0.0/0 192.168.1.254,將所有訪問外網(wǎng)的數(shù)據(jù)包都轉(zhuǎn)發(fā)到Linux服務(wù)器上,然后再通過NAT方式上網(wǎng)。

2.系統(tǒng)實(shí)現(xiàn)

該系統(tǒng)在Enterprise Linux AS4.0環(huán)境下實(shí)現(xiàn),流程如圖2所示。

(1)利用IPTABLES實(shí)現(xiàn)NAT和防火墻功能:防火墻功能是通過在IPTABLES中配置包的過濾規(guī)則來實(shí)現(xiàn);

NAT功能用如下命令實(shí)現(xiàn):

IPTABLES -t nat -A PREROUTING -d 10.80.1.100 -s! 192.168.1.254 -j DNAT --to 192.168.1.254

IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to 10.80.1.100

通過上述配置,內(nèi)網(wǎng)的計(jì)算機(jī)(192網(wǎng)段)已經(jīng)可以通過Linux服務(wù)器的NAT功能實(shí)現(xiàn)對外網(wǎng)(10網(wǎng)段)的訪問,系統(tǒng)在此基礎(chǔ)之上實(shí)現(xiàn)用戶的Web身份認(rèn)證。

(2)數(shù)據(jù)端口轉(zhuǎn)發(fā):與透明代理的實(shí)現(xiàn)方法類似,利用IPTABLES的端口轉(zhuǎn)發(fā)功能,將所有訪問80端口的數(shù)據(jù)包(也可以設(shè)置其他端口進(jìn)行更精細(xì)地控制)轉(zhuǎn)向本機(jī)Tomcat的8080端口,實(shí)現(xiàn)用戶認(rèn)證。

IPTABLES -t nat -A PREROUTING-s 192.168.1.111/32 -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

上述命令實(shí)現(xiàn)將IP地址為192.168.1.111的計(jì)算機(jī)發(fā)往外網(wǎng)80端口的請求全部轉(zhuǎn)發(fā)到8080端口。通過使用該命令將要控制的客戶端計(jì)算機(jī)IP添加入IPTABLES的規(guī)則中,從而實(shí)現(xiàn)對該計(jì)算機(jī)上網(wǎng)控制。

(3)搭建Web用戶認(rèn)證平臺:在Linux服務(wù)器上用Tomcat實(shí)現(xiàn)Web認(rèn)證平臺,設(shè)置監(jiān)聽端口為8080,并用JSP語言實(shí)現(xiàn)用戶認(rèn)證頁面,所有訪問外網(wǎng)的請求都被強(qiáng)制轉(zhuǎn)到該頁面,進(jìn)行身份驗(yàn)證,判斷用戶信息是否合法。

(4)認(rèn)證功能的實(shí)現(xiàn):在用戶認(rèn)證頁面,獲取用戶信息和客戶端計(jì)算機(jī)的IP地址,如果用戶信息合法,由Tomcat容器調(diào)用Javabean實(shí)現(xiàn)對IPTABLES規(guī)則的操作,在Java程序中認(rèn)證函數(shù)和IPTABLES規(guī)則修改函數(shù)要采用異步方式實(shí)現(xiàn),這樣可以減少用戶并發(fā)認(rèn)證時(shí)的數(shù)據(jù)混亂問題,提高系統(tǒng)的穩(wěn)定性。該功能利用Runtime.getRuntime.exec("cmd")函數(shù)運(yùn)行Linux的sh腳本來實(shí)現(xiàn),將用戶驗(yàn)證頁面獲取的IP地址作為參數(shù)傳入到Javabean中,并將如下命令行(認(rèn)證通過,取消該計(jì)算機(jī)的端口轉(zhuǎn)發(fā)規(guī)則,使其可以正常上網(wǎng))寫入sh腳本。

IPTABLES -t nat -D PREROUTING-s 192.168.1.111/32 -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

用Runtime.getRuntime.exec("chmod a+x sh腳本")提升該腳本文件為可執(zhí)行權(quán)限;之后用Runtime.getRuntime.exec("sh腳本")函數(shù)運(yùn)行該腳本文件,修改IPTABLES規(guī)則從而取消掉對該計(jì)算機(jī)端口轉(zhuǎn)發(fā)的限制,通過NAT實(shí)現(xiàn)上網(wǎng)功能。

(5)上網(wǎng)日志的記錄:通過對Ulogd工具的配置可以將IPTABLES的訪問日志記錄到Mysql數(shù)據(jù)庫中,在IPTABLES中添加如下規(guī)則:

IPTABELS-A INPUT-p tcp --dport 80-j ULOG或者IPTABELS-A FORWARD-j ULOG可以記錄通過IPTABLES的訪問數(shù)據(jù)包。

(6)分析訪問日志重新認(rèn)證:通過對Mysql數(shù)據(jù)庫日志表中ip_saddr(IP源地址)字段的分析確定每臺計(jì)算機(jī)是否在持續(xù)上網(wǎng),可以設(shè)定一個(gè)時(shí)間間隔,如果超過該間隔,該IP地址的計(jì)算機(jī)沒有網(wǎng)絡(luò)訪問數(shù)據(jù)包,便將該IP地址再加入到IPTABLES的轉(zhuǎn)發(fā)規(guī)則當(dāng)中,要求用戶重新認(rèn)證。在上述方法的實(shí)現(xiàn)中要盡量降低服務(wù)器的負(fù)擔(dān),可在日志表中使用插入觸發(fā)器,對新插入的日志記錄提取其源地址,同時(shí)更新計(jì)算機(jī)IP信息表中對應(yīng)IP地址的訪問時(shí)間;在Tomcat設(shè)定定時(shí)器函數(shù),每隔一定時(shí)間間隔輪詢該計(jì)算機(jī)IP信息表,對訪問時(shí)間與當(dāng)前時(shí)間差值大于限定值的計(jì)算機(jī)要求重新認(rèn)證。

(7)通過上述過程實(shí)現(xiàn)了基于IPTABLES的Web用戶身份驗(yàn)證功能。

四、系統(tǒng)性能與優(yōu)化

目前該系統(tǒng)認(rèn)證的IPTABLES服務(wù),Tomcat容器和Mysql數(shù)據(jù)庫都放在同一臺Linux服務(wù)器上,客戶端計(jì)算機(jī)數(shù)量是800臺左右,上網(wǎng)用戶的并發(fā)訪問量為100臺左右,系統(tǒng)運(yùn)行穩(wěn)定。

為了進(jìn)一步提高系統(tǒng)的性能,可將Web認(rèn)證服務(wù)器與數(shù)據(jù)庫服務(wù)器放在另一臺Linux服務(wù)器上以提高系統(tǒng)效率;同時(shí)通過進(jìn)一步對IPTABELS日志字段信息進(jìn)行分析可以提高用戶上網(wǎng)與重新認(rèn)證時(shí)間計(jì)算的精確度,從而在Web認(rèn)證的基礎(chǔ)之上實(shí)現(xiàn)計(jì)費(fèi)功能。

五、結(jié)束語

基于IPTABLES的Web認(rèn)證系統(tǒng)解決了用戶上網(wǎng)認(rèn)證、上網(wǎng)記錄保存、IP地址資源匱乏和高校內(nèi)二級單位上網(wǎng)管理不便等問題;同時(shí)該系統(tǒng)基于Linux操作系統(tǒng),對硬件設(shè)備的要求不高,網(wǎng)管人員可以自行搭建,非常適合在高校和企業(yè)內(nèi)推廣使用。

參考文獻(xiàn):

[1]林慧琛,劉殊.Red Hat Linux服務(wù)器配置與應(yīng)用[M].北京:人民郵電出版社,2007.

[2]索貝爾著.Linux命令、編輯器與Shell編程[M].北京:清華大學(xué)出版社,2007.

[3]鳥哥.鳥哥的Linux私房菜——服務(wù)器架設(shè)篇[M].北京:科學(xué)出版社,2005.

[4]劉中兵.精通Tomcat——Java Web應(yīng)用開發(fā)、框架分析與組件配置、系統(tǒng)集成與案例實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2007.

[5]劉斌.精通Java Web整合開發(fā): JSP+AJAX+Struts+Hibernate [M].北京:電子工業(yè)出版社,2007.

猜你喜歡
防火墻
筑牢防火墻 系緊安全帶
全民總動(dòng)員,筑牢防火墻
水上消防(2020年1期)2020-07-24 09:26:12
構(gòu)建防控金融風(fēng)險(xiǎn)“防火墻”
智慧防火墻
海南新農(nóng)合有了“防火墻”
在舌尖上筑牢抵御“僵尸肉”的防火墻
下一代防火墻要做的十件事
新漢 HENGETM工業(yè)防火墻
筑起網(wǎng)吧“防火墻”
中國火炬(2010年10期)2010-07-25 07:43:49
自己選擇十大免費(fèi)防火墻
滁州市| 昭苏县| 大埔区| 左贡县| 元谋县| 呼玛县| 沐川县| 莱芜市| 米脂县| 嘉义县| 镇赉县| 沅陵县| 临桂县| 台南县| 江城| 大洼县| 灵丘县| 西吉县| 东光县| 通化市| 隆尧县| 平凉市| 洛川县| 陆丰市| 南陵县| 吉木萨尔县| 岫岩| 平舆县| 子洲县| 胶州市| 洛南县| 茌平县| 克山县| 团风县| 隆昌县| 柯坪县| 米泉市| 临桂县| 南昌县| 遂平县| 伊金霍洛旗|