歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

【Linux探索之旅】第四部分第四課:分析網絡,隔離防火


內容簡介

1、第四部分第四課:分析網絡,隔離防火

2、第四部分第五課:源碼編譯,安裝便利


分析網絡,隔離防火

俗語說得好:愛國愛家愛師妹! 防火防盜防師兄!

雖然說,Linux本身很安全,至少比Windows安全多了。你看Linux發行版哪有安裝殺毒軟件的,同樣基於修改的Unix系統的蘋果的Mac OS系統也幾乎不需要裝殺毒軟件。

 

如果Windows不裝個殺毒軟件,簡直不好意思出門跟別人打招呼(日常黑Windows任務完成 :P)。開個玩笑啦,Windows是很好的系統,小編也使用Windows系統的。

 

不過,在網絡上穿行,還是小心為妙。畢竟網上有不懷好意的黑客(或普通人),想方設法獲取我們的隱私,或者控制我們的電腦。

 

這一課很重要,我們來學習幾個厲害的命令,能幫助我們分析網絡,再來學習如何使用輕量級的防火牆。

 

我們一起學習經由電腦的網絡通信是怎麼回事。事實上,當你的電腦連接到互聯網(Internet)時,總會有那麼一些電腦裡的軟件會連上網,然後下載或上傳信息,很多時候還是偷偷地在後台進行。

 

如何監控此等“大逆不道”的行徑呢?如何知道哪個軟件正在與網絡通信,在哪個端口上進行呢?就是本課要探究的。

 

還有,懂得配置防火牆是很必要的,不管是在你的家用電腦上還是在你租用的服務器上。因為這能有效保護電腦,免得一些軟件未經你同意就和互聯網交換信息。使用防火牆是一個重要的安全防護措施,特別是每個系統管理員(System Administrator)更是不能逃避,總要學習。

 

好了,廢話了這麼多,開篇入正題吧。

 

希望你們沒有嫌我啰嗦,真的不要... 如果你嫌我啰嗦,你要說出來,你不說出來,我怎麼知道你嫌我啰嗦呢?如果你說出來了,但是不夠大聲,那也是不行的,不大聲我聽不清楚啊...

 

(好了,好了,不要再扔雞蛋了... 你,說的就是你啦,還拿了一個番茄准備扔诶,要不要辣麼誇張)要跨年(2015-2016)了,就原諒小編頑皮一次吧。

 

大家2016加油啊!要做T型人才噢~

 


host和whois命令:告訴我你是誰

 

我們已經知道,每台連上網的電腦都會被一個IP地址所標識,這個IP地址是全球唯一的。

 

目前,大多數的IP地址是這樣的形式:

 

96.172.150.23

 

這樣的形式被稱為IPv4格式(以小數點分隔)。IP就是Internet Protocol(網際協議),v是version(版本)的首字母,4表示這是版本四。

 


0?wx_fmt=png

 

不過,因為IPv4的地址不夠用的關系,現在已經有不少IP地址的格式是IPv6的格式了,已有的IPv4地址也被慢慢替換成IPv6。IPv6的IP地址類似這樣:

 

fa80::109:62fa:cb80:29d2

 

上面的是簡寫形式(兩個冒號::用於合並連續的幾組0),完整的形式是:

 

fa80:0000:0000:0000:0109:62fa:cb80:29d2

 

以冒號分隔的8組4位的16進制(也就是8組16位二進制,因為2的4次方是16),所以 8 * 16 = 128

 

IPv6把 IP 地址由IPv4的32 位(4個2的8次方,4 * 8 = 32)增加到 128 位。

 

2的32次方是42億多一點。隨著互聯網的快速成長,IPv4的42億個地址的分配最終於2011年2月3日用盡。而IPv6的128位可以提供的IP地址數量可達3.402823669 × 10^38個,屆時每個人家居中的每件電器,每件對象,甚至地球上每一粒沙子都可以擁有好幾個IP地址。根本用不完,IP多就是這麼任性。

 

我們可以為每一個IP地址綁定一個主機名,主機名的英語是host name。

 

注意:

這裡的主機名其實應該被稱為完整主機名: Fully Qualified Domain Name (FQDN),是由主機名(host name)和域名(domain name)一起構成。我們一般會用主機名或域名來代稱FQDN,其實不是那麼准確。

 

(domain name和host name是不同概念,有點小復雜,可以去看看《鳥哥的Linux私房菜》的對應課程,講得非常通俗易懂:http://linux.vbird.org/linux_server/0350dns.php)

 

例如,程序員聯盟的服務器的完整主機名是www.coderunity.com,這裡的www是主機名,coderunity.com是域名。對應的IP地址是58.96.181.197

 

下面我們會用主機名或域名代指FQDN了。

 

相比於記憶一串數字(IPv4)或數字+字母(IPv6)的IP地址,人腦更擅長記住主機名。如下圖,IP地址和主機名對應:

 

0?wx_fmt=jpeg

 

IP地址和主機名的互相轉換

 

使用host(host是英語“主機”的意思)這個命令我們可以實現IP地址和主機名的互相轉換,例如:

 

host coderunity.com (或 host www.coderunity.com)會得到IP地址:

58.96.181.197

 

而host 58.96.181.197則會得到主機名

 

host命令的其他參數選項,可以用man host來查考。

 

自定義解析

 

IP地址和主機名的解析是由DNS(Domain Name System,域名解析系統)服務器完成的。我們不深入了解DNS的具體工作原理了,半天解釋不完,可以看上面給出的鳥哥的鏈接裡的內容。

 

因此,當你在浏覽器的地址欄裡輸入coderunity.com 時,你就能收到由網絡上的DNS服務器幫你解析出來的IP地址,你就可以訪問程序員聯盟的官網了。

 

你當然不能修改DNS服務器上的主機名和IP地址的對應關系列表(因為有風險,會影響到很多人)。但是你可以自定義你電腦上主機名和IP地址的對應關系。

 

以root身份打開/etc/hosts 文件:

sudo nano /etc/hosts

 

0?wx_fmt=jpeg

 

可以看到一些IP地址和主機名的對應關系,例如:

 

127.0.0.1 對應了localhost

 

127.0.1.1 對應了oscar-laptop,就是小編電腦的主機名

 

下面還有一些IPv6格式的IP地址。

 

你可以往裡面添加自己的解析對。寫在一行裡,在IP地址和主機名之間至少要留一個空格。

 

那麼自定義IP地址和主機名之間的解析關系,有什麼用呢?

 

當然有用,有的時候,網絡上負責解析域名的DNS服務器可能暫時出現故障(很少見),那這時你在地址欄直接輸入IP地址可以訪問對應網站,但是輸入主機名(域名)則不能訪問了,因為沒有DNS服務器解析,域名是不能被識別的。

 

這時,你自定義在本地Linux系統的/etc/hosts文件中的解析規則就可以發揮作用了。你還是可以訪問網站。

 

例如你可以加一條程序員聯盟網站的解析對:

58.96.181.197    coderunity.com

 

但是這樣的方法也有缺陷:假如你的主機的IP地址換了,那你輸入域名就不能上那個網站了。所以,一般來說,我們還是靠經常更新解析對的網絡上的DNS服務器更好(一般一天更新一次)。

 

對於局域網,這個host文件也是很有用的。

 

例如在自己家裡建立的局域網裡面,有你的電腦,還有你老爸的電腦。那你不想記住老爸的電腦的IP地址,怎麼辦呢?可以添加一條解析對,例如:

192.168.0.7     father-laptop

 

這樣,老爸的電腦的IP地址對應的主機名在你這裡就成為father-laptop了,你就可以更方便地訪問老爸的電腦。

 

例如,如果在老爸的電腦裡你有一個賬戶叫oscar,那麼用之前學的SSH來登錄老爸電腦上的oscar賬戶,就是:

ssh oscar@father-laptop

 

就不用輸入:

ssh [email protected]

 

whois:了解有關域名的信息

 

whois這個命令很好記,由who和is兩部分組成,who是英語“誰”的意思,is是英語“是”的第三人稱單數形式。所以連起來表示:是誰

 

每一個域名在登記注冊時都須要填寫:姓,名,聯系地址,聯系方式,等等。這是規定。

 

whois命令就可以幫助我們輕松獲得域名背後的這些信息

 

可以選一個主機名來試試,例如:

whois coderunity.com

 

你就有小編的郵寄地址啦,要送我新年禮物就趕緊哦。哈哈,開玩笑的~

 


ifconfig和netstat命令:控制和分析網絡流量

 

我們接著學習兩個非常強大的命令:ifconfig和netstat。

 

ifconfig:列出網絡接口

 

ifconfig是linux中用於顯示或配置網絡設備(網絡接口卡)的命令,英文全稱是(Network) Interface Configuration。if是Interface的縮寫,表示“接口”;configuration是“配置”的意思。

 

一般來說,你的電腦擁有好幾個網絡接口,也就是說有多種連接網絡的方式。

 

運行ifconfig命令,顯示如下:

 

0?wx_fmt=jpeg

 

在小編的電腦上顯示有三個網絡接口,分別是:

 

eth0,lo,wlan0

 

在你的電腦上可能網絡接口多於三個,也可能少於三個,本不足為奇,取決於你電腦的設備。幸好小編的電腦的三個網絡接口都是最常見的三個,詳述如下:

eth0:對應有線連接(對應你的有線網卡),就是用網線來連接的上網(一般是RJ45網線,見下圖),如果你的電腦目前使用網線來上網,那就是在使用這個接口。有些電腦可能同時有好幾條網線連著(有好幾個有線接口),例如服務器,那麼除了eth0(第一塊有線網卡),你還會看到例如eth1,eth2,等等。

lo:本地回環(Local Loopback,對應一個虛擬網卡)。可以看到它的IP地址是127.0.0.1,似曾相識是嗎?對啊,之前我們在/etc/hosts文件中看到對應localhost的就是這個IP。每台電腦都應該有這個接口,因為它對應著連向... 自己的鏈接。這也是我們稱之為本地回環的原因:所有經由這個接口發送的東西都會回到你自己的電腦。看起來好像並沒有什麼用,但是有時為了某些緣故(可以百度繼續探究),我們需要連接自己。例如用來測試一個網絡程序,但又不想讓局域網或外網的用戶能夠查看,只能在此台主機上運行和查看所用的網絡接口。比如把 HTTPD服務器指定到回壞地址,在浏覽器輸入 127.0.0.1 就能看到你所架設的Web網站了。但只有你自己能看得到,局域網的其它主機或用戶無從知道。

wlan0:對應Wi-Fi無線連接(對應你的無線網卡)。假如你有好幾塊無線網卡,那麼會看到wlan1,wlan2,等等。

 

 

0?wx_fmt=jpeg

 

仔細觀察上面ifconfig輸出的信息,你猜到小編此時用的是哪種方式連網的嗎?

 

聰明如你應該猜到了(可不要害怕閱讀一堆英語哦)。是的,小編此時用的是有線連接的方式上網。證明就在eth0的信息中:

 

RX packets : 4853

TX packets : 4821

 

分別是接收包和發送包的數目。RX是receive(表示“接收”)的縮寫,TX是transmit(表示“發送”)的縮寫。

 

而wlan0的信息中,這兩行是0。

 

當然,本地回環的這兩行也有148呢。所以說,給自己發送東西也是會發生的。

 

ifconfig命令還可以用來配置網絡接口。但這有些超出本課程的范圍了,畢竟需要懂一些網絡方面的知識才能配置啊,不然配錯了就糟了。

 

但是,有一個簡單的配置方式我們可以學習:

接口的激活/關閉

 

使用格式如下:

ifconfig interface state

 

替換 :

  • interface:由你想要修改的網絡接口名稱代替(eth0,wlan0等等)。

    state:由up或down代替,分別表示激活和關閉對應接口。

     

    例如:

    ifconfig eth0 down

     

    關閉eth0這個有線接口,之後就沒有任何網絡傳輸會在eth0上進行了。

    ifconfig eth0 up

     

    激活eth0這個有線接口。

     

    配置IP地址

     

    用ifconfig命令可以配置網絡接口的IP地址和其他數據

     

    例如:

    ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255  

     

    上面的命令用於給eth0網卡配置IP地址:192.168.120.56,加上子網掩碼:255.255.255.0,加上個廣播地址: 192.168.120.255

     

    還有更多命令選項就用man ifconfig來查看吧。

     

    netstat : 網絡統計

     

    netstat命令很好記,它由兩部分組成:net和stat。

     

    net是network的縮寫,表示“網絡”;stat是statistics的縮寫,表示“統計”。所以顧名思義就是對網絡信息進行統計啦。(再論學英語對編程的重要性)

     

    假如你沒有一些網絡方面的知識,那麼netstat命令的輸出可能難以理解,但是也沒那麼難。假如你要了解你的電腦正在網絡上做什麼,那麼netstat是不二選擇。

     

    netstat可以顯示很多信息,但是我們可以用參數來控制顯示信息的種類和樣式。下面介紹幾個常用的參數吧:

     

    netstat -i : 網絡接口的統計信息

     

    首先,試試i參數吧:

    netstat -i

     

    會顯示一張統計列表,列出你電腦的所有網絡接口的一些統計信息,例如小編的電腦就列出了eth0,lo,wlan0這三個接口的使用信息。

     

    netstat -uta : 列出所有開啟的連接

     

    運行

    netstat -uta

     

    0?wx_fmt=jpeg

     

    參數uta分別表示:

    • -u : 顯示UDP連接(u是udp的首字母)

      -t : 顯示TCP連接(t是tcp的首字母)

      -a : 不論連接的狀態如何,都顯示(a是all的首字母)

       

      TCP和UDP是兩種不同的協議,用於在網絡上傳輸數據。

       

      UDP(User Datagram Protocol,用戶數據報協議)一般用於網絡游戲,音頻通訊(例如Skype)。除此之外,一般來說TCP(Transmission Control Protocol,傳輸控制協議)是最常用的。一般在互聯網上都是用TCP/IP協議。可以去看看小編的《TCP/IP探索之旅》。

       

      我們也可以只顯示TCP連接的信息:

      netstat -ta
      

       

      或者只顯示UDP連接的信息(不常用):

      netstat -ua
      

       

      再來看看上面圖片中state(狀態)那一列的信息,有好幾種不同狀態:

       

      • ESTABLISHED:與遠程電腦的連接已建立

        TIME_WAIT : 連接正在等待網絡上封包的處理,一旦處理完畢就開始關閉連接

        CLOSE_WAIT:遠程服務器中止了連接(也許你太久沒什麼動作,處在不活躍狀態)

        CLOSED:連接沒有被使用

        CLOSING:連接正在關閉,但有些數據還沒有發送完畢

        LISTEN:監聽著可能進入的連接。此時連接還沒有被使用。

         

        當然,狀態還不止這幾種,其他的可以在netstat的命令手冊中找到(用man netstat)。

         

        我們再來看看端口的信息,就是上面圖片中冒號(:)之後的數據。

         

        事實上,我們連接其他電腦,可以透過不同的端口(port),有點類似門戶。比如我去朋友家,可能進他們的廚房門,書房門,地下室門,等等。不同的端口用處不同。進廚房門可能看看做菜如何,進書房門可能一窺書香,進地下室門可能去品品葡萄酒。反正臥室門是不可以隨便進的~

         

        摘自百度百科:

         

        ==============

        "端口"是英文port的意譯,可以認為是設備與外界通訊交流的出口。端口可分為虛擬端口和物理端口,其中虛擬端口指計算機內部或交換機路由器內的端口,不可見。例如計算機中的80端口、21端口、23端口等。物理端口又稱為接口,是可見端口,計算機背板的RJ45網口,交換機路由器集線器等RJ45端口。電話使用RJ11插口也屬於物理端口的范疇。

        ==============

         

        如下圖所示:

         

        0?wx_fmt=jpeg

        你可以加上-n參數,假如你想讓端口信息以數字的形式顯示,而不是像上圖中那樣有點看不懂的狀態,比如https,nfs,mysql等等。

         

        80端口是為HTTP(HyperText Transport Protocol)即超文本傳輸協議開放的,此為上網沖浪使用次數最多的協議,主要用於WWW(World Wide Web)即萬維網傳輸信息的協議。可以通過HTTP地址(即常說的“網址”)加“:80”來訪問網站,因為浏覽網頁服務默認的端口號都是80,因此只需輸入網址即可,不用輸入“:80”了。

         

        110端口是為POP3(郵件協議3)服務開放的,用於收發電子郵件。

         

        21端口用於FTP(File Transfer Protocol,文件傳輸協議)服務,FTP服務主要是為了在兩台計算機之間實現文件的上傳與下載。

         

        netstat -lt : 列出狀態是LISTEN的統計信息

         

        netstat -s : 列出總結性的統計信息

         

        還有更多命令選項就用man ifconfig來查看吧。

         


        iptables:參考系防火牆

         

        現在既然我們已經知道如何分析網絡傳輸,我們就趁熱打鐵,學習如何用防火牆來過濾網絡傳輸。

         

        Linux下著名的防火牆是iptables。它有點年紀了,已經服役十幾年。iptables命令可以制定一些規則,規定其他電腦可以使用哪些端口來連接你的電腦(入),以及你的電腦可以連接哪些端口(出)。也可以通過IP地址來過濾。類似下圖所示:

         

         

        0?wx_fmt=jpeg

         

        例如,我想要攔截所有FTP的連接,那麼我可以用iptables封鎖21端口。

         

        安裝iptables防火牆

         

        如果沒有安裝iptables需要先安裝,

         

        CentOS執行:

        sudo yum install iptables
        

         

        Debian/Ubuntu執行:

        sudo apt-get install iptables
        

         

        iptables的使用需要root身份

         

        為了使用iptables,你需要切換到root身份:

         

        sudo su
        

         

        iptables -L : 顯示所有規則

         

        可以看到三個區域:

        • Chain INPUT : 對應控制《進入》的網絡傳輸的規則

          Chain FORWARD : 對應控制《轉發》的網絡傳輸的規則

          Chain OUTPUT : 對應控制《出去》的網絡傳輸的規則

           

          暫時我們還沒有制定任何規則。我們慢慢來學習。

           

           

          1、清除已有iptables規則(慎用)

          iptables -F
          iptables -X
          iptables -Z
          

           

          2、開放指定的端口

          #允許本地回環接口(即運行本機訪問本機)
          iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
          
          # 允許已建立的或相關連的通行
          iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
          
          #允許所有本機向外的訪問
          iptables -A OUTPUT -j ACCEPT
          
          # 允許訪問22端口
          iptables -A INPUT -p tcp --dport 22 -j ACCEPT
          
          #允許訪問80端口
          iptables -A INPUT -p tcp --dport 80 -j ACCEPT
          
          #允許FTP服務的21和20端口
          iptables -A INPUT -p tcp --dport 21 -j ACCEPT
          iptables -A INPUT -p tcp --dport 20 -j ACCEPT
          

           

          #如果有其他端口的話,規則也類似,稍微修改上述語句就行。

           

          #禁止其他未允許的規則訪問(注意:如果22端口未加入允許規則,SSH鏈接會直接斷開。)

          1).用DROP方法

          iptables -A INPUT -p tcp -j DROP
          

          2).用REJECT方法

          iptables -A INPUT -j REJECT
          iptables -A FORWARD -j REJECT
          

           

          3、屏蔽IP

          #如果只是想屏蔽IP的話“3、開放指定的端口”可以直接跳過
          #屏蔽單個IP的命令是
          iptables -I INPUT -s 123.45.6.7 -j DROP
          
          #封整個段即從123.0.0.1到123.255.255.254的命令
          iptables -I INPUT -s 123.0.0.0/8 -j DROP
          
          #封IP段即從123.45.0.1到123.45.255.254的命令
          iptables -I INPUT -s 124.45.0.0/16 -j DROP
          
          #封IP段即從123.45.6.1到123.45.6.254的命令是
          iptables -I INPUT -s 123.45.6.0/24 -j DRO
          

           

          4、查看已添加的iptables規則

           

          iptables -L -n
          

          v:顯示詳細信息,包括每條規則的匹配包數量和匹配字節數
          x:在 v 的基礎上,禁止自動單位換算(K、M) vps偵探
          n:只顯示IP地址和端口號,不將ip解析為域名

           

          5、刪除已添加的iptables規則

           

          將所有iptables以序號標記顯示,執行:

          iptables -L -n --line-numbers
          

           

          比如要刪除INPUT裡序號為8的規則,執行:

          iptables -D INPUT 8
          

           

          6、iptables的開機啟動及規則保存

           

          CentOS上可能會存在安裝好iptables後,iptables並不開機自啟動,可以執行一下:

          chkconfig --level 345 iptables on
          

          將其加入開機啟動。

           

          CentOS上可以執行:service iptables save 保存規則。

           

          Debian/Ubuntu上iptables是不會保存規則的。

           

          需要按如下步驟進行,讓網卡關閉是保存iptables規則,啟動時加載iptables規則。

           

          如果當前用戶不是root,即使使用了sudo,也會提示你沒有權限,無法保存,所以執行本命令,你必須使用root用戶。

           

          可以使用sudo -i 快速轉到root,使用完成,請及時使用su username切換到普通帳戶。

           

          為了重啟服務器後,規則自動加載,我們創建如下文件:

          sudo vim /etc/network/if-pre-up.d/iptables#!/bin/bash
           iptables-save > /etc/iptables.rules
          

           

          添加執行權限。

          chmod +x /etc/network/if-pre-up.d/iptables
          

           

          附上基礎規則:

          *filter 
          :INPUT ACCEPT [106:85568]
          :FORWARD ACCEPT [0:0]
          :OUTPUT ACCEPT [188:168166]
          :RH-Firewall-1-INPUT - [0:0]
          
          #允許本地回環接口(即運行本機訪問本機)
          -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
          
          #允許已建立的或相關連的通行
          -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
          
          #允許所有本機向外的訪問
          -A OUTPUT -j ACCEPT
          
          #允許PPTP撥號到外網
          -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
          
          #僅特定主機訪問Rsync數據同步服務
          -A INPUT -s 8.8.8.8/32 -p tcp -m tcp --dport 873 -j ACCEPT
          
          #僅特定主機訪問WDCP管理系統
          -A INPUT -s 6.6.6.6/32 -p tcp -m tcp --dport 8080 -j ACCEPT
          
          #允許訪問SSH
          -A INPUT -p tcp -m tcp --dport 1622 -j ACCEPT
          
          #允許訪問FTP
          -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
          -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
          
          #允許訪問網站服務
          -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
          
          #禁止所有未經允許的連接
          -A INPUT -p tcp -j DROP
          
          #注意:如果22端口未加入允許規則,SSH鏈接會直接斷開
          #-A INPUT -j REJECT
          #-A FORWARD -j REJECT
          COMMIT
          


          可以使用一下方法直接載入:

           

          1、復制上面的規則粘貼到這裡,保存本文件

          sudo vim /etc/iptables.test.rules
          

          2、把本規則加載,使之生效,注意,iptables不需要重啟,加載一次規則就成了

          sudo iptables-restore < /etc/iptables.test.rules
          

          3、查看最新的配置,應該所有的設置都生效了.

          sudo iptables -L -n
          

          4、保存生效的配置,讓系統重啟的時候自動加載有效配置(iptables提供了保存當前運行的規則功能)

          iptables-save > /etc/iptables.rules
          

           

          看著很復雜,因為還沒學習腳本語言和Vim編輯器的關系。剛好,我們第五部分就會學習Vim編輯器和腳本。

           

          如果你想提前試試,也可以看Ubuntu官方的關於保存和配置開機加載iptables規則的文章:https://help.ubuntu.com/community/IptablesHowTo

           

          我們也見識到了,iptables的配置相當繁復,普通用戶簡直望而卻步。幸好,有一些軟件可以幫助我們減輕痛苦:<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPiZuYnNwOzwvcD4NCjxwPlVGVyAtIFVuY29tcGxpY2F0ZWQgRmlyZXdhbGw8L3A+DQo8cD4mbmJzcDs8L3A+DQo8cD5VRlfKx1VuY29tcGxpY2F0ZWQgRmlyZXdhbGy1xMv10LSjrLnLw/vLvNLl1eK49sjtvP7KxyZsZHF1bzuyu7i01NO1xLfAu/DHvSZyZHF1bzujrLHIaXB0YWJsZXO88rWluty24KGjtat1ZneyorK7ysfU2sO/uPZMaW51eLei0NCw5tbQtrzT0LXEo6zQ0rrDo6xVYnVudHXW0NPQoaM8L3A+DQo8cD4mbmJzcDs8L3A+DQo8cD5VYnVudHW52be9VUZXzsS1taO6PGEgaHJlZj0="https://help.ubuntu.com/community/UFW" target="_blank" title="\">https://help.ubuntu.com/community/UFW

           

          中文Ubuntu官方UFW文檔:http://wiki.ubuntu.org.cn/Ufw%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97

           

          當然了,還有更好的圖形界面的UFW:gufw

           

          Ubuntu官方GUFW文檔:https://help.ubuntu.com/community/Gufw

           

          注意:

          新的防火牆子系統/包過濾引擎nftables在 Linux 3.13 中替代有十多年歷史的iptables。iptables/netfilter是在2001年加入到2.4內核中。

           

          誕生於2008年的nftables設計替代iptables,它提供了一個更簡單的Kernel ABI,減少重復代碼,改進錯誤報告,更有效支持過濾規則。

           

          除了iptables,nftables還將替代ip6tables、arptables和ebtables。Linux內核的第一代包過濾機制是ipfwadm(1.2.1內核,1995年),之後是ipchains(1999年),iptables。nftables是第四代。

           

          nftables引入了一個新的命令行工具nft。nft是iptables及其衍生指令(ip6tables,arptables)的超集。

           

          同時,nft擁有完全不同的語法。如果你習慣於iptables,這是個不好的消息。但是有一個兼容層允許你使用iptables,而過濾是由內核中的nftables完成的。

           

          但是基本的原理是類似的,nftables比iptables更方便,使用更有效率,可以把一些命令合並。

           

          例如:

           

          你想用iptables記錄並丟棄一個包,你必須寫兩條規則,一條記錄,一條丟棄:

           

          iptables -A FORWARD -p tcp --dport 22 -j LOG
          iptables -A FORWARD -p tcp --dport 22 -j DROP
          

           

          使用nft,你可以把兩個目標合並到一起:

           

          nft add rule filter forward tcp dport 22 log drop
          

           

          所以,假如你的Linux內核版本是3.13之前的,那就繼續使用iptables;如果是3.13版本之後,那就用nftables吧(其實nftables要從3.15版本才開始比較成熟)。

           

          還有更多命令選項就用man iptables和man nftables來查看吧。

           


          總結

           

          • 在Internet(互聯網)上,每台電腦都由IP地址來標識。例如:89.210.135.74

            我們可以把一個主機名綁定到一個IP地址上,主機名相對IP地址更容易被記住。例如:coderunity.com 在很多場合,用主機名就可以代替IP地址了。

            host命令可以從IP地址解析出對應主機名,或者從主機名解析出IP地址。

            ifconfig命令列出你電腦上的網絡接口(對應虛擬網卡或實體網卡),可以配置和操作這些接口。

            netstat列出你電腦上打開的連接,說明當下哪些端口正打開著,一個端口就好比引導出入你電腦的門戶。

            可以用iptables來攔截進入某些端口的連接,它是一個很不錯的防火牆。但是配置比較復雜。iptables配置很繁瑣,可以用ufw軟件來減輕壓力。從Linux 3.13開始,nftables替代了iptables。

             


            第四部分第五課預告

             

            今天的課就到這裡,一起加油吧!

            下一課我們學習:源碼編譯,安裝便利

    Copyright © Linux教程網 All Rights Reserved