中小型企業級防火牆部署


2020年第一篇文章,先祝大家新年快樂,2020年暴瘦、暴富~~~,新年第一天就在做項目QAQ,在這里分享項目的一部分,其它部分將在后面開源分享,歡迎大家一起交流分享

防火牆

防火牆是由軟件和硬件組成的系統,它處於安全的網絡(通常是內部局域網)和不安全的網絡(通常是Internet,但不局限於Internet)之間,根據由系統管理員設置的訪問控制規則,對數據流進行過濾。
  由於防火牆置於兩個網絡之間,因此從一個網絡到另一個網絡的所有數據流都要流經防火牆。根據安全策略,防火牆對數據流的處理方式有3種:

(1)允許數據流通過;
(2)拒絕數據流通過;
(3)將這些數據流丟棄;

當數據流被拒絕時,防火牆要向發送者回復一條消息,提示發送者該數據流已被拒絕。當數據流被丟棄時,防火牆不會對這些數據包進行任何處理,也不會向發送者發送任何提示信息。丟棄數據包的做法加長了網絡掃描所花費的時間,發送者只能等待回應直至通信超時。
  防火牆是Internet安全的最基本組成部分。但是,我們必須要牢記,僅采用防火牆並不能給整個網絡提供全局的安全性。對於防御內部的攻擊,防火牆顯得無能為力,同祥對於那些繞過防火牆的連接(如某些人通過撥號上網),防火牆則毫無用武之地。

IPTABLES

iptables簡介

netfilter/iptables(簡稱為iptables)組成Linux平台下的包過濾防火牆,與大多數的Linux軟件一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網絡地址轉換(NAT)等功能。

iptables基礎

規則(rules)其實就是網絡管理員預定義的條件,規則一般的定義為“如果數據包頭符合這樣的條件,就這樣處理這個數據包”。規則存儲在內核空間的信息 包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當數據包與規 則匹配時,iptables就根據規則所定義的方法來處理這些數據包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的 主要工作就是添加、修改和刪除這些規則。

iptables和netfilter的關系

這是第一個要說的地方,Iptables和netfilter的關系是一個很容易讓人搞不清的問題。很多的知道iptables卻不知道 netfilter。其實iptables只是Linux防火牆的管理工具而已,位於/sbin/iptables。真正實現防火牆功能的是 netfilter,它是Linux內核中實現包過濾的內部結構。

iptables傳輸數據包的過程

(1)當一個數據包進入網卡時,它首先進入PREROUTING鏈,內核根據數據包目的IP判斷是否需要轉送出去。 
(2)如果數據包就是進入本機的,它就會沿着圖向下移動,到達INPUT鏈。數據包到了INPUT鏈后,任何進程都會收到它。本機上運行的程序可以發送數據包,這些數據包會經過OUTPUT鏈,然后到達POSTROUTING鏈輸出。 
(3)如果數據包是要轉發出去的,且內核允許轉發,數據包就會如圖所示向右移動,經過FORWARD鏈,然后到達POSTROUTING鏈輸出。
## iptables的規則表和鏈 表(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_raw ### 規則鏈 ``` 1.INPUT——進來的數據包應用此規則鏈中的策略 2.OUTPUT——外出的數據包應用此規則鏈中的策略 3.FORWARD——轉發數據包時應用此規則鏈中的策略 4.PREROUTING——對數據包作路由選擇前應用此鏈中的規則 (所有的數據包進來的時侯都先由這個鏈處理) 5.POSTROUTING——對數據包作路由選擇后應用此鏈中的規則(所有的數據包出來的時侯都先由這個鏈處理) ``` ## iptables命令參數 ``` -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 ``` # 環境部署 ## Firewalld路由模式 在防火牆(kali)上設置轉發功能

→ Qftm ← :~# vim /etc/sysctl.conf

## Firewalld初始化策略
## Firewalld默認策略 ``` iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD ACCEPT ```
## Firewalld安全策略 ### 允許內網主機訪問外網,但不允許外網訪問內網主機 允許內網訪問外網 動態NAT 自動封裝改變源IP ``` iptables -t nat -A POSTROUTING -s 192.168.33.0/24 -o eth1 -j MASQUERADE ```
限制外網訪問內網(限制新連接,舊鏈接是內網訪問外網返回回來的數據) ``` iptables -t filter -A FORWARD -i eth1 -o eth3 -m state --state NEW -j DROP ```
### 測試 內網ping外網,能ping通
  外網ping內網ping不通
### 外網不能直接訪問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
  遠程SSH

允許外網通過公網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
  Ping測試

允許內網主機訪問內網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區里面的某些特定服務器直接訪問內網

避免當侵略者攻陷DMZ時,進一步攻到內測

iptables -t filter -A FORWARD -s 192.168.9.64/26 -o eth3 -m state --state NEW -j DROP
  測試WWW服務器
## Firewalld集成策略 ```shell #!/bin/sh :< 設置鏈路的默認策略

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD ACCEPT

允許內網主機訪問外網,但不允許外網訪問內網主機

允許內網訪問外網 動態NAT 自動封裝改變源IP

iptables -t nat -A POSTROUTING -s 192.168.33.0/24 -o eth1 -j MASQUERADE

限制外網訪問內網(限制新連接,舊鏈接是內網訪問外網返回回來的數據)

iptables -t filter -A FORWARD -i eth1 -o eth3 -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
iptables -t nat -A PREROUTING -d 211.67.93.254 -i eth1 -p tcp --dport 443 -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 -s 192.168.9.64/26 -o eth3 -m state --state NEW -j DROP


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM