iptables學習2

Firewall:工做在主機或網絡邊緣,對進出的報文按事先定義的規則進行檢查,算法

而且由匹配到的規則進行處理的一組硬件或軟件,甚至多是二者的組合安全

隔離用戶訪問,只容許訪問指定的服務    經過ADSL撥號連入互聯網服務器

放一個硬件防火牆在網絡前  這樣的主機 CPU一般都是特製的  這就是硬件防火牆網絡

 

 

 

主機防火牆:工做於主機邊緣, 只能對一臺主機起到保護做用 併發

網絡防火牆:工做於網絡邊緣, 對多臺主機起到保護做用  這是一個硬件 有CPU內存 不須要硬盤  app

對數據報文進行分析 可是必須打開全部功能,也能夠嚴格定向框架

 

工做在內核空間中, 至關於在TCP/IP協議棧前面加一道牆  tcp

網卡--->防火牆----->TCP/IP協議棧 這種是針對主機函數

 

網絡層防火牆:工做在網絡層  網絡防火牆  須要拆掉物理層和鏈路層 僅能檢查源和目標的端口、源和目標IP  內容不能檢查。工具

                         沒問題就能夠進行轉發。

 

應用層防火牆:工做在網關  拆掉TCP和IP首部對內容進行分析 ,  

                         沒問題就進行轉發 至關於路由器  這個網管被稱爲代理服務器

 

 

分別是:網絡層防火牆  應用層防火牆 內部主機

 

可是仍然有可能精心設計報文  怎麼辦?

 

IDS:入侵檢測系統 至關於監控器也須要規則 結合防火牆一塊兒使用

   HIDS:主機入侵檢測系統,做用於主機    例如:OSSEC 

   NIDS:網絡入侵檢測系統 例如:snort

   Filesystem:文件系統級別入侵檢測  例如修改配置文件等行爲   tireware

 

IPS(IDS+防火牆):入侵防護系統  IDS結合防火牆一塊兒工做 及時減低損失

honeypot:蜜罐  誘捕黑客 有漏洞吸引你

 

系統評估安全工具:全方面掃描檢測        例如: Nessus    nmap

  

rootkit攻擊                 烏雲平臺

 

iptables/netfilter:基於網絡層的防火牆, 支持鏈接追蹤(狀態檢測)

          netfilter提供鉤子函數

 

ipfw ----> ipchains-----> iptables  Linux防火牆是參考 openBSD的防火牆

 

 

 

iptables:自己只是防火牆規則編寫工具

netfiter:讓規則生效的網絡過濾器,是一個框架  規則放在這個上面工做

        hook_function  鉤子函數       轉發不會通過用戶空間,只是在內核空間

 

    INPUT  到本機內部

    OUTPUT  到本機出去

    FORWARD 轉發

    POSTROUTING  路由以後  作原地址轉換成公網的IP才能出去         私有地址是不能進行路由的

    PRERROUTING  路由以前  報文回來的時候就須要轉發,不然就交給本身本機處理了  目標地址轉換

 

每一個網卡都有本身的發送隊列

防火牆功能:

過濾:作報文篩選

NATNetwork Address Transltion 網絡地址轉換

     DNAT  轉換目標地址

     SNAT  轉換源地址

mangle:  修修補補 改變IP信息等 在這五個位置上都行

raw: 先無論 用的很少

 

FORWARD:

    filter

    mangle

INPUT

    filter

    mangle

OUT

    filter

    mangle

    nat

PREROUTING

     mangle

     nat

POSTOUTING

     mangle

     nat

 

規則優化:將控制強的放在前面, 應用訪問頻繁的也要放在前面

 

四表:

   fileter  net  mangle  raw

五鏈

   PREROUTING  INPUT  FOREARD  OUTPUT  POSTROUTING

  目標主機不是本機纔會轉發  本機進出都不會通過FORWARD

 

表和鏈的對應關係

     filerINPUT FORWARD.OUTPUT

     natPREROUTING OUTPUT POSTROUTING

     maglePREROUTING FORWARD POSTROUTING INPUT OUTPUT

 

規則:檢查條件, 處理機制

默認策略: 只針對filter

通:白名單,默認爲堵,只對能識別的進行放行

堵:黑名單,默認爲通,只對能識別的進行阻截

 

檢查條件:網絡層

   IPSIP,DIP

   TCPSPORT,DPORT,FLags(標誌位) 例如:syn ack

   UDPSPORT,DPORT

   ICMPICMP-TYPE(報文類型)  ping出去和回來是不一樣的  ping用的協議

 

擴展機制:

  Time、string、state(connection-tracking)鏈接追蹤

 

處理機制:

    DROP(丟棄)        REJECT(拒絕,並返回)

    ACCEPT(容許)       SNAT   DNAT  目標轉換

    RETURN(返回)       REDIRECT(端口轉發)

    LOG(只記錄日誌)

 

mangle:作防火牆標記

 

 

如何寫規則

   -t 表 -L 列出 -n 以數值方式顯示

  iptables [-t table] -N chain

     建立一條自定義的空規則鏈

  iptables [-t table] -X chain

     刪除一條自定義的空規則鏈

  iptables [-t table] -E old-chin-name new-chain-name

    爲鏈修更名

iptables [-t table] -P chain—name target

    爲鏈指定默認策略,修改默認的屬性

iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]

   -F 清空鏈中的規則

     規則由編號,在鏈中自上而下,從1開始

  -L list 列出表中的全部規則

     -n:數字格式顯示ip和port  不然會反解成名字  速度很慢

     -v:顯示信息,

        pkts:packets,被本規則全部匹配到的報文的個數

        baytes:被本規則所匹配到的全部報文的大小子和,單位是字節,會執行單位換算

        target:目標,即處理機制

        port:協議通常爲(TCP|UDP|ICMP)

        opt:可選項

        in:數據包的流入接口

        out:數據包的流出接口

        scource:源地址

        destination:目標地址

      -vv

      -vvv

      -x:exactly:精確值,不執行單位換

      --line-nambers:顯示各規則的行號

 

  -Z:zero,清零:

    把規則的計數器清零

 

iptables [-t table] {-A|-D} chain rule-specification

  -A:append,附加一條規則

     rule-specification     匹配條件 -j 處理機制

    匹配條件:

      通用匹配

     -s  匹配源地址,能夠IP,也能夠網絡地址:可使用!操做符取反,!172.168.0.0/16   -s至關於 --src,或 --source

     -d  匹配目標地址,能夠IP,也能夠網絡地址:可使用!操做符取反,!172.168.0.0/16

     -p  匹配協議,一般只能使用{TCP|UDP|ICMP}三者之一

     -i  數據報文流入的接口,一般只用於INPUT   FORWARD和PREROUTING

     -o  數據報文流出的接口,一般只用OUTPUT    FORWARD和POSTROUTING

 

     保存規則: iptables不是服務 不會監聽端口 定義成服務 只是爲了開機自動運行

       service iptables save

        規則會被保存至/etc/sysconfig/iptables文件中:

        默認,start時也會讀取該文件中的內容以設置規則

        # iptables-save > /path/to/some_rulefile 保存iptables至別的位置

        # iptables-restore < /path/to/some_rulefile 從自定義的位置讀取並使之生效

規則命令:

  -A:添加

  -D:刪除

  iptables [-t table] -D chain rulenum

    當一條被刪除,另外的一條會被補上

  

  插入規則

  iptables [-t table] -I chain [rulenum] rule-specification

   

  替換規則(覆蓋指定規則)

  iptables [-t table] -R chain rulenum rule-specification

 

  顯示指定鏈上的規則添加命令

  iptables [-t table] -S [chain [rulenum]]

 

擴展匹配

    隱含擴展:使用-p {tcp|udp|icmp}指定某特定協議後,自動可以對協議進行的擴展

       -p tcp

          --dport m[-n],匹配的目標端口,能夠是連續的多個端口

          --sportm[-n],匹配的源端口,能夠是連續的多個端口

          --tcp-flags

           URG PSH PST SYN ACK FIN

       -p udp

          --dport m[-n],匹配的目標端口,能夠是連續的多個端口

          --sportm[-n],匹配的源端口,能夠是連續的多個端口

       -p icmp

           icmp-type

    顯式擴展:必需要明確指定的擴展模塊

      -m 擴展模塊名稱 --專用選項1 --專用選項2

 

      multiport:多端口匹配,一次指定多個離散端口

        --source-ports --sport ports{port1 port2}

        --destination-ports, --dports

        --ports

 

     iprange:ip地址服務

       [!] --src-range from [-to]

       [!] --dst-range from [-to]

 

     time 指定時間範圍

        --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

        --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

 

        --timestart hh:mm[:ss]

        --timestart hh:mm[:ss]

 

        [!] --weekdays day[,day....]

 

     string 字符串匹配

        --alog {bm|kmp} :字符匹配查找時使用的算法

        --string STRING」 :要查找的字符串

        --hex-string "HEX-STRING" 要查找的字符,先編碼成16進制格式

 

      connlimit:每IP對指定服務的最大併發鏈接數

       [!] --connlimit-above

 

      limit:報文速率控制

        --limit #[/second|/minute|/hour|/day]

        --limit-burst #

        hping3:安裝此包,作測試

 

      state:狀態追蹤

          ip_conntrack,nf_conntrack

 

          netfilter:會話

           

         --state

             NEW

             ESTABLISHED

             RELATED

             INVALID

             

      調整鏈接追蹤功能所能容納的最大鏈接數

          cat /proc/sys/net/nf_conntrack_max

              定義了鏈接追蹤的最大值,所以,建議按需調大此值

          cat /proc/net/nf_conntrack

             記錄了當前追蹤的全部鏈接

          cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established

          超時時間

 

          法則:

          1.對於進入狀態爲ESTABLISHED都應該放行

          2.對於返回狀態爲ESTABLISHED都應該放行

          3.嚴格檢查進入的狀態爲NEW的連接

          4.全部狀態爲INVALID都應該拒絕

 

 

      -j target

            RETURN:返回調用鏈

 

如何放行工做與被動模式的ftp服務

   1、確保iptables加載ftp協議支持的模塊,ip_nat_ftp,ip_conntrack_ftp

      編輯/etc/syconfig/iftables-config文件,定義以下參數:

      IPTABLES_MIDULES="ip_nat_ftp ip_conntrack_ftp"

    2。放行請求報文的RELATEDESTABLISHED狀態,放行響應報文的ESTABLISHED狀態

 

 

回顧:開機流程

  POST--> BootSequence(MBR:bootloader) -->GRUB -->kernel(initramfs) --> /sbin/init (/etc/inittab,/etc/init/*.conf)

 

  啓動服務時的最後一個服務一般是/etc/rc.d/rc.local/etc/rc.local,這事實上是一個腳本,但凡寫在腳本的命令到或腳本調用都在系統運行至此服務被執行

相關文章
相關標籤/搜索