2020年第一篇文章,先祝你們新年快樂,2020年暴瘦、暴富~~~,新年第一天就在作項目QAQ,在這裏分享項目的一部分,其它部分將在後面開源分享,歡迎你們一塊兒交流分享web
防火牆是由軟件和硬件組成的系統,它處於安全的網絡(一般是內部局域網)和不安全的網絡(一般是Internet,但不侷限於Internet)之間,根據由系統管理員設置的訪問控制規則,對數據流進行過濾。
因爲防火牆置於兩個網絡之間,所以從一個網絡到另外一個網絡的全部數據流都要流經防火牆。根據安全策略,防火牆對數據流的處理方式有3種:shell
(1)容許數據流經過; (2)拒絕數據流經過; (3)將這些數據流丟棄;
當數據流被拒絕時,防火牆要向發送者回復一條消息,提示發送者該數據流已被拒絕。當數據流被丟棄時,防火牆不會對這些數據包進行任何處理,也不會向發送者發送任何提示信息。丟棄數據包的作法加長了網絡掃描所花費的時間,發送者只能等待迴應直至通訊超時。
防火牆是Internet安全的最基本組成部分。可是,咱們必需要牢記,僅採用防火牆並不能給整個網絡提供全局的安全性。對於防護內部的攻擊,防火牆顯得無能爲力,同祥對於那些繞過防火牆的鏈接(如某些人經過撥號上網),防火牆則毫無用武之地。vim
netfilter/iptables(簡稱爲iptables)組成Linux平臺下的包過濾防火牆,與大多數的Linux軟件同樣,這個包過濾防火牆是免費的,它能夠代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網絡地址轉換(NAT)等功能。安全
規則(rules)其實就是網絡管理員預約義的條件,規則通常的定義爲「若是數據包頭符合這樣的條件,就這樣處理這個數據包」。規則存儲在內核空間的信息 包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當數據包與規 則匹配時,iptables就根據規則所定義的方法來處理這些數據包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的 主要工做就是添加、修改和刪除這些規則。bash
這是第一個要說的地方,Iptables和netfilter的關係是一個很容易讓人搞不清的問題。不少的知道iptables殊不知道 netfilter。其實iptables只是Linux防火牆的管理工具而已,位於/sbin/iptables。真正實現防火牆功能的是 netfilter,它是Linux內核中實現包過濾的內部結構。服務器
(1)當一個數據包進入網卡時,它首先進入PREROUTING鏈,內核根據數據包目的IP判斷是否須要轉送出去。 (2)若是數據包就是進入本機的,它就會沿着圖向下移動,到達INPUT鏈。數據包到了INPUT鏈後,任何進程都會收到它。本機上運行的程序能夠發送數據包,這些數據包會通過OUTPUT鏈,而後到達POSTROUTING鏈輸出。 (3)若是數據包是要轉發出去的,且內核容許轉發,數據包就會如圖所示向右移動,通過FORWARD鏈,而後到達POSTROUTING鏈輸出。
表(tables)提供特定的功能,iptables內置了4個表,即filter表、nat表、mangle表和raw表,分別用於實現包過濾,網絡地址轉換、包重構(修改)和數據跟蹤處理。
鏈(chains)是數據包傳播的路徑,每一條鏈其實就是衆多規則中的一個檢查清單,每一條鏈中能夠有一 條或數條規則。當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該數據包是否知足規則所定義的條件。若是知足,系統就會根據 該條規則所定義的方法處理該數據包;不然iptables將繼續檢查下一條規則,若是該數據包不符合鏈中任一條規則,iptables就會根據該鏈預先定 義的默認策略來處理數據包。
Iptables採用「表」和「鏈」的分層結構。在REHL4中是三張表五個鏈。如今REHL5成了四張表五個鏈了,不過多出來的那個表用的也不太多,因此基本仍是和之前同樣。下面羅列一下這四張表和五個鏈。注意必定要明白這些表和鏈的關係及做用網絡
1.filter表——三個鏈:INPUT、FORWARD、OUTPUT 做用:過濾數據包 內核模塊:iptables_filter. 2.Nat表——三個鏈:PREROUTING、POSTROUTING、OUTPUT 做用:用於網絡地址轉換(IP、端口) 內核模塊:iptable_nat 3.Mangle表——五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD 做用:修改數據包的服務類型、TTL、而且能夠配置路由實現QOS內核模塊:iptable_mangle(別看這個表這麼麻煩,我們設置策略時幾乎都不會用到它) 4.Raw表——兩個鏈:OUTPUT、PREROUTING
做用:決定數據包是否被狀態跟蹤機制處理 內核模塊:iptable_rawapp
1.INPUT——進來的數據包應用此規則鏈中的策略 2.OUTPUT——外出的數據包應用此規則鏈中的策略 3.FORWARD——轉發數據包時應用此規則鏈中的策略 4.PREROUTING——對數據包做路由選擇前應用此鏈中的規則 (全部的數據包進來的時侯都先由這個鏈處理) 5.POSTROUTING——對數據包做路由選擇後應用此鏈中的規則(全部的數據包出來的時侯都先由這個鏈處理)
-A 在指定鏈的末尾添加(append)一條新的規則 -D 刪除(delete)指定鏈中的某一條規則,能夠按規則序號和內容刪除 -I 在指定鏈中插入(insert)一條新的規則,默認在第一行添加 -R 修改、替換(replace)指定鏈中的某一條規則,能夠按規則序號和內容替換 -L 列出(list)指定鏈中全部的規則進行查看 -E 重命名用戶定義的鏈,不改變鏈自己 -F 清空(flush) -N 新建(new-chain)一條用戶本身定義的規則鏈 -X 刪除指定表中用戶自定義的規則鏈(delete-chain) -P 設置指定鏈的默認策略(policy) -Z 將全部表的全部鏈的字節和數據包計數器清零 -n 使用數字形式(numeric)顯示輸出結果 -v 查看規則表詳細信息(verbose)的信息 -V 查看版本(version) -h 獲取幫助(help)
DMZ區:CentOS7 --- IP:192.168.9.100 Gateway:192.168.9.254 防火牆:kali --- ip1:211.67.93.254;ip2:192.168.9.254;ip3:192.168.33.254; 外網主機:win2003 --- IP:211.67.93.100 Gateway:211.67.93.254 內網主機:win2003 --- IP:192.168.33.100 Gateway:192.168.33.254
在防火牆(kali)上設置轉發功能ssh
→ Qftm ← :~# vim /etc/sysctl.conf
tcp
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD ACCEPT
容許內網訪問外網 動態NAT 自動封裝改變源IP
iptables -t nat -A POSTROUTING -s 192.168.9.0/24 -o eth1 -j MASQUERADE
限制外網訪問內網(限制新鏈接,舊連接是內網訪問外網返回回來的數據)
iptables -t filter -A FORWARD -i eth1 -o eth3 -m state --state NEW -j DROP
內網ping外網,能ping通
不容許外網直接訪問DMZ區
iptables -t nat -A PREROUTING -d 192.168.9.0/24 -i eth1 -j DNAT --to-destination 192.168.9.10 iptables -t filter -A FORWARD -i eth1 -d 192.168.9.10 -m state --state NEW -j DROP
使用DNAT經過訪問公網IP訪問DMZ中web服務器
iptables -t nat -A PREROUTING -d 211.67.93.254 -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.9.100
iptables -t nat -A PREROUTING -d 211.67.93.254 -i eth1 -p tcp --dport ssh -j DNAT --to-destination 192.168.9.100
遠程SSH
iptables -t nat -A PREROUTING -d 211.67.93.254 -i eth1 -p icmp --icmp 8 -j DNAT --to-destination 192.168.9.100
Ping測試
容許內網主機既可經過公網IP訪問DMZ中web服務器也可經過內網IP
iptables -t nat -A PREROUTING -d 211.67.93.254 -i eth3 -p tcp --dport 80 -j DNAT --to-destination 192.168.9.100
訪問測試
避免當侵略者攻陷DMZ時,進一步攻到內測
iptables -t filter -A FORWARD -i eth2 -o eth3 -m state --state NEW -j DROP
#!/bin/bash :<<EOF title: Firewalld集成策略 date: 2020/01/01 author: Qftm EOF #初始化策略 iptables -F iptables -t nat -F iptables -X #設置鏈路的默認策略 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD ACCEPT ##容許內網主機訪問外網,但不容許外網訪問內網主機 #容許內網訪問外網 動態NAT 自動封裝改變源IP iptables -t nat -A POSTROUTING -s 192.33.3.0/24 -o eth1 -j MASQUERADE #限制外網訪問內網(限制新鏈接,舊連接是內網訪問外網返回回來的數據) iptables -t filter -A FORWARD -i eth1 -o eth2 -m state --state NEW -j DROP ##外網不能直接訪問DMZ,容許外網經過公網IP訪問DMZ區域中Web服務 #不容許外網直接訪問DMZ區 iptables -t nat -A PREROUTING -d 192.168.9.0/24 -i eth1 -j DNAT --to-destination 192.168.9.10 iptables -t filter -A FORWARD -i eth1 -d 192.168.9.10 -m state --state NEW -j DROP #使用DNAT經過訪問公網IP訪問DMZ中web服務器 iptables -t nat -A PREROUTING -d 211.67.93.254 -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.9.100 #容許外網經過公網IP SSH DMZ區域web服務器進行遠程管理 iptables -t nat -A PREROUTING -d 211.67.93.254 -i eth1 -p tcp --dport ssh -j DNAT --to-destination 192.168.9.100 #容許外網經過公網IP ping DMZ區域主機 iptables -t nat -A PREROUTING -d 211.67.93.254 -i eth1 -p icmp --icmp 8 -j DNAT --to-destination 192.168.9.100 ##容許內網主機訪問內網DMZ區域的服務器,DMZ區域的服務器不容許訪問內網主機 #容許內網主機既可經過公網IP訪問DMZ中web服務器也可經過內網IP iptables -t nat -A PREROUTING -d 211.67.93.254 -i eth3 -p tcp --dport 80 -j DNAT --to-destination 192.168.9.100 #不容許DMZ區直接訪問內網 iptables -t filter -A FORWARD -i eth2 -o eth3 -m state --state NEW -j DROP