![linux 構(gòu)建一個獨立的防火墻_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/a2bb026c-01cd-4ee9-b543-cf7f3500d051/a2bb026c-01cd-4ee9-b543-cf7f3500d0511.gif)
![linux 構(gòu)建一個獨立的防火墻_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/a2bb026c-01cd-4ee9-b543-cf7f3500d051/a2bb026c-01cd-4ee9-b543-cf7f3500d0512.gif)
![linux 構(gòu)建一個獨立的防火墻_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/a2bb026c-01cd-4ee9-b543-cf7f3500d051/a2bb026c-01cd-4ee9-b543-cf7f3500d0513.gif)
![linux 構(gòu)建一個獨立的防火墻_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/a2bb026c-01cd-4ee9-b543-cf7f3500d051/a2bb026c-01cd-4ee9-b543-cf7f3500d0514.gif)
![linux 構(gòu)建一個獨立的防火墻_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/a2bb026c-01cd-4ee9-b543-cf7f3500d051/a2bb026c-01cd-4ee9-b543-cf7f3500d0515.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、CIW課程之用LINUX AS構(gòu)建和安裝一個獨立的防火墻防火墻架設(shè)前的知識點補充防火墻支持狀態(tài)過濾。狀態(tài)主要有以下四種:NEW說明這個包是我們看到的第一個包。意思就是,這是conntrack(內(nèi)核包跟蹤)模塊看到的某個連接第一個包,它即將被匹配了。比如,我們看到一個SYN 包,是我們所留意的連接的第一個包,如UDP包,就要匹配它ESTABLISHED在兩個方向上的數(shù)據(jù)傳輸。即只需要接到應(yīng)答包即可,不管這個包是發(fā)往防火墻的,還是要由防火墻轉(zhuǎn)發(fā)的。ICMP的錯誤和重定向等信息包也被看作是ESTABLISHED,只要它們是我們所發(fā)出的信息的應(yīng)答 就認為是此狀態(tài)。RELATED是個比較麻煩的狀態(tài)。當一
2、個連接和某個已處于ESTABLISHED狀態(tài)的連接有關(guān)系時,就被認為是RELATED的了。換句話說,一個連接要想是RELATED的,首先要有一個ESTABLISHED的連接。這個ESTABLISHED連接再產(chǎn)生一個主連接之外的連接,這個新的連接就是 RELATED的了,當然前提是conntrack模塊要能理解RELATED。ftp是個很好的例子,F(xiàn)TP-data 連接就是和FTP-control有關(guān)的一個RELATEDINVALID說明數(shù)據(jù)包不能被識別屬于哪個連接或沒有任何狀態(tài)。有幾個原因可以產(chǎn)生這種情況,比如,內(nèi)存溢出,收到不知屬于哪個連接的ICMP 錯誤信息。一般地,我們DROP這個狀態(tài)的
3、任何東西。本章所建立的防火墻是基于“禁止一切”的默認策略的。按照默認的情況,所有的網(wǎng)絡(luò)數(shù)據(jù)流都被禁止,服務(wù)作為策略的例外來單獨啟用。對于單系統(tǒng)的家庭或是小型商業(yè)用戶配置,假設(shè)大多用戶都使用一個單獨的計算機來連接 Internet,或用單個防火墻來保護一個小型的專用的局域網(wǎng)。之所以這樣假設(shè)是因為這樣的站點一般不會去花更多資金來擴展原有系統(tǒng)結(jié)構(gòu)以構(gòu)建更高級的防火墻。“最小安全”并不是“不安全”,這種“最小保護”防火墻只是比擁有較多機器的更復(fù)雜的防火墻稍差一些。安全性是一種可利用的資源與逐漸減少的回報之間的均衡。如果要求更高的安全性,付出更多的投入,不一定能在效益上有相應(yīng)倍數(shù)的提高。日后我們會介紹更
4、多的安全配置,以提供保護較為復(fù)雜的局域網(wǎng)的附加內(nèi)部安全性,也提供比單系統(tǒng)防火墻更安全的服務(wù)器配置。作為防火墻的管理程序,iptables為輸入和輸出規(guī)則鏈建立單獨的數(shù)據(jù)包過濾規(guī)則以組成防火墻。定義防火墻規(guī)則的一個重要方面就是規(guī)則的定義順序。數(shù)據(jù)包過濾規(guī)則以它們被定義的順序存儲在內(nèi)核的輸入、輸出或轉(zhuǎn)發(fā)規(guī)則鏈中。單個規(guī)則被插入到鏈的開頭或添加到鏈的結(jié)尾。本章例子中的所有規(guī)則都是添加到鏈的結(jié)尾的本章所有過濾器的例子中使用的是數(shù)字服務(wù)端口號而不是它們的符號名稱,如在/etcservices中列出的那樣。iptables支持符號化的服務(wù)端口名稱,之所以不使用符號名稱而使用數(shù)字是因為在Linux的不同版本
5、中符號名稱不太統(tǒng)一本章將會用到一個名為rcfirewall的腳本,這個腳本的位置依賴于Linux調(diào)用該腳本的方式而不同。例如,在Red Hat,或SUSE系統(tǒng)中,此腳本位于etcrcd目錄;但在Debian中,它位于etcinitd目錄。鑒于用到的shell語法可能不同,在例子中會用Bourne(sh)或Bourne Again(bash)shell的語法來編寫。腳本應(yīng)該以“shebang”開頭來調(diào)用shell作為腳本的解釋程序。腳本中的第一行如下:#!binsh定制還是購買Linux內(nèi)核最好不要在防火墻運行X Window,進一步說,最好不要安裝。因為一般這個軟件沒有太多用處,而且曾被用做攻
6、擊服務(wù)器的途徑。有人需要從成百上千英里以外的某地方控制一臺Linux計算機,和他們一樣,我也要從很遠的地方啟動防火墻腳本,在這種情況下,最好做兩項準備:首先,將防火墻腳本開始的一個或幾個執(zhí)行動作的默認策略定為接受,這樣做是為了調(diào)試腳本,而不是規(guī)則語法即是如此。在腳本被調(diào)試正確后,再將策略改回為丟棄策略。其次非常重要的一點是,在從遠程執(zhí)行防火墻腳本時,最好設(shè)置corn作業(yè),使防火墻可以在不久后的某一時間停止下來。這樣可以有效地允許你啟用防火墻并進行一些測試,并且,當存在錯誤設(shè)置的(或者丟失的)規(guī)則時,不至于將你鎖在計算機外面而無法返回與計算機的連接。臨時客串知識點:Linux 技巧: 用 cro
7、n 和 at 調(diào)度作業(yè)系統(tǒng)管理員需要在系統(tǒng)負載低的午夜運行作業(yè),或者需要每天或每月運行作業(yè),同時又不愿意犧牲睡眠時間或假期。調(diào)度任務(wù)的其他原因包括自動執(zhí)行日常任務(wù)或者確保每次都以相同的方式處理任務(wù)。本文幫助您使用 cron 和 at 功能調(diào)度作業(yè)定期運行或在指定的時間運行一次。以一定的時間間隔運行作業(yè)以一定的時間間隔運行作業(yè)需要使用 cron 設(shè)施進行管理,它由 crond 守護進程和一組表(描述執(zhí)行哪些操作和采用什么樣的頻率)組成。這個守護進程每分鐘喚醒一次,并通過檢查 crontab 判斷需要做什么。用戶使用 crontab 命令管理 crontab。crond 守護進程常常是在系統(tǒng)啟動時
8、由 init 進程啟動的。為了簡單,假設(shè)希望定期運行清單 1 所示的命令。這個命令實際上只報告日期和時間,其他什么事都不做,但是它可以說明如何使用 crontab 設(shè)置 cron 作業(yè),而且還可以通過輸出看到作業(yè)運行的時間。設(shè)置 crontab 條目需要一個包含轉(zhuǎn)義的 shell 元字符的字符串,所以適合于簡單的命令和參數(shù)。在這個示例中,將從腳本 /home/ian/mycrontab.sh 運行 echo 命令,這個腳本不需要參數(shù)。 這可以減少處理轉(zhuǎn)義字符的工作。創(chuàng)建 crontab使用 crontab 命令和 -e(表示 “edit”)選項創(chuàng)建 crontab。這會打開 vi 編輯器,除非
9、在 EDITOR 或 VISUAL 環(huán)境變量中指定了另一種編輯器。每個 crontab 條目包含六個字段:.5.6. 分鐘 小時 日 月 星期 由 sh 執(zhí)行的字符串分鐘和小時的范圍分別是 0-59 和 0-12,日和月的范圍分別是 1-31 和 1-12。星期的范圍是 0-6,0 表示星期日。星期也可以指定為 sun、mon、tue 等等。第 6 個字段包含前 5 個字段之后的所有內(nèi)容,它是要傳遞給 sh 的字符串。百分號(%)將轉(zhuǎn)換為空行,所以如果要使用 % 或其他任何特殊字符,就要在前面加上反斜線()。第一個 % 之前的一行傳遞給 shell,這個 % 之后的所有行都作為標
10、準輸入傳遞。各個與時間相關(guān)的字段可以指定一個單獨的值、值的范圍(比如 0-10 或 sun-wed)或者以逗號分隔的單獨值和范圍列表。清單 2 給出一個 crontab 條目示例。在這個示例中,我們的命令在 7 月的每個星期五和星期六晚上 10 點到午夜之間的第 0、20、40 分鐘(每 20 分鐘)執(zhí)行。crontab 存儲在哪里?用 crontab 命令創(chuàng)建的 crontab 存儲在 /etc/spool/cron 下面的一個子目錄中,這個子目錄與創(chuàng)建 crontab 的用戶同名,所以上面的 crontab 存儲在 /etc/spool/cron/ian 中。在指定的時間運行作業(yè)有時候,需
11、要只運行作業(yè)一次而不是定期運行。為此,應(yīng)該使用 at 命令。要運行的命令是從 -f 選項指定的文件讀取的,-v 選項顯示運行作業(yè)的時間例如:ianlyrebird $ at -f mycrontest.sh 10pm tomorrowjob 14 at Sun Jul 8 22:00:00 2007ianlyrebird $ at -f mycrontest.sh 2:00 tuesdayjob 15 at Tue Jul 10 02:00:00 2007ianlyrebird $ at -f mycrontest.sh 2:00 july 11job 16 at Wed Jul 11 02:
12、00:00 2007ianlyrebird $ at -f mycrontest.sh 2:00 next weekjob 17 at Sat Jul 14 02:00:00 2007可以管理 cron 和 at 作業(yè)。使用 crontab 命令和 -l 選項列出 crontab,使用 atq 命令顯示用 at 命令加入隊列中的作業(yè)ianlyrebird $ crontab -l0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.shianlyrebird $ atq16 Wed Jul 11 02:00:00 2007 a ian17 Sat Jul
13、 14 02:00:00 2007 a ian14 Sun Jul 8 22:00:00 2007 a ian15 Tue Jul 10 02:00:00 2007 a ian可以使用 cron 命令和 -r 選項刪除所有調(diào)度的 cron 作業(yè)ianlyrebird $ crontab -l0,20,40 22-23 * 7 fri-sat /home/ian/mycrontest.shianlyrebird $ crontab -rianlyrebird $ crontab -lno crontab for ian用 atq 和 atrm 顯示并刪除作業(yè)ianlyrebird $ atq16
14、 Wed Jul 11 02:00:00 2007 a ian17 Sat Jul 14 02:00:00 2007 a ian14 Sun Jul 8 22:00:00 2007 a ian15 Tue Jul 10 02:00:00 2007 a ianianlyrebird $ atrm 16 14 15ianlyrebird $ atq17 Sat Jul 14 02:00:00 2007 a ian以上是關(guān)于作業(yè)調(diào)度的知識點補充。如果有了以上的CRON我們就不會把自己鎖在外面了。例如,在調(diào)試防火墻腳本時,可以創(chuàng)建一個corn作業(yè),每兩分鐘停止防火墻一次,這樣可以安全地運行防火墻腳本并
15、可以知道是否已鎖定SSH會話。如果已經(jīng)鎖定,只需要等待防火墻腳本再運行幾分鐘,等待防火墻自行關(guān)閉,然后就可以去修訂腳本繼續(xù)運行了。本節(jié)課防火墻示例中使用的符號常量如果為經(jīng)常使用的名字或地址定義了符號常量,防火墻的腳本就極易讀懂和維護。下面的常量或者是本章例子中用到的,或者是在網(wǎng)絡(luò)標準中定義的通用常量。在下面的例子中,也是以“shebang”行作為開頭。刪除預(yù)先存在的規(guī)則定義一組過濾規(guī)則時,首先要做的事情就是從規(guī)則鏈中清除任何已經(jīng)存在的規(guī)則。否則任何新定義的規(guī)則將加到已有的規(guī)則之后。那么,數(shù)據(jù)包在到達鏈上新定義的點之前,很容易與一個先前存在的規(guī)則匹配。刪除規(guī)則也叫做刷新規(guī)則鏈,當沒有參數(shù)直接針對
16、特定的鏈時,下面的命令一次性刷新所有鏈上的規(guī)則:IPT flushIPT -t nat flushIPT -t mangle -flush規(guī)則鏈變?yōu)榭?,但所有用戶自定義規(guī)則鏈仍存在,刷新鏈并不影響當時處于有效的默認策略的狀態(tài)。下一步是刪除所有用戶自定義規(guī)則鏈,下面的命令可以刪除它們:IPT-XIPT-t nat-XIPT-t mangle-X停止防火墻IPT -policy INPUT ACCEPTIPT -policy OUTPUT ACCEPTIPT -policy FORWARD ACCEPTIPT -t nat -policy PREROUTING ACCEPTIPT -t nat -
17、policy OUTPUT ACCEPTIFT -t nat -policy POSTROUTING ACCEPTIPT -t mangle -policy PREROUTING ACCEPTIPT -t mangle -policy OUTPUT ACCEPT下面就可以容易地停止防火墻了,將下面代碼置于上面代碼之后,當你使用參數(shù)“stop”時,腳本會直接而干凈地重置默認策略并將防火墻完全停止:if "1" = "stop" ;thenecho "Firewall completely stopped! WARNING: THIS HOST H
18、AS NO FIREWALL RUNNING. " exit 0fi啟動回環(huán)接口本地服務(wù)依賴于回環(huán)網(wǎng)絡(luò)接口。系統(tǒng)啟動之后,系統(tǒng)的默認策略是接受所有的數(shù)據(jù)包,清除所有預(yù)先存在的規(guī)則鏈對此也沒有任何影響。但是,當防火墻被重新初始化時并且先前使用了默認禁止策略,丟棄策略在此時也將依然有效。在沒有任何接受規(guī)則的情況下,回環(huán)接口是不能被訪問的。IPT -A INPUT -i lo -j ACCEPTIPT -A OUTPUT -o lo -j ACCEPT重置默認策略使用丟棄默認策略時,除非定義規(guī)則為明確允許或拒絕一個匹配的數(shù)據(jù)包,否則數(shù)據(jù)包將被丟棄。我們想要的是,自動丟棄我們不想要的入站數(shù)據(jù)
19、包且并不通知遠方的發(fā)送者,拒絕出站數(shù)據(jù)包并向內(nèi)部發(fā)送者返回一個ICMP錯誤消息。對用終端用戶來說,其不同之處舉例來講,如果有人在遠程站點試圖連接你的Web服務(wù)器,他的瀏覽器會掛起,直到系統(tǒng)返回TCP超時狀態(tài),但他未得到你的站點或Web服務(wù)器是否存在的指示。另一方面,如果你試圖連接一個遠程Web服務(wù)器,你的瀏覽器會立即收到一個錯誤通知,指示這個操作是不允許的: IPT -policy INPUT DROPIPT -policy OUTPUT DROPIPT -policy FORWARD DROP這樣,結(jié)合上面的設(shè)置除了本地回環(huán)業(yè)務(wù)流外的其他網(wǎng)絡(luò)業(yè)務(wù)流都會被阻塞。如果防火墻主機只有一個網(wǎng)絡(luò)接口,
20、轉(zhuǎn)發(fā)(FORWARD)策略當然是沒有必要的。定義轉(zhuǎn)發(fā)策略是為以后做準備的,這樣,最好加入下面的代碼:IPT -t nat -policy PREROUTING DROPIPT -t nat -policy OUTPUT DROPIPT -t nat -policy POSTROUTING DROPIPT -t mangle -policy PREROUTING DROPIPT -t mangle -policy OUTPUT DROP默認策略規(guī)則和最先匹配規(guī)則為準默認策略看起來似乎是最先匹配規(guī)則為準的例外。默認策略命令不依賴于其位置,它們本身不是規(guī)則。一個規(guī)則鏈的默認策略是指,一個數(shù)據(jù)包與規(guī)則
21、鏈上的規(guī)則都做了比較卻未找到匹配之后所采用的策略。默認策略用于定義默認的數(shù)據(jù)包處理方式,它相對規(guī)則來說需要首先在腳本中定義。假設(shè)策略命令在腳本最后執(zhí)行,此時如果防火墻腳本包含一個語法錯誤導(dǎo)致它過早地退出,那么接受一切的默認策略將生效。拒絕掃描排在最前面的狀態(tài)標記列表列出的是必須進行檢測的位,除了那些位以外,第二張狀態(tài)標記列表列出了必須在檢測中設(shè)為匹配的位。IPT -A INPUT -m unclean -j DROP# All of the bits are clearedIPT -A INPUT -ptcp -tcp-flags ALL NONE -j DROP# SYN and FIN a
22、re both set IPT -A INPUT -p top -tcp-flags SYN,FIN SYN,FIN -j DROP# SYN and RST are both setIPT -A INPUT -p tcp -tcp-flags SYN,RST SYN,RST -j DROP# FIN and RST are both setIPT -A INPUT -p tcp -tcp-flags FIN,RST FIN,RST -j DROP# FIN is the only bit set, without the expected accompanying ACKIPT -A INP
23、UT -p tcp -tcp-flags ACK,FIN FIN -j DROP# PSH is the only bit set, without the expected accompanying ACK1PT -A INPUT -p top -top-flags ACK,PSH PSH -j DROP# URG is the only bit set, without the expected accompanying ACK1PT -A INPUT -p tcp -tcp-flags ACK,URG URG -j DROP利用連接狀態(tài)繞過規(guī)則檢測因為狀態(tài)模塊相對一些Linux防火墻來說
24、會需要更多的內(nèi)存,所以本章的防火墻示例,將會提供有狀態(tài)模塊和沒有狀態(tài)模塊兩種選擇。使用狀態(tài)模塊可以讓正在進行的交換在正常操作的情況下繞過標準防火墻規(guī)則。但是,如果一個連接的狀態(tài)表中某項發(fā)生循環(huán)或超時,就必須轉(zhuǎn)而使用標準的規(guī)則。 防火墻靜態(tài)和動態(tài)規(guī)則資源限制的可測性和狀態(tài)表超時要求同時使用動態(tài)和靜態(tài)規(guī)則。這種限制成為了大型商業(yè)防火墻的一個賣點。限制的可測性問題主要是因為,一個大型的防火墻往往需要處理50,000100,000個同時的連接,這樣就有大量的狀態(tài)要處理。系統(tǒng)資源有時被用盡,這樣連接就無法建立起來,這時就需要放棄新的連接或是讓軟件退回到無狀態(tài)模式。還有一個就是超時問題,連接狀態(tài)并不能永遠
25、保持。一些慢速或靜止態(tài)的連接的狀態(tài)信息有時會被清除掉,這樣可以為更活躍的連接留出更多的空間。當一個相關(guān)的新的數(shù)據(jù)包又傳來時,狀態(tài)信息將被重新建立。同時,在傳輸棧查詢連接信息并通知狀態(tài)模塊此數(shù)據(jù)包確實是已經(jīng)存在的一個數(shù)據(jù)交換連接的一部分時,數(shù)據(jù)包的網(wǎng)絡(luò)流又回到無狀態(tài)模式下。 if "CONNECTION_TRACKING" = "1" ; thenSIPT -A INPUT -m state -state ESTABLISHED,RELATED -j ACCEPT IPT -A OUTPUT -m state -state ESTABLISHED,RELA
26、TED -j ACCEPT# Using the state module alone, INVALID will break protocols that use # bi-directional connections or multiple connections or exchanges, # unless an ALG is provided for the protocol. At this time, FTP and # IRC are the only protocols with ALG support.IPT -A INPUT -m state -state INVALID
27、 -j LOG -log-prefix "INVALID input: "IPT -A INPUT -m state -state INVALID -j DROPIPT -A OUTPUT -m state -state INVALID -j LOG -log-prefix "INVALID output: "IPT -A OUTPUT -m state -state INVALID -j DROPfi源地址欺騙及其他不合法地址在眾多的源地址欺騙中,你可以確定識別出的一種欺騙,那就是它偽裝成了你的IP地址。下面的規(guī)則可以丟棄那些聲稱是來自你的機器的入站數(shù)
28、據(jù)包:IPT -A INPUT -i INTERNET -s IPADDR -j DROP正如第1章和第2章中介紹的那樣,A、B、C類地址范圍中都有一些私有IP地址專門留給局域網(wǎng)使用。這些地址不會在Internet中使用,路由器也不會使用這些私有地址去路由數(shù)據(jù)包。然而事實上,有些路由器確實會轉(zhuǎn)發(fā)含私有源地址的數(shù)據(jù)包。另外,如果和你同在一個ISP子網(wǎng)(即與你在路由器的同一側(cè))中的某些人向外發(fā)送了帶有私有地址的數(shù)據(jù)包,即使路由器沒有轉(zhuǎn)發(fā),這些數(shù)據(jù)包你也可以看到。如果你的NAT或代理設(shè)置不當,和你在同一局域網(wǎng)下的機器也會泄漏私有地址。下面三個規(guī)則不允許以任何A、B或C類私有網(wǎng)絡(luò)地址為源地址的數(shù)據(jù)包入
29、站。在一個公用網(wǎng)絡(luò)中,這樣的數(shù)據(jù)包不允許出現(xiàn):IPT -A INPUT -i INTERNET -s CLASS_A -j DROPIPT -A INPUT -i 1NTERNET -s CLASS_B -j DROPIPT -A INPUT -i INTERNET -s CLASS_C -j DROP下面的規(guī)則不允許來自回環(huán)網(wǎng)絡(luò)地址的數(shù)據(jù)包:IPT -A INPUT -i INTERNET -s LOOPBACK -j DROP因為回環(huán)接口是內(nèi)部的本地軟件接口,任何聲稱來自這樣的地址的數(shù)據(jù)包都是故意偽造的。下面的兩個規(guī)則用于記錄匹配的數(shù)據(jù)包。防火墻的默認策略是禁止一切,這樣的話,廣播地址也被
30、默認地丟棄了,如果需要使用,必須明確地啟用它:1PT -A INPUT -i 1NTERNET -s BROADCAST_DEST -j LOG1PT -A INPUT -i INTERNET -s BROADCAST_DEST -j DROPIPT -A INPUT -i INTERNET -d BROADCAST_SRC -j LOG1PT -A INPUT -i INTERNET -d BROADCAST_SRC -j DROP澄清IP地址00O0的意義地址O000保留作為廣播源地址。在Netfilter中,指明與任意地址(如any0,00000或者 O0000000)進行匹配的規(guī)則不與
31、廣播地址匹配。原因是廣播數(shù)據(jù)包在其數(shù)據(jù)包頭中有一標記位用以指示這是一個發(fā)給網(wǎng)絡(luò)上所有接口的廣播數(shù)據(jù)包,而不是一個點對點發(fā)給特定目的地址的單點傳送數(shù)據(jù)包。對廣播數(shù)據(jù)包的處理與非廣播數(shù)據(jù)包不同,不存在IP地址是000O的合法的非廣播數(shù)據(jù)包。下面兩條規(guī)則阻塞兩種形式的直接廣播:# Refuse directed broadcasts# Used to map networks and in Denial of Service attacksIPT -A INPUT -i INTERNET -d SUBNET_BASE -j DROPIPT -A INPUT -i INTERNET -d SUBNET
32、_BROADCAST -j DROP由于默認禁止策略,以及部分依靠匹配目的地址來明確地接受某些數(shù)據(jù)包的防火墻規(guī)則,所有這些直接廣播消息都不會被防火墻接受。在局域網(wǎng)使用真實網(wǎng)絡(luò)地址進行更大規(guī)模配置時,設(shè)置這些規(guī)則將非常困難。由于使用了變長的網(wǎng)絡(luò)前綴,一個站點的網(wǎng)絡(luò)或主機地址域可能是,也可能不是一個字節(jié)的長度。為了講起來簡單,假設(shè)SUBNET_BASE是你的網(wǎng)絡(luò)地址,如19216810;SUBNET_ BROADCAST是你的網(wǎng)絡(luò)廣播地址,如1921681255。后面的章節(jié)中會為DHCP客戶機設(shè)置一些例外。在DHCP的客戶機及服務(wù)器端口初始化時,廣播源和目的地址要被用到。多播地址只能被用做目的地址
33、,下面的規(guī)則丟棄假冒的多播網(wǎng)絡(luò)數(shù)據(jù)包:# Refuse Class D multicast addresses# illegal as a source addressIPT -A INPUT -i 1NTERNET -s CLASS_D_MULTICAST -j DROP合法的多播數(shù)據(jù)包都是UDP數(shù)據(jù)包下面的規(guī)則禁止了非UDP協(xié)議的多播數(shù)據(jù)包: IPT-A INPUT-iINTERNET-P ! udp-dCLASS_D_MULTICAST-j DROP#保留地址塊在注冊之前是不能路由的。它們在拒絕服務(wù)攻擊中可以被用做源地址。防火墻可以阻塞以這些保留地址塊為源地址的數(shù)據(jù)包但是,因為自2000
34、年以后IANA開始靈活地為站點分配這些地址塊,所以防火墻這樣運作也變得有些不太現(xiàn)實了。下面的規(guī)則定義丟棄以那些地址塊為源地址的數(shù)據(jù)包:上面是一些應(yīng)該注意的地方,下面我們以一個腳本來講述本課程的重點本課涉及的腳本是為各種服務(wù)的應(yīng)用協(xié)議設(shè)立的防火墻規(guī)則主要是應(yīng)用于獨立的Linux主機。并且每個服務(wù)的客戶端規(guī)則以及服務(wù)端規(guī)則同時存在,盡管并不是每一個規(guī)則都是必要的。完整的 iptables防火墻腳本應(yīng)該放在etcrcdrcfirewall或者etcinitdfirewall中,如下所示:#!/bin/sh/sbin/modprobe ip_conntrack_ftp CONNECTION_TRACK
35、ING="1" ACCEPT_AUTH="O" SSH_SERVER="O" FTP_SERVER="O" WEB_SERVER="O" SSL_SERVER="O" DHCP_CLIENT="1"echo 0 > f done# Enable TCP SYN Cookie Protection echo i > /proc/sys/net/ipv4/tcp_syncookies# Disable ICMP Redirect Acceptanc
36、e for f in /proc/sys/net/ipv4/conf/*/accept_redirects; doecho 0 > f done# Don't send Redirect Messages for f in /proc/sys/net/ipv4/conf/*/send_redirects; doecho 0 > f done# Drop Spoofed Packets coming in on an interface, which, if replied to,# would result in the reply going out a differen
37、t interface. for f in /proc/sys/net/ipv4/conf/*/rp_filter; doecho 1 > f done# Log packets with impossible addresses. for f in /proc/sys/net/ipv4/conf/*/log_martians; doecho 1 > f done# Remove any existing rules from all chainsIPT -flushIPT -t nat -flushIPT -t mangle -flushIPT -XIPT -t nat -XIP
38、T -t mangle -XIPT -policy INPUT ACCEPTIPT -policy OUTPUT ACCEPTIPT -policy FORWARD ACCEPTIPT -t nat -policy PREROUTING ACCEPTIPT -t nat -policy OUTPUT ACCEPTIPT -t nat -policy POSTROUTING ACCEPTIPT -t mangle -policy PREROUTING ACCEPTIPT -t mangle -policy OUTPUT ACCEPT if "1" = "stop&q
39、uot; then echo "Firewall completely stopped! WARNING: THIS HOST HAS NO FIREWALL RUNNING." exit 0 fi# Unlimited traffic on the loopback interfaceIPT -A INPUT -i lo -j ACCEPTIPT -A OUTPUT -o lo -j ACCEPT# Set the default policy to dropIPT -policy INPUT DROPIPT -policy OUTPUT DROPIPT -policy
40、FORWARD DROPIPT -t nat -policy PREROUTING DROPIPT -t nat -policy OUTPUT DROPIPT -t nat -policy POSTROUTING DROPIPT -t mangle -policy PREROUTING DROPIPT -t mangle -policy OUTPUT DROP# Stealth Scans and TCP State Flags# UncleanIPT -A INPUT -m unclean -j DROP# All of the bits are clearedIPT -A INPUT -p
41、tcp -tcp-flags ALL NONE -j DROP# SYN and FIN are both setIPT -A INPUT -ptcp -tcp-flags SYN,FIN SYN,FIN -j DROP# SYN and RST are both setIPT -A INPUT -p top o-tcp-flags SYN,RST SYN,RST -j DROP# FIN and RST are both setIPT -A INPUT -p tcp -tcp-flags FIN,RST FIN,RST -j DROP# FIN is the only bit set, wi
42、thout the expected accompanying ACKIPT -A INPUT -p tcp -tcp-flags ACK,FIN FIN -j DROP# PSH is the only bit set, without the expected accompanying ACKIPT -A INPUT -p tcp -tcp-flags ACK,PSH PSH -j DROP# URG is the.only bit set, without the expected accompanying ACKIPT -A INPUT -ptcp -tcp-flags ACK,URG
43、 URG -j DROP# Using Connecti6n State to By-pass Rule Checkingif "CONNECTION_TRACKING" = "1" ; thenIPT -A INPUT -m state -state ESTABLISHED,RELATED -j ACCEPTIPT -A OUTPUT -m state -state ESTABLISHED,RELATED -j ACCEPT# Using the state module alone, INVALID will break protocols that
44、 use # bi-directional connections or multiple connections or exchanges, # unless an ALG is provided for the protocol. At this time, FTP and # IRC are the only protocols with ALG support.IPT -A INPUT -m state -state INVALID -j LOG -log-prefix "INVALID input: "IPT -A INPUT -m state -state IN
45、VALID -j DROPIPT -A OUTPUT -m state -state INVALID -j LOG -log-prefix "INVALID output: "IPT -A OUTPUT -m state -state INVALID -j DROP fi# Source Address Spoofing and Other Bad Addresses# Refuse spoofed packets pretending to be from# the external interface's IP addressIPT -A INPUT -i IN
46、TERNET -s IPADDR -j DROP# Refuse packets claiming to be from a Class A private networkIPT -A INPUT -i INTERNET -s CLASS_A -j DROP# Refuse packets claiming to be from a Class B private networkIPT -A INPUT -i INTERNET -s CLASS_B -j DROP# Refuse packets claiming to be from a Class C private networkIPT
47、-A INPUT -i INTERNET -s CLASS_C -j DROP# Refuse packets claiming to be from the loopback interfaceIPT -A INPUT -i INTERNET -s LOOPBACK -j DROP# Refuse malformed broadcast packetsIPT -A INPUT -i INTERNET -s BROADCAST_DEST -j LOGIPT -A INPUT -i INTERNET -s BROADCAST_DEST -j DROPIPT -A INPUT -i INTERNE
48、T -d BROADCAST_SRC -j LOGIPT -A INPUT -i INTERNET -d BROADCAST_SRC -j DROP if "DHCP_CLIENT" = "0" ; then# Refuse directed broadcasts# Used to map networks and in Denial of Service attacksIPT -A INPUT -i INTERNET -d SUBNET_BASE -j DROPIPT -A INPUT -i INTERNET -d SUBNET_BROADCAST -
49、j DROP# Refuse limited broadcastsIPT -A INPUT -i INTERNET -d BROADCAST_DEST -j DROP fi# Refuse Class D multicast addresses# illegal as a source addressIPT -A INPUT -i INTERNET -s CLASS_D_MULTICAST -j DROPIPT -A INPUT -i INTERNET -p ! udp -d CLASS_D_MULTICAST -j DROPIPT -A INPUT -i INTERNET -p udp -d
50、 CLASS_D_MULTICAST -j ACCEPT# Refuse Class E reserved IP addressesIPT -A INPUT -i INTERNET -s CLASS_E_RESERVED_NET -j DROP if "DHCP_CLIENT" = "1" ; thenIPT -A INPUT -i INTERNET -p udp -s BROADCAST_SRC -sport 67 Disallowing Connections to Common TCP Unprivileged Server Ports# X Wi
51、ndow connection establishmentIPT -A OUTPUT -o INTERNET -p tcp -syn -destination-port XWINDOW_PORTS -j REJECT# X Window: incoming connection attemptIPT -A INPUT -i INTERNET -p tcp -syn -destination-port XWINDOW_PORTS -j DROP# Establishing a connection over TCP to NFS, OpenWindows, SOCKS, or squidIPT
52、-A OUTPUT -o INTERNET -p tcp -m multiport -destination-port NFS_PORT,OPENWINDOWS_PORT,SOCKS_PORT,SQUID_PORT -syn -j REJECTIPT -A. INPUT -i INTERNET -p tcp -m multiport -destination-port NFS_PORT,OPENWINDOWS_PORT,SOCKS_PORT,SQUID_PORT -syn -j DROP#Disallowing Connections to Common UDP Unprivileged Se
53、rver Ports# NFS and lockd if "CONNECTION_TRACKING" = "1" ; thenIPT -A OUTPUT -o INTERNET -p udp -m multiport -destination-port NFS_PORT,LOCKD_PORT -m state -state NEW -j REJECTIPT -A INPUT -i INTERNET -p udp -m multiport -destination-port NFS_PORT,LOCKD_PORT -m state -state NEW -
54、j DROP elseIPT -A OUTPUT -o 1NTERNET -p udp -m multiport -destination-port NFS_PORT,LOCKD_PORT -j REJECTIPT -A input -i INTERNET -p udp -m multiport -destination-port NFS_PORT,LOCKD_PORT -j DROP fi# DNS Name Server# DNS Forwarding Name Server or client requests if "CONNECTION_TRACKING" = &
55、quot;1" ; thenIPT -A OUTPUT -o INTERNET -p udp -s IPADDR -sport UNPRIVPORTS -d NAMESERVER -dport 53 -m state -state NEW -j ACCEPT fiIPT -A OUTPUT -o INTERNET -p udp -s IPADDR -sport UNPRIVPORTS -d NAMESERVER -dport 53 -j ACCEPTIPT -A INPUT -i INTERNET -p udp -s NAMESERVER -sport 53 -d IPADDR -d
56、port UNPRIVPORTS -j ACCEPT# TCP is used for large responses if "CONNECTION_TRACKING" = "1" ; thenIPT -A OUTPUT -o INTERNET -ptcp -s IPADDR -sport UNPRIVPORTS -d NAMESERVER -dport 53 -m state -state NEW -j ACCEPT fiIPT -A OUTPUT -o 1NTERNET -p tcp -s IPADDR -sport UNPRIVPORTS -d NAMESERVER -dport 53 -j
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西省安康市2024-2025學(xué)年八年級(上)期末語文試卷
- 2025年全球及中國氯雷他定片行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球工商用管道除濕機行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國劃線輪(描線輪)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球PTFE化學(xué)鍍鎳行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國汽車超高頻天線行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國多托盤貨叉行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球汽車行業(yè)用生物基聚酰胺行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國樹木介紹牌行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球醫(yī)美用A型肉毒毒素行業(yè)調(diào)研及趨勢分析報告
- 2025-2030年中國納米氧化鋁行業(yè)發(fā)展前景與投資戰(zhàn)略研究報告新版
- 2025年度正規(guī)離婚協(xié)議書電子版下載服務(wù)
- 2025年貴州蔬菜集團有限公司招聘筆試參考題庫含答案解析
- 煤礦安全生產(chǎn)方針及法律法規(guī)課件
- 2025年教科室工作計劃樣本(四篇)
- 2024年版古董古玩買賣合同:古玩交易稅費及支付規(guī)定
- 【7歷期末】安徽省宣城市2023-2024學(xué)年七年級上學(xué)期期末考試歷史試題
- 春節(jié)后安全生產(chǎn)開工第一課
- 2025光伏組件清洗合同
- 電力電纜工程施工組織設(shè)計
- 2024年網(wǎng)格員考試題庫完美版
評論
0/150
提交評論