面向新手的iptables,好奇,感興趣(第二部分)

當 DesdeLinux 我當時只有幾個月大,我寫了一個非常簡單易懂的 iptables 的教學: 面向新手的iptables,好奇,感興趣(第1部分) 。 我使用比喻來比較我們的計算機和房屋,防火牆和房屋的門以及其他示例,在沒有太多技術或複雜概念的情況下,我以一種有趣的方式解釋了什麼是防火牆,什麼是iptables以及如何開始使用它以及配置。 這是先前iptables教程的第二部分的延續

發生在幾天前,我使用Linksys AP(接入點)在女友家裡放了一個Wifi,儘管本地人在技術上不是最了解,也就是說,並不是存在很多開裂的危險,但總是在Wifi和計算機中均具有出色的安全性是一個好主意。

我不會在這裡評論Wi-Fi安全,因為這不是本文的目標,我將重點介紹我當前在筆記本電腦上使用的iptables配置。

以下命令在終端中執行,它們需要以管理員權限執行,我將在每個命令之前添加sudo,您可以通過以root身份直接執行命令來執行相同操作或避免使用sudo

在上一篇文章中,我曾解釋過,在防火牆中有必要首先拒絕所有傳入流量,為此:

sudo iptables -P INPUT DROP

然後,我們必須允許我們自己的計算機具有輸入數據的權限:

sudo iptables -A INPUT -i lo -j ACCEPT

以及接受來自我們計算機的請求數據包:

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

為了更好地理解這些行,我建議閱讀上一篇文章的前半部分: 面向新手的iptables,好奇,感興趣(第1部分)

到目前為止,我們的計算機可以毫無問題地瀏覽Internet,但是任何其他環境(LAN,Internet,Wifi等)都無法以任何方式訪問我們的計算機。 我們將根據需要開始配置iptables。

使用ulogd將iptables日誌輸出到另一個文件:

默認情況下,iptables日誌進入內核日誌,系統日誌或類似的文件...默認情況下,在Arch中,現在我什至不記得它們的去向,這就是為什麼我使用 烏洛格德 以便iptables日誌位於另一個文件中。

sudo iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ULOG

允許訪問我的私有服務器:

我不使用VirtualBox或類似虛擬化的工具,而是使用 Qemu + KVM 它必須能夠像我剛才在上面指定的iptables規則那樣連接到我的筆記本電腦,這就是為什麼我必須授予我的虛擬服務器IP的權限以便它可以訪問我的筆記本電腦:

sudo iptables -A INPUT -i virbr0 -p tcp -s 192.168.122.88 -j ACCEPT

我們將詳細介紹這一行,理解每個參數的含義很重要,因為從現在開始,它們將被重複很多次:

-輸入 :我是說要聲明入站流量規則

-i virbr0 :我聲明接受流量的接口不是etho(LAN)或wlan0(Wifi),我具體說這是我的virbr0接口,即筆記本電腦通過其進行通信的虛擬網絡接口(內部)。我的虛擬服務器(反之亦然)

-p TCP :我指定了協議,最常用的是UDP和TCP,在這裡真的不用放了,但是...習慣上是指定要接受的協議類型

-s 192.168.122.88 :軟件包的來源,來源。 也就是說,該規則引用了專門來自IP 192.168.122.88的數據包

-j接受 :在這裡,我已經說過要處理與上述匹配的軟件包,在這種情況下,請接受。

換句話說,作為總結,我將接受來自IP 192.168.122.88的數據包,但是如果您要輸入來自該IP BUT的數據包! 他們從不是virbr0的接口進入,也就是說,他們嘗試從IP 192.168.122.88輸入數據包,但它們是從我們Wifi網絡中的計算機輸入的,如果是這種情況,數據包將被拒絕。 為什麼? 因為我們明確指定為yes,所以我們接受來自192.168.122.88的數據包,但是(僅)但是,如果數據包來自另一個接口(LAN,RAS,Wifi和其他),它們還必須從virbr0接口(內部,虛擬網絡接口)進入等等),那麼它們將不被接受。 通過指定接口,您可以看到我們可以進一步限制它,從而可以更好地控制輸入(或不輸入)計算機的內容。

從家庭Wifi的任何IP接受ping:

從其他連接到Wifi的計算機上,如果您嘗試ping我的筆記本電腦,我想允許它。 原因? 想法還在於,在接下來的幾週內將隔壁房屋中的PC鏈接到網絡,因此共享信息將變得更簡單,更流暢,當我開始進行測試以將台式機鏈接到Wifi時,我將需要ping通便攜式計算機以檢查連接性,如果我的便攜式計算機不能ping通我,我可以認為AP出現故障,或者訪問Wifi時出現錯誤,這就是為什麼我希望允許ping通。

sudo iptables -A INPUT -i wlo1 -p icmp -s 192.168.1.0/24 -d 192.168.1.51 -j ACCEPT

-輸入 :和以前一樣,我指的是傳入流量

-i wlo1 :與以前相似。 在前一種情況下,我指定了虛擬接口,在本例中,我指定了另一個接口,即我的wifi接口:wlo1

-p icmp :icmp協議,icmp = ping。 也就是說,我不允許SSH或類似的東西,我僅允許ping(icmp)

-s 192.168.1.0/24 :數據包的來源,即,只要數據包來自IP 192.168.1。 將被接受

-d 192.168.1.51 :目標IP,即我的IP。

-j接受 :我指出如何處理與以上匹配的軟件包,請接受。

也就是說,為了以一種運行方式進行解釋,我接受它們可以ping通我(icmp協議),其目的地專門是我的IP,只要它們來自諸如192.168.1 .__之類的IP,而且它們也不能來自任何網絡接口,他們必須專門從我的Wifi網絡界面(wlo1)輸入

僅對一個IP接受SSH:

有時我需要通過 通過我的智能手機進行SSH控製筆記本電腦,這就是為什麼我必須為此從Wifi的IP允許SSH訪問筆記本電腦的原因:

sudo iptables -A INPUT -i wlo1 -p tcp -s 192.168.1.0/24 -d 192.168.1.51 --dport 22 -j ACCEPT

從這一行來看,唯一不同或值得強調的是: –Dport 22 (我使用的SSH端口)

也就是說,我接受通過端口22連接到我的筆記本電腦的嘗試,只要它們來自我的wifi的任何IP,它們還必須將我的IP作為特定的目的地,並且也要通過wlo1接口,即我的wifi (不是局域網,等等)

允許他們查看您的網站:

這不是我的情況,但是如果你們中的任何人擁有一個託管網站,並且不想拒絕任何人的訪問,也就是說,任何地方的每個人都可以訪問該網站,它比您想像的要簡單得多:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

換句話說,這裡它們允許通過端口80的所有傳入流量(tcp)。如您所見,我沒有指定允許訪問的IP或網絡,沒有指定允許的IP範圍,iptables假定我要允許訪問所有現有的IP範圍,即整個世界🙂

其他組合:

我還有許多其他規則,例如,從我的家庭LAN接受ping IP(為此,它基本上與上述相同,更改IP範圍),這與我上面剛剛解釋的...像這樣的筆記本電腦,我不使用真正複雜的東西,例如限制連接,抗DDoS,我將其留給服務器使用,在我的筆記本電腦上,我不需要它🙂

無論如何,到目前為止,這篇文章。

如您所見,使用iptables並不是那麼複雜,一旦構建了腳本並在其中編寫規則,就很簡單,然後對其進行修改,向防火牆添加或刪除規則。

他們在這裡評論,儘管您可能有任何疑問,我也不認為自己是這個問題上的專家。我會盡力為您提供幫助。

問候


發表您的評論

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

*

*

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

  1.   冒險 他說:

    很好,很好解釋,很好。
    我喜歡這種類型的帖子。

    1.    KZKG ^ Gaara 他說:

      非常感謝您發表評論🙂

      這篇文章是我長期以來的債務,最終能夠償還這筆錢令人愉快。^ _ ^

      問候

      1.    飛思康 他說:

        你在古巴有問題嗎?
        …幾天前,我使用Linksys AP(接入點)在我女友的家裡放了一個Wifi。

        1.    KZKG ^ Gaara 他說:

          是的,我當然是在古巴出生和生活的。 為什麼這樣問?

        2.    山姆·伯格斯 他說:

          @FIXOCONN:朋友您好,請原諒問題的話題,但是如何定義Cinnamon在用戶代理中顯示為桌面環境? 我將Mint 13與Cinnamon一起使用,但是每次在此站點上發表評論時,都不會讓Cinnamon徽標出現在用戶代理中

          如果不太麻煩,您是否願意將我的用戶代理詳細信息傳遞給我? 我想知道這些數據可以自己放置)

          我在頁面上留下了一個頁面,您可以對其進行審核並提供信息。 謝謝和管理員,請原諒本信息中的“拖釣”(如果可以這樣稱呼)-> http://user-agent-string.info/

          1.    KZKG ^ Gaara 他說:

            在UserAgent的任何部分添加“肉桂”(不帶引號),然後徽標應出現在以後的註釋中🙂

  2.   布魯諾·卡西歐(Bruno Cascio) 他說:

    很好的帖子! 很清楚😀

    1.    KZKG ^ Gaara 他說:

      感謝您的閱讀和感謝您的評論comment

  3.   他說:

    謝謝,對我有幫助!

  4.   奧斯卡·格拉納達(Oscar Granada) 他說:

    您好,首先祝賀您的博客,我認為那太好了。
    可能要提到的一點是,使用ULOG登錄的選項在具有ulogd2的操作系統中不起作用,在這種情況下,規則應為:
    sudo iptables -A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -j NFLOG

    1.    KZKG ^ Gaara 他說:

      首先,非常感謝您對博客的評價🙂

      我已經在Arch中安裝了ulogd v2.0.2-2,並且放置的行沒有問題(我必須在/etc/ulogd.conf中放入loglevel = 1,但是它將日誌帶到另一個文件中沒有問題。

      您使用的是ulogd v2或更高版本,我留下的那句話對您來說是否正確?

      致謝,並感謝您的評論。

  5.   城市 他說:

    我一直在等待第二部分,記得當我閱讀第一部分時(這是我在防火牆中的入門)。 謝謝@ KZKG ^ Gaara,問候🙂

    1.    KZKG ^ Gaara 他說:

      感謝您閱讀我😀
      嘿,是的,我說過……這個帖子是我很久以前的債務^ _ ^

  6.   何塞·路易斯·岡薩雷斯 他說:

    問候。 很好的帖子。 我正在嘗試配置iptables規則以將流量從魷魚重定向到dansguardian,但仍無法實現目標。 在這方面,我將提供一些幫助。

    1.    KZKG ^ Gaara 他說:

      iptables的? 這不是直接用Squid中的ACL完成的嗎?

  7.   無名 他說:

    “我還有很多其他規則,例如..”
    這就是我所謂的偏執狂,男孩
    再多一點,您就在調製解調器/路由器的每個開放端口中放了一包Rotwailer'

    1.    KZKG ^ Gaara 他說:

      哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

  8.   伊万 他說:

    朋友問候,碰巧我需要配置IPTable的幫助,以至於當我在自定義名稱服務器的瀏覽器中鍵入地址時(例如,當我鍵入ns80.mydomain.com和ns1.mydomain時,它僅拒絕對端口2的訪問)。 com(這是我的名稱服務器)IPtables拒絕訪問端口80,以便瀏覽器嘗試加載該頁面,但是一段時間後它卻從未加載,這恰好是我已經使用以下命令嘗試過的:

    iptables -A輸入-d ns1.midomini.com -p tcp –dport 80 -j DROP
    iptables -A輸入-d ns2.midomini.com -p tcp –dport 80 -j DROP

    但是它唯一要做的就是拒絕所有域中的端口80進入(因為它們與虛擬主機共享相同的IP),我希望它只能出現在我的名稱服務器的網址和我的名稱服務器指向的IP上,也就是說,IP表在以下位置拒絕訪問端口80:

    ns1.midomini.com(指向A)-> 102.887.23.33
    ns2.midomini.com(指向A)-> 102.887.23.34

    以及域名服務器指向的IP

    102.887.23.33
    102.887.23.34

    具有此系統的公司的示例是:Dreamhost
    他們的名稱服務器:ns1.dreamhost.com和ns2.dreamhost.com,它們指向的IP在瀏覽器的地址欄中鍵入時不會響應

    提前非常感謝您的關注,我非常希望您能對此給予幫助,我真的很需要它,迫切需要!

    美好的一天 !!

    1.    KZKG ^ Gaara 他說:

      你好伊万,

      透過電子郵件聯絡我 (kzkggaara[at]desdelinux[dot]net)更冷靜地談論它並更好地解釋它,明天我一定會回答你(今天我路過)

      您想做的事情很簡單,我不知道為什麼您告訴我的行對您不起作用,但您必須檢查日誌和其他可能在此處過長的內容。

      問候,我在等你的電子郵件

  9.   涅森夫 他說:

    從理論上講,使用iptables可以防止來自aircrack之類的程序的斷開連接請求。 我是正確的??? 好吧,我會做測試,但是如果您告訴我,您會讓我非常高興XDDD

    1.    KZKG ^ Gaara 他說:

      從理論上講,我想是這樣,現在,我不知道該怎麼做,我從未做過……但我再說一遍,從理論上講,我認為可以。

  10.   亞歷克斯 他說:

    應用iptables規則後,我無法訪問本地網絡上的共享Windows文件夾。 我應該應用什麼規則來解決它?
    謝謝。

    1.    KZKG ^ Gaara 他說:

      您應用了哪些iptables規則?
      這是“新手iptables”的第二部分,您讀過第一部分嗎? 我想知道您是否應用了上一篇文章中的規則

      1.    亞歷克斯 他說:

        是的,我已經閱讀了這兩部分。 對於腳本,我以您發布的另一篇有關systemd啟動規則的文章為基礎。

        #!/斌/慶典
        #-UTF 8-

        #iptables二進制
        iptables =»/ usr / bin / iptables»

        扔出去 ””

        ##清理桌子##
        $ iptables -F
        $ iptables -X
        $ iptables -Z
        #echo»-將FLUS製作為iptables»&& echo»»

        ##使用ULOGD建立日誌##
        $ iptables -A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -j ULOG

        ##定義默認的DROP策略##
        $ iptables -P輸入滴
        $ iptables -P FORWARD DROP
        #echo»-默認情況下定義的DROP策略»&& echo»»

        ##一切都允許localhost ##
        $ iptables -A輸入-i lo -j接受
        $ iptables -A輸出-o lo -j接受
        #echo»-允許所有本地主機»&& echo»»

        ##允許輸入我發起的連接的數據包##
        $ iptables -A輸入-m狀態–狀態已建立,相關-j接受
        #echo»-允許我發起的連接包»&& echo»»

        扔出去 ” ##############################”
        echo»## IPTABLES配置好了! ##»
        扔出去 ” ##############################”

        我在互聯網上閱讀過,對於samba,您應該在腳本中具有以下規則:

        $ iptables -A輸入-p tcp –dport 139 -j接受
        $ iptables -A輸入-p tcp –dport 445 -j接受
        $ iptables -A INPUT -p udp –sport 137 -j ACCEPT
        $ iptables -A輸入-p udp –dport 137 -j接受
        $ iptables -A輸入-p udp –dport 138 -j接受

        但是,即使沒有他們,我也可以看到Windows工作組。 :S

      2.    亞歷克斯 他說:

        問題解決了。 修改工作組,主機允許samba配置文件中的參數。

  11.   奧特曼茲 他說:

    很棒的文章,太棒了!
    我只是讀過它,我既喜歡您解釋它的方式,也喜歡iptables的真正有用的用法,我真的很想學習如何更深入地使用它。
    問候和精彩的文章,希望您能發表有關Iptables的更多信息! ^^

  12.   LEO 他說:

    親;

    我有一個帶iptables的代理,我的網絡之一無法ping通 http://www.google.cl 因此,我阻塞了端口,並嘗試了千種方法來打開端口,但沒有任何反應。 如果無法ping通,則無法連接Outlook

  13.   博爾哈 他說:

    恭喜您! 很好。 但是我有一個問題。 有時,在網絡上分配給您的IP地址可以更改(如果確實可以為我們的MAC地址分配IP),但是Iptables是否有可能允許通過MAC地址通過SSH訪問我們的服務器?

    我希望我已經很好地解釋了自己。

    問候,非常感謝!

  14.   費爾南多·馬丁·甘 他說:

    您好,您知道我已經配置了linux服務器,輸入這些命令後,我阻止了所有內容並失去了訪問權限,我幾乎可以恢復所有內容,但是我丟失了兩件事。 *如果通過ip,2進行通信,我將無法再通過Web瀏覽器通過cname«服務器»進行訪問,另一方面,在放置\\服務器和看了所有共享資源。 希望您能幫助我,我知道這很傻,但是我無法解決,謝謝

  15.   他說:

    我逐字引用:

    icmp協議,icmp = ping。 也就是說,我不允許SSH或類似的東西,我僅允許ping(icmp)

    ICMP和PING不相同。 Ping是ICMP協議的一部分,但還不是全部。 ICMP(Internet控制消息協議)協議具有更多用途,其中一些存在一定的危險。 並且您正在接受所有ICMP流量。 您將只限於ping。

    您好!

  16.   歐克 他說:

    我必須進行實習,但是對iptables的了解不多,請您幫我一下。
    謝謝!!!!!!!