程序员 apache google mysql 开源 HTML5 shell linux命令 nginx php Android wordpress java centos Windows 微软 Firefox linux Python Ubuntu

策略与规则链

 防火墻會從上至下的順序來讀取配置的策略規則,在找到匹配項後就立即結束匹配工作並去執行匹配項中定義的行為(即放行或阻止)。如果在讀取完所有的策略規則之後沒有匹配項,就去執行默認的策略。一般而言,防火墻策略規則的設置有兩種:一種是“通”(即放行),一種是“堵”(即阻止)。當防火墻的默認策略為拒絕時(堵),就要設置允許規則(通),否則誰都進不來;如果防火墻的默認策略為允許時,就要設置拒絕規則,否則誰都能進來,防火墻也就失去了防範的作用。

 iptables服務把用於處理或過濾流量的策略條目稱之為規則,多條規則可以組成一個規則鏈,而規則鏈則依據數據包處理位置的不同進行分類,具體如下:

 在進行路由選擇前處理數據包(PREROUTING);

 處理流入的數據包(INPUT);

 處理流出的數據包(OUTPUT);

 處理轉發的數據包(FORWARD);

 在進行路由選擇後處理數據包(POSTROUTING)。
一般來說,從內網向外網發送的流量一般都是可控且良性的,因此我們使用最多的就是INPUT規則鏈,該規則鏈可以增大黑客人員從外網入侵內網的難度。

 比如在您居住的社區內,物業管理公司有兩條規定:禁止小商小販進入社區;各種車輛在進入社區時都要登記。顯而易見,這兩條規定應該是用於社區的正門的(流量必須經過的地方),而不是每家每戶的防盜門上。根據前面提到的防火墻策略的匹配順序,可能會存在多種情況。比如,來訪人員是小商小販,則直接會被物業公司的保安拒之門外,也就無需再對車輛進行登記。如果來訪人員乘坐一輛汽車進入社區正門,則“禁止小商小販進入社區”的第一條規則就沒有被匹配到,因此按照順序匹配第二條策略,即需要對車輛進行登記。如果是社區居民要進入正門,則這兩條規定都不會匹配到,因此會執行默認的放行策略。

 但是,僅有策略規則還不能保證社區的安全,保安還應該知道采用什麽樣的動作來處理這些匹配的流量,比如“允許”、“拒絕”、“登記”、“不理它”。這些動作對應到iptables服務的術語中分別是accept(允許流量通過)、reject(拒絕流量通過)、LOG(記錄日誌信息)、DROP(拒絕流量通過)。“允許流量通過”和“記錄日誌信息”都比較好理解,這裏需要著重講解的是REJECT和DROP的不同點。就DROP來說,它是直接將流量丟棄而且不響應;REJECT則會在拒絕流量後再回復一條“您的信息已經收到,但是被扔掉了”信息,從而讓流量發送方清晰地看到數據被拒絕的響應信息。

 我們來舉一個例子,讓各位讀者更直觀地理解這兩個拒絕動作的不同之處。比如有一天您正在家裏看電視,突然聽到有人敲門,您透過防盜門的貓眼一看是推銷商品的,便會在不需要的情況下開門並拒絕他們(REJECT)。但如果您看到的是債主帶了十幾個小弟來討債,此時不僅要拒絕開門,還要默不作聲,偽裝成自己不在家的樣子(DROP)。

 當把Linux系統中的防火墻策略設置為REJECT拒絕動作後,流量發送方會看到端口不可達的響應

延伸阅读

评论

暂无评论

写评论