使用Iptables保護網絡安全-代理-NAT-IDS:第2部分

上一篇 我們看到IPTables的配置可以用作防火牆。 現在我們可以看到如何創建這些腳本,以便在系統啟動時自動執行規則,以及如何暫時消除或停止這些規則。

在編寫腳本並向您展示它的外觀之前,讓我們先談談NAT以及我們要使用此設備做什麼的概念。

示例的NAT和上下文。

當我們談論NAT時,我們可以將其與路由混淆,因為兩者都負責將兩個不同的網絡相互連接。 真正的區別是,路由選擇是從一個本地網絡轉到另一個本地網絡,而另一個網絡可以連接到路由器並連接到Internet。

而當我們談論NAT時,我們談論的是將數據包從本地或專用網絡路由到公用網絡或Internet。 它通過將與之相連的公共IP放入Internet來掩蓋數據包來實現此目的。 換句話說,我們不需要路由器,因為公共IP由GNU / Linux計算機直接擁有。

NAT

我們將以這樣的口號工作:我們將Linux用作路由器/防火牆,以從本地網絡訪問Internet。 但是,這裡可能出現兩種情況。

  • 我們的Linux位於服務提供商的路由器和本地網絡之間。

在這種情況下,路由器和Linux之間將存在一個網絡,而Linux與本地網絡之間將存在另一個不同的網絡。 這意味著我們的路由器將不必進行NAT,只需進行簡單的流量路由即可,如 上一篇 這將是很好的。

  • 我們的Linux具有一個連接到本地網絡的接口,並且通過另一個接口,它直接接收用於導航的公共IP。

這意味著我們的Linux必須進行NAT,以便數據包可以到達Internet。

出於這個小實驗室的目的,我們將說我們的Linux直接接收公共IP,因此能夠測試NAT的效果。

為了進行NAT,我們然後使用語法

 iptables -t nat -A POSTROUTING -O eth1 -j偽裝

eth1是我們接收公共IP的接口,即我們訪問Internet的接口。

當IP是公共IP時使用MASQUERADE,但它可以隨時間變化(動態)。 否則,我們可以使用SNAT –to-source ip

創建iptables腳本

假設:172.26.0.0是我們的本地網絡,而81.2.3.4是我們用來訪問Internet的公共IP。 (這是一個靜態ip)。 我有接口eth0(本地網絡)

eth1(公共網絡)。

它基本上包括創建一個可以從/etc/init.d/firestop調用的腳本(例如)。 從這個腳本中,我們可以像啟動任何系統守護程序一樣啟動,停止或檢查配置狀態。

假設我的IPTABLES規則是:

#! / bin / bash#我家的防火牆。 #文件名/ etc / firewall_on#通過Jlcmux Twitter:@Jlcmux##基本策略。 iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #NAT從eth0到eth1共享Internet iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4
##允許由我的iptables發起的入站連接-A FORWARD -m state --state已建立,相關-j ACCEPT##授權的出站流量iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT iptables -A轉發-i eth0 -o eth1 -p tcp --dport 443 -j接受iptables -A轉發-i eth0 -o eth1 -p udp --dport 53 -j接受
讓我們不要忘記賦予執行權限

說明:

該腳本基本上執行以下操作:

  1. 首先限制所有導航,連接和交通。 (基本防火牆策略)
  2. 然後使用目標eth1創建NAT。 表示我們有一個靜態的公共IP «81.2.3.4»
  3. 它打開接收我發起的連接包所需的端口。
  4. 接受出站HTTP,HTTPS和DNS通信。
由於我們將Linux用作路由器,因此這些規則將用於FORWARD流量,因此策略用於通過Linux的流量,即它充當中介。 這意味著我們的Linux不能真正直接導航或接收任何數據。 它僅適用於與其連接的計算機,不適用於自身

如果要使用我們的設備導航,則應重複這些行,並適當地將FORWARD更改為INPUT或OUTPUT。

取消腳本。

現在,我們將創建一個覆蓋以上所有內容的腳本,並使計算機清除所有這些內容。 (出於測試目的,或者我們只想關閉防火牆)。

#! / bin / bash#我家的防火牆。 #文件名/ etc / firewall_off#通過Jlcmux Twitter:@Jlcmux##刪除iptables規則-F##應用默認策略(接受所有流量)iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT

自動化。

現在我們必須在其中創建腳本 /etc/init.d/ 服務會自動啟動,我們可以以更舒適的方式對其進行管理。

#! / bin / bash#我家的防火牆。 #文件名/etc/init.d/ Firewall#由Jlcmux Twitter:@Jlcmux case $ 1開始)/ etc / firewall_on ;; 停止)/ etc / firewall_off ;; 狀態)iptables -L ;; *)echo“語法錯誤。有效= /etc/init.d/防火牆啟動|停止|狀態;; esac

說明:

我們輸入的最後一個腳本 /etc/init.d/ 名稱 防火牆。 因此,如果要管理防火牆,可以使用以下命令 /etc/init.d/防火牆啟動。 同樣,我們可以停止它或查看狀態。

現在我們要編輯文件 在/etc/rc.local 我們輸入如下內容: /etc/init.d/防火牆啟動 從系統開始。

也一樣這是第二部分。 我希望它能給大家帶來一些幫助。 接下來,我們將看到代理和IDS。


7條評論,留下您的評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   獵人 他說:

    如果您使用的是Debian,那麼repo(iptables-persistent)中有一個軟件包可以做到這一點,它會根據您使用的內容將當前規則轉儲到/etc/iptables/rules.v4或v6中,然後將其應用於您提起系統時。

  2.   OCZ 他說:

    實際上,要清理常規的iptables防火牆配置(從我的角度來看,使用NAT並非如此),在大多數情況下,刷新規則並將默認策略重置為ACCEPT就足夠了。
    但是從理論上講,據我所知,除此以外,您還需要清除非默認字符串並重置計數器。 考慮到要執行的操作,除了“過濾器”還有其他表,(為此必須讀取文件“ / proc / net / ip_tables_names”)。

    順便說一句,正統的說,在網絡建立之前,防火牆必須已經啟動。 我不知道在其他Linux系統中是如何實現的,但是在Debian的系統中,可以對該腳本進行修改並在“ /etc/network/if-pre-up.d/”目錄中進行設置。

    對所有人進行良好的防火牆保護。 😉

  3.   鸚鵡螺 他說:

    您好,帖子很好。 我已經讀了整兩卷。

    等待下一個

  4.   匿名 他說:

    我無知的一個問題是,我們繼續使用iptables,但是對於幾個內核版本,我們有nftables,我已經在測試,問題是,nftables是關於iptables的beta嗎? iptables會繼續使用更長的時間嗎?

    謝謝。

    1.    友喜 他說:

      nftables包含iptables,ip6tables,arptables和ebtables的所有功能,所有這些功能均使用內核空間和用戶空間中的新基礎結構來確保更好的性能和改進的功能。 nftable將取代iptables和所有其他提及的工具,但暫時不會,至少直到nftable如此廣泛使用為止。

  5.   亞歷山大 他說:

    非常好的帖子,我想閱讀更多,因為它的解釋非常好..問候,謝謝!

  6.   阿夫拉 他說:

    你好! 兩個帖子都很好。
    作為貢獻,您可以在本部分末尾添加:

    “現在,我們將編輯/etc/rc.local文件,並放置如下內容:/etc/init.d/firestop start,以便它從系統開始。”

    將此添加到rc.local。

    如果[-x /etc/init.d/防火牆]; 然後
    /etc/init.d/防火牆啟動
    fi

    這意味著,如果“防火牆”具有執行權限,請執行;否則。
    如果您不希望啟動“防火牆”,則只需刪除權限。

    例如:chmod + x /etc/init.d/防火牆
    使它在每次啟動時運行或...
    chmod -x /etc/init.d/防火牆
    完全禁用它。

    的問候!