中小型企業級防火牆部署

2020年第一篇文章,先祝你們新年快樂,2020年暴瘦、暴富~~~,新年第一天就在作項目QAQ,在這裏分享項目的一部分,其它部分將在後面開源分享,歡迎你們一塊兒交流分享web

防火牆

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

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

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

IPTABLES

iptables簡介

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

iptables基礎

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

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_rawapp

規則鏈

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)上設置轉發功能ssh

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

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.9.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 -i eth2 -o eth3 -m state --state NEW -j DROP

Firewalld集成策略

#!/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
相關文章
相關標籤/搜索