2019-09-05-iptables和firewalld(防火墻)


下午工作之余悉患,無意中看到iptables相關內容,由于實際工作環(huán)境中榆俺,系統(tǒng)下防火墻都是關閉狀態(tài)售躁,因此對這方面知識坞淮,了解不多。借此契機陪捷,上網瀏覽一些資料回窘,對Linux系統(tǒng)防火墻進行知識整理。

眾所周知市袖,相較于企業(yè)內網啡直,外部的公網環(huán)境更加惡劣,罪惡叢生凌盯。在公網與企業(yè)內網之間充當保護屏障的防火墻(見圖8-1)雖然有軟件或硬件之分付枫,但主要功能都是依據策略對穿越防火墻自身的流量進行過濾。防火墻策略可以基于流量的源目地址驰怎、端口號阐滩、協(xié)議、應用等信息來定制县忌,然后防火墻使用預先定制的策略規(guī)則監(jiān)控出入的流量掂榔,若流量與某一條策略規(guī)則相匹配,則執(zhí)行相應的處理症杏,反之則丟棄装获。這樣一來,就可以保證僅有合法的流量在企業(yè)內網和外部公網之間流動了厉颤。


熟悉紅帽操作系統(tǒng)的童鞋都清楚穴豫,RHEL7? firewalld替代了RHEL6 iptables,其實逼友,iptables與firewalld都不是真正的防火墻精肃,它們都只是用來定義防火墻策略的防火墻管理工具而已,或者說帜乞,它們只是一種服務司抱。iptables服務會把配置好的防火墻策略交由內核層面的netfilter網絡過濾器來處理,而firewalld服務則是把配置好的防火墻策略交由內核層面的nftables包過濾框架來處理黎烈。換句話說习柠,當前在Linux系統(tǒng)中其實存在多個防火墻管理工具,旨在方便運維人員管理Linux系統(tǒng)中的防火墻策略照棋,我們只需要配置妥當其中的一個就足夠了资溃。雖然這些工具各有優(yōu)劣,但它們在防火墻策略的配置思路上是保持一致的烈炭。大家甚至可以不用完全掌握本章介紹的內容溶锭,只要在這多個防火墻管理工具中任選一款并將其學透,就足以滿足日常的工作需求了梳庆。

在早期的Linux系統(tǒng)中暖途,默認使用的是iptables防火墻管理服務來配置防火墻。盡管新型的firewalld防火墻管理服務已經被投入使用多年膏执,但是大量的企業(yè)在生產環(huán)境中依然出于各種原因而繼續(xù)使用iptables驻售。

以下介紹一些關于iptables相關的知識點

1 策略與規(guī)則鏈

防火墻會從上至下的順序來讀取配置的策略規(guī)則,在找到匹配項后就立即結束匹配工作并去執(zhí)行匹配項中定義的行為(即放行或阻止)更米。如果在讀取完所有的策略規(guī)則之后沒有匹配項欺栗,就去執(zhí)行默認的策略。一般而言征峦,防火墻策略規(guī)則的設置有兩種:一種是“通”(即放行)迟几,一種是“堵”(即阻止)。當防火墻的默認策略為拒絕時(堵)栏笆,就要設置允許規(guī)則(通)类腮,否則誰都進不來;如果防火墻的默認策略為允許時蛉加,就要設置拒絕規(guī)則蚜枢,否則誰都能進來,防火墻也就失去了防范的作用针饥。

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

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

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

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

處理轉發(fā)的數據包(FORWARD)藐守;

在進行路由選擇后處理數據包(POSTROUTING)。

一般來說莽鸭,從內網向外網發(fā)送的流量一般都是可控且良性的吗伤,因此我們使用最多的就是INPUT規(guī)則鏈,該規(guī)則鏈可以增大黑客人員從外網入侵內網的難度硫眨。

比如在您居住的社區(qū)內足淆,物業(yè)管理公司有兩條規(guī)定:禁止小商小販進入社區(qū);各種車輛在進入社區(qū)時都要登記礁阁。顯而易見巧号,這兩條規(guī)定應該是用于社區(qū)的正門的(流量必須經過的地方),而不是每家每戶的防盜門上姥闭。根據前面提到的防火墻策略的匹配順序丹鸿,可能會存在多種情況。比如棚品,來訪人員是小商小販靠欢,則直接會被物業(yè)公司的保安拒之門外廊敌,也就無需再對車輛進行登記。如果來訪人員乘坐一輛汽車進入社區(qū)正門门怪,則“禁止小商小販進入社區(qū)”的第一條規(guī)則就沒有被匹配到骡澈,因此按照順序匹配第二條策略,即需要對車輛進行登記掷空。如果是社區(qū)居民要進入正門肋殴,則這兩條規(guī)定都不會匹配到,因此會執(zhí)行默認的放行策略坦弟。

但是护锤,僅有策略規(guī)則還不能保證社區(qū)的安全,保安還應該知道采用什么樣的動作來處理這些匹配的流量酿傍,比如“允許”烙懦、“拒絕”、“登記”赤炒、“不理它”修陡。這些動作對應到iptables服務的術語中分別是ACCEPT(允許流量通過)、REJECT(拒絕流量通過)可霎、LOG(記錄日志信息)魄鸦、DROP(拒絕流量通過)⊙⒗剩“允許流量通過”和“記錄日志信息”都比較好理解拾因,這里需要著重講解的是REJECT和DROP的不同點。就DROP來說旷余,它是直接將流量丟棄而且不響應绢记;REJECT則會在拒絕流量后再回復一條“您的信息已經收到,但是被扔掉了”信息正卧,從而讓流量發(fā)送方清晰地看到數據被拒絕的響應信息蠢熄。

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

當把Linux系統(tǒng)中的防火墻策略設置為REJECT拒絕動作后,流量發(fā)送方會看到端口不可達的響應:


而把Linux系統(tǒng)中的防火墻策略修改成DROP拒絕動作后捏顺,流量發(fā)送方會看到響應超時的提醒六孵。但是流量發(fā)送方無法判斷流量是被拒絕,還是接收方主機當前不在線:


2 基本的命令參數

iptables是一款基于命令行的防火墻策略管理工具幅骄,具有大量參數狸臣,學習難度較大。好在對于日常的防火墻策略配置來講昌执,大家無需深入了解諸如“四表五鏈”的理論概念,只需要掌握常用的參數并做到靈活搭配即可诈泼,這就足以應對日常工作了懂拾。

iptables命令可以根據流量的源地址、目的地址铐达、傳輸協(xié)議岖赋、服務類型等信息進行匹配,一旦匹配成功瓮孙,iptables就會根據策略規(guī)則所預設的動作來處理這些流量唐断。另外,再次提醒一下杭抠,防火墻策略規(guī)則的匹配順序是從上至下的脸甘,因此要把較為嚴格、優(yōu)先級較高的策略規(guī)則放到前面偏灿,以免發(fā)生錯誤丹诀。表8-1總結歸納了常用的iptables命令參數。再次強調翁垂,我們無需死記硬背這些參數铆遭,只需借助下面的實驗來理解掌握即可。


如前面所提到的防火墻策略設置無非有兩種方式沿猜,一種是“通”枚荣,一種是“堵”,當把INPUT鏈設置為默認拒絕后啼肩,就要往里面寫入允許策略了橄妆,否則所有流入的數據包都會被默認拒絕掉,同學們需要留意規(guī)則鏈的默認策略拒絕動作只能是DROP祈坠,而不能是REJECT呼畸。

向INPUT鏈中添加允許ICMP流量進入的策略規(guī)則:

在日常運維工作中,經常會使用ping命令來檢查對方主機是否在線颁虐,而向防火墻的INPUT規(guī)則鏈中添加一條允許ICMP流量進入的策略規(guī)則就默認允許了這種ping命令檢測行為蛮原。


再次重申,防火墻策略規(guī)則是按照從上到下的順序匹配的另绩,因此一定要把允許動作放到拒絕動作前面儒陨,否則所有的流量就將被拒絕掉花嘶,從而導致任何主機都無法訪問我們的服務。另外蹦漠,這里提到的22號端口是ssh服務使用的(有關ssh服務椭员,請見下一章),劉遄老師先在這里挖坑笛园,等大家學完第9章后可再驗證這個實驗的效果隘击。

在設置完上述INPUT規(guī)則鏈之后,我們使用IP地址在192.168.10.0/24網段內的主機訪問服務器(即前面提到的設置了INPUT規(guī)則鏈的主機)的22端口研铆,效果如下:

然后埋同,我們再使用IP地址在192.168.20.0/24網段內的主機訪問服務器的22端口(雖網段不同,但已確認可以相互通信)棵红,效果如下凶赁,就會提示連接請求被拒絕了(Connection?failed):


?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市逆甜,隨后出現的幾起案子虱肄,更是在濱河造成了極大的恐慌,老刑警劉巖交煞,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咏窿,死亡現場離奇詭異,居然都是意外死亡素征,警方通過查閱死者的電腦和手機翰灾,發(fā)現死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稚茅,“玉大人纸淮,你說我怎么就攤上這事⊙窍恚” “怎么了咽块?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長欺税。 經常有香客問我侈沪,道長,這世上最難降的妖魔是什么晚凿? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任亭罪,我火速辦了婚禮,結果婚禮上歼秽,老公的妹妹穿的比我還像新娘应役。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布箩祥。 她就那樣靜靜地躺著院崇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袍祖。 梳的紋絲不亂的頭發(fā)上底瓣,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音蕉陋,去河邊找鬼捐凭。 笑死,一個胖子當著我的面吹牛凳鬓,可吹牛的內容都是我干的茁肠。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼村视,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了酒奶?” 一聲冷哼從身側響起蚁孔,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惋嚎,沒想到半個月后杠氢,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡另伍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年鼻百,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摆尝。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡温艇,死狀恐怖,靈堂內的尸體忽然破棺而出堕汞,到底是詐尸還是另有隱情勺爱,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布讯检,位于F島的核電站琐鲁,受9級特大地震影響,放射性物質發(fā)生泄漏人灼。R本人自食惡果不足惜围段,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望投放。 院中可真熱鬧奈泪,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苹支,卻和暖如春砾隅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背债蜜。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工晴埂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寻定。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓儒洛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親狼速。 傳聞我的和親對象是個殘疾皇子琅锻,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354