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

這篇文章試圖澄清一些網絡工作原理,以及如何將Linux設備變成路由器,從而使我們的網絡無論在家中還是在企業中都更加安全。 因此,讓我們開始做生意:

此內容基於《 Linux-系統管理和網絡服務操作》-SébastienBOBILLIER

路由和過濾

要討論和理解路由,我們首先可以定義路由器的作用是什麼? 為此,我們可以說,路由器除了創建網絡並允許與其他設備連接(知道我們可以使用AP,Switch,Hub或其他設備進行連接)之外,還能夠將兩個不同的網絡相互連接。

路由器

如圖所示,路由器創建了一個本地網絡“ 10.0.1.0”,並到達其兩個接口之一。 然後,路由器在其另一個接口上具有另一個網絡,該網絡具有可用於連接到Internet的公用IP。 路由功能基本上是充當這兩個網絡之間的中介,以便它們可以通信。

Linux作為路由器。

自然地,Linux內核已經具有執行“轉發”的功能,但是默認情況下它是禁用的,因此,如果我們希望我們的Linux執行此工作,則必須轉到該文件。

/proc/sys/net/ipv4/ip_forward

在那裡,我們將發現它是一個僅包含零“ 0”的文件,我們必須做的是將其更改為一個“ 1”以激活此行為。 不幸的是,當我們重新啟動計算機時,將其刪除,要使其默認處於激活狀態,我們必須使用以下命令:

sysctl net.ipv4.ip_forward=1

或直接在文件中進行編輯 /etc/sysctl.conf中。 根據分發情況,此配置也可以位於以下位置的文件中:  /etc/sysctl.d/。

默認情況下,我們的Linux必須具有一個路由表,該表通常是我們局域網網絡的配置以及與路由器的連接。 如果要查看此路由,可以使用兩個命令:

route -n

o

netstat -nr

這兩個命令應返回相同的值。

2014-09-30 18:23:06的屏幕截圖

通常,此配置足以使您的Linux充當網關,其他計算機可以在我們的計算機中導航。 現在,如果我們希望Linux連接兩個或多個網絡(無論是否為本地網絡),我們都可以使用靜態路由。

假設我的Linux有兩個網絡接口,第一個具有Internet連接,其網絡為172.26.0.0,第二個(10.0.0.0)具有來自另一個本地網絡的某些計算機。 如果我們想將數據包路由到另一個網絡,我們可以使用:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

通常是:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

如果我們給 路線-n 無論此網絡是否存在,此路由都將在我們的表格中固定。

2014-09-30 18:31:35的屏幕截圖

如果我們要消除上述路由,可以使用

route del -net 10.0.0.0 netmask 255.0.0.0

iptables。

基本上iptables用於過濾數據包,傳出,傳入或其他數據包,這使其成為管理我們的網絡流量的絕佳工具。 好的,iptables,就像它允許我們過濾同一台計算機的流量一樣,它也允許我們過濾通過它的流量。 (轉發)。 iptables可以分為表,鍊和動作。

  • 董事會:  基本上可以有兩個表, 過濾, 過濾數據包和  NAT 轉換地址,即從一個網絡移動到另一個網絡。
  • CADENAS: 鏈指的是我們要過濾或游動的流量類型,也就是說,我們要將表應用於哪個流量? 他們可以是:  輸入:傳入流量, OUTPUT: 出站流量或 前鋒: 通過它的流量,但這不是它自己的連接。
  • 它也可能出現 引導, 路由後,用於以某種方式處理數據包。
  • 動作: 動作基本上是鏈上要執行的動作。 這個動作可以是 下降, 只會破壞流量或 接受。 允許流量執行該操作。

IPTABLES規則按創建順序保存並執行,如果規則刪除了前一個規則,則始終應用該順序中的最後一個規則。

防火牆策略。

通常,防火牆自然以兩種方式工作:

  1. 允許所有流量,除非,或
  2. 除...以外,不允許任何流量

要應用政策,請使用 IPTABLES-P動作鏈

其中,字符串表示流量類型(INPUT,OUTPUT,FORWARD,POSTROUTING ...),並且操作為DROP或ACCEPT。

讓我們來看一個例子。

2014-09-30 18:53:23的屏幕截圖

在這裡,我們看到起初我能夠ping通,然後我告訴IPTABLES所有輸出流量都是DROP或不允許。 然後我告訴IPTABLES接受它。

如果我們要從頭開始構建防火牆,則必須始終應用以下規則(除...外,不允許任何流量。為此,我們應用規則

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
如果應用這些策略,則它們將沒有任何類型的連接
.

要返回,我們寫相同的內容,並用ACCEPT代替DROP。

此時,由於所有流量都被拒絕,因此我們開始告訴IPTABLES它可以擁有什麼流量。

語法為:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

其中:

字串= 輸入,輸出或前進

origin_ip =數據包的來源,可以是單個IP或網絡,在這種情況下,我們必須指定掩碼。

destination_ip =數據包的去向。 (可以是單個IP或網絡,在這種情況下,我們必須指定掩碼)。

協議 =表示數據包使用的協議(icmp,tcp,udp ...)

端口= 流量的目的端口。

行動= 刪除或接受。

例如:

2014-09-30 19:26:41的屏幕截圖

所有受限政策均適用。

2014-09-30 19:27:42的屏幕截圖

然後,我們添加規則,以便能夠使用TCP協議通過端口80 HTTP和443 HTTPS進行通信。 然後端口53將其用於DNS客戶端解析域,否則您將無法導航。 這適用於udp協議。

該行:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

這是由於以下原因:例如,當您發出HTTP請求時,您連接到服務器的端口80,但是要返回信息的服務器需要通過任何端口連接到您。 (通常大於1024)。

由於我們所有的端口都關閉,除非我們打開所有高於1024的端口(錯誤的想法),否則將無法實現。 這說明來自我建立的連接的所有傳入流量都被接受。 我的意思是,原則上我開始建立聯繫。

將OUTPUT放到規則中時,這僅適用於有問題的設備,如果我們將設備用作路由器以允許這些連接,則必須將OUTPUT更改為FORWARD。 由於流量通過計算機但不是由計算機啟動
重新啟動後,所有這些規則都將被刪除,因此您必須創建腳本以使其默認啟動。 但是我們將在接下來的內容中看到

希望您喜歡此信息。 在下一篇中,我將討論Firewal的NAT,代理和腳本。


發表您的評論

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

*

*

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

  1.   羅傑里奧·平托 他說:

    這是許多企業家製造自己的防火牆所基於的基礎,這就是為什麼市場上有這麼多品牌的嵌入式Linux防火牆的原因,有些很好,而有些則不多。

  2.   希伯 他說:

    優秀的文章。 我期待第二部分。

  3.   米爾頓 他說:

    很好的解釋,它幫助我了解了我的工作的代理人。 謝謝

  4.   浮士德 他說:

    您好Jlcmux,

    太好了,我真的很喜歡,何時可以與對方聯繫?

    問候和感謝分享

    1.    @jlcmux 他說:

      感謝您的評論。

      我昨天發送了另一部分,在一天的過程中,我認為他們將發布它。

      問候。

  5.   以色列 他說:

    很好的文章朋友@ Jlcmux,我真的和他一起學習了,因為他澄清了我一段時間以來的一些疑問,順便說一句,您不會介意分享本文的出處,即SébastienBOBILLIER,slau2s和現在看第二部分,salu2s。

    1.    @jlcmux 他說:

      您好,感謝您對以色列發表評論。

      原來,我有實體書。 但是我在Google圖書上找到了此鏈接。 http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      我認為這是完整的。

  6.   阿里爾 他說:

    很好的文章,我增加一個問題:如果有專用的硬件,將Linux用作路由器有什麼好處? 還是只是為了運動? 我知道有專門的發行版,但我不知道它們是要搶救舊PC還是在配置上提供更大的靈活性。

    1.    @jlcmux 他說:

      好吧,我認為優缺點取決於您要實現此方案的場景。 為什麼一定要不為您的房屋購買UTM或類似的東西? 也許對於一個負擔不起的小企業。 它也可以作為練習,因為它可以幫助您了解所有邏輯,並且可以更好地配置專用的FWall。 除此之外,幾乎所有這些設備實際上都具有嵌入式Linux。

      問候。

  7.   阿里爾 他說:

    您好,一個問題,您能在Linux中為網絡之間的類似路由生成一個“人工”接口嗎? (數據包跟踪程序樣式)與虛擬機一起使用? 例如,如果我有eth0(因為我當然有一張卡),我可以創建eth1來建立另一個網絡嗎? 很好的老師!

    1.    拉夫 他說:

      當然,在Linux中,您可以創建虛擬接口。 如果您有eth0,則可以有eth0:0,eth0:1,eth0:2 ...等等

  8.   欽諾洛科 他說:

    很好,謝謝分享