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鏈輸出。


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











允許外網通過公網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區里面的某些特定服務器直接訪問內網
避免當侵略者攻陷DMZ時,進一步攻到內測
iptables -t filter -A FORWARD -s 192.168.9.64/26 -o eth3 -m state --state NEW -j DROP


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