【Firewalld(Iptables)】

             ****************************************
                *************Firewalld(iptables)********   
                ****************************************



一,firewalld(動態防火牆後臺程序)
    1.(重點)相比iptables,firewalld更加智能化,用以支持網絡「zones」,以及分配對一個網絡及其相關鏈接和界面的信任。
    2.(重點)(關於策略的配置)具有一個通向服務或者應用程序以直接增長防火牆規則。【相比iptables,firewalld智能就在此處,它不用進行5條策略的分析,系統會將你的策略安排在什麼時候的地方】
    3.它支持以太網橋,並有分離運行時間和永久性配置選擇。
    4.具有IPv4和IPv6防火牆設置和支持。
二,文件所屬位置(firewalld和iptablesservice不一樣點)
    1.firewalld
    /usr/lib/firewalld/和/etc/firewalld  【這兩個裏面有各類xml文件,進行配置和存儲】
    2.iptables
    /etc/sysconfig/iptables     【這裏面進行配置存貯】

三,iptables和firewalld的執行區別
    1.iptables server的更改,表示清除全部舊的規則,而後從/etc/sysconfig/iptables裏讀取全部的新的規則。
    2.firewalld卻不會再建立新的規則;僅僅運行規則中的不一樣之處。所以,firewalld能夠再運行時間內。改變設置而不丟失現行鏈接
   
四,防火牆結構(上層的圖形化和服務,也是基於iptables的命令,最底層是內核中的netfilter)
   
    system-config-firewall  ————> iptables(service)
                               ————> iptables(command)                                  ————>kernel(netfilter)
    firewall-config
            —————> firewalld(daemon& service)
    firewall-cmd       
五,zones(9個)
    trusted(信任):接受全部網絡鏈接。
    home(家庭):僅接受ssh,mdns,ipp-client,samba-client,或者dhcpv6-client服務鏈接。
    internal(內部):僅接收ssh,mdns,ipp-client,samba-client,dhcpv6-client。
    work(工做):用於工做區,僅接受ssh,ipp-client或dhcpv6-client服務鏈接。
    public(公共):在公共區域內使用,僅接受ssh或dhcpv6-client服務鏈接。
    external(外部):出去的ipv4網絡鏈接經過此區域假裝和轉發,僅接受ssh服務鏈接。
    dmz(非軍事區):僅接受ssh服務鏈接
    block(限制):拒絕全部網絡鏈接
    drop(丟棄):任何接收的網絡數據包都被丟棄,沒有任何回覆。
六,命令

#firewall-cmd --state           [查看firewalld的狀態]
#firewall-cmd --get-active-zones    [查看當前活動的區域,並附帶一個目前分配給他們的接口列表]
#firewall-cmd --get-defailt-zone    [查看默認區域]
#firewall-cmd --get-zones       [查看全部可用域區]

#firewall-cmd --get=public --list-all   [列出指定區域的全部設置,不指定就是默認]
#firewall-cmd --get-service     [列出全部預設服務]
#firewall-cmd --list-all-zones      [列出全部區域的設置]   
#firewall-cmd --set-default-zone=dmz    [設置默認區域]

#firewall-cmd --permanent --zone=internal --add-source=172.25.254.60/24 [設置源地址的所屬zone]
(--permanent參數表示永久生效設置,若是沒有指定--zone參數,則表示加入到默認區域)
#firewall-cmd --permanent --zone=internal --remove-source=172.25.254.60/24 [刪除網絡地址]

#firewall-cmd --permanent --zone=internal --add-interface=eth0  [添加,修改,刪除網絡接口eth0]
#firewall-cmd --permanent --zone=internal --change-interface=eth0
#firewall-cmd --permanent --zone=internal --remove-interface=eth0

#firewall-cmd --permanent --zone=internal --add-service=smtp    [添加,刪除郵件服務]
#firewall-cmd --permanent --zone=internal --remove-service-smtp    

#firewall-cmd --zone=public --list-ports    [列出,添加,刪除端口]
#firewall-cmd --permanent --zone=public --add-port=8080/tcp
#firewall-cmd --permanent --zone=public --remove-port=8080/tcp

#firewall-cmd --reload          [重載配置,並不會中斷服務]
#firewall-cmd --complete-reload     [徹底重載,會中斷服務]

firewalld的規則被保存在/etc/firewalld目錄下的文件中,你也能夠直接編輯這些文件達到配置防火牆的目的。/usr/lib/firewalld目錄下的內容是不能夠被編輯的,但能夠用作默認模板。

七,防火牆規則(Direct Rules)
 
 1. 經過firewall-cmd工具,可使用 --direct選項在運行時間裏增長或者移除鏈。
  iptables策略在修改時候須要明白五條鏈的意義,對於不熟悉iptables的人,使用直接接口很是危險,若不注意會致使防火牆***。
  直接端口模式適用於服務或者程序,以便在運行時間內增長特定的防火牆規則。
  直接端口模式添加的規則優先應用

   添加規則:
 #firewall-cmd --direct --add-rule ipv4filter IN_public_allow 0 -p tcp --dport 80 -j ACCEPT
   刪除規則:
 #firewall-cmd --direct --remove-ruleipv4 filter IN_public_allow 0 -p tcp --dport 80 -j ACCEPT
   列出規則:
 #firewall-cmd --direct--get-all-rules

 2.多語言命令的格式(操做身份root)
 
  (1)增長一項規則的命令格式以下:
     firewall-cmd [--zone=zone] --add-rich-rule='rule' [--timeout=seconds]
  (這樣將爲zone分區增長一項多語言規則rule。這個選項能夠屢次指定。若是分區被省略。將使用默認分區。若是出現超時,規則將在指定的秒數內被激活,並在以後被自動移除)
  (2)刪除一項規則:
     firewall-cmd [--zone=zone] --remove-rich-rule='rule'
  (3)檢查一項規則是否存在:
     firewall-cmd [--zone=zone] --query-rich-rule='rule'
  (複查是否已經成爲區域增長一個多語言規則,若是可用,屏幕會顯示yes,退出狀態爲0;不然,屏幕顯示no,退出狀態爲1.若是省略zone,默認區域將被使用)
  (4)列出全部多語言規則:
     firewall-cmd --list-rich-rules
   (5)添加規則:
     firewall-cmd --add-rich-rule='rulefamily="ipv4" source address="172.25.254.60"accept'  [容許172.25.254.60主機全部鏈接]
     firewall-cmd --add-rich-rule='ruleservice name=ftp limit value=2/s accept'  [每秒鐘容許2個新鏈接訪問ftp服務]
     firewall-cmd --add-rich-rule='ruleservice name=ftp log limit value="1/m" audit accept'   [贊成新的IPv4和IPv6鏈接FTP,並使用審覈每分鐘登陸一次]
     firewall-cmd --add-rich-rule='rulefamily="ipv4" source address="172.25.254.60/24" servicename=ssh log prefix="ssh" level="natice" limitvalue="3/m"' [容許來自172.25.254.60/24地址的新IPv4鏈接SSH服務,而且每分鐘記錄三次]
     firewall-cmd --permanent--add-rich-rule='rule protocol value=icmp drop'   [禁ping,丟棄全部ICMP數據包]
     firewall-cmd --add -rich-rule='rulefamily=ipv4 source address=172.25.254.6/24 reject' --timeout=10      [當使用source和destination指定地址時,必須有family參數指定ipv4或ipv6.若是指定超時,規則將在指定的秒數內被激活,並在以後被自動移除。]
     firewall-cmd --add -rich-rule='rulefamily=ipv6 source address="2001:db8::/64"servicename="dns" audit limit value="1/h"reject' --timeout=300    [拒絕全部來自2001:db8::/64子網的主機訪問dns服務,而且每小時只審覈記錄一次服務]
     firewall-cmd --permanent--add-rich-rule='rule family=ipv4 source address=172.25.254.6/24 servicename=ftp accept'    [容許172.25.254.6/24訪問主機ftp服務]
     firewall-cmd --add-rich-rule='rulefamily="ipv6" source address="fe80::f8f8:5aff:fe6e:7bd0"forward-port to-addr="fe80::f8f8:5aff:fe6e:7bd1"protocol="tcp" port="4011 to-port="4012" " [轉發來自ipv6地址fe80::f8f8:5aff:fe6e:7bd0 TCP端口4011到fe80::f8f8:5aff:fe6e:7bd1的TCP端口4012上]

八,【假裝/端口轉發】

   (1)假裝
     #firewall-cmd --permanent--zone=<ZONE> --add-masquerade
     #firewall-cmd --permanent--zone=< ZONE > --add-rich-rule='rule family=ipv4 source
addres=172.25.0.0/24 masquerad
   (2)轉發
     #firewall-cmd --permanent--zone=<ZONE> --add-forward-port=prot=80:proto=TCP:toport=8080:toaddr=172.25.254.6
     ## firewall-cmd --permanent--zone=< ZONE > --add-rich-rule='rule family=ipv4 source
address=172.25.254.6/24 forward-port port=80 protocol=tcp to-port=8080'

九,管理SElinux端口標籤

列出端口標籤:
#semanage port -l

添加端口標籤:
#semanage port -t http_port_t -p tcp 82

刪除端口標籤
#semanage port -d http_port_t -p tcp 82

十,規則表:

1.filter表——三個鏈:INPUT、FORWARD、OUTPUT
做用:過濾數據包  內核模塊:iptables_filter.
2.Nat表——三個鏈:PREROUTING、POSTROUTING、OUTPUT
做用:用於網絡地址轉換(IP、端口) 內核模塊:iptable_nat
3.Mangle表——五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
做用:修改數據包的服務類型、TTL、而且能夠配置路由實現QOS內核模塊:iptable_mangle(別看這個表這麼麻煩,我們設置策略時幾乎都不會用到它)
4.Raw表——兩個鏈:OUTPUT、PREROUTING
做用:決定數據包是否被狀態跟蹤機制處理 內核模塊:iptable_raw


(一)規則鏈:

    1.INPUT——進來的數據包應用此規則鏈中的策略
    2.OUTPUT——外出的數據包應用此規則鏈中的策略
    3.FORWARD——轉發數據包時應用此規則鏈中的策略
    4.PREROUTING——對數據包做路由選擇前應用此鏈中的規則
    (記住!全部的數據包進來的時侯都先由這個鏈處理)
    5.POSTROUTING——對數據包做路由選擇後應用此鏈中的規則
    (全部的數據包出來的時侯都先由這個鏈處理)

(二)規則表之間的優先順序:

    Raw——mangle——nat——filter
    規則鏈之間的優先順序(分三種狀況):

第一種狀況:入站數據流向

    從外界到達防火牆的數據包,先被PREROUTING規則鏈處理(是否修改數據包地址等),以後會進行路由選擇(判斷該數據包應該發往何處),若是數據包的目標主機是防火牆本機(好比說Internet用戶訪問防火牆主機中的web服務器的數據包),那麼內核將其傳給INPUT鏈進行處理(決定是否容許經過等),經過之後再交給系統上層的應用程序(好比Apache服務器)進行響應。

第二衝狀況:轉發數據流向

    來自外界的數據包到達防火牆後,首先被PREROUTING規則鏈處理,以後會進行路由選擇,若是數據包的目標地址是其它外部地址(好比局域網用戶經過網關訪問QQ站點的數據包),則內核將其傳遞給FORWARD鏈進行處理(是否轉發或攔截),而後再交給POSTROUTING規則鏈(是否修改數據包的地址等)進行處理。

第三種狀況:出站數據流向
     防火牆本機向外部地址發送的數據包(好比在防火牆主機中測試公網DNS服務器時),首先被OUTPUT規則鏈處理,以後進行路由選擇,而後傳遞給POSTROUTING規則鏈(是否修改數據包的地址等)進行處理

(三)圖示法

               ___________________________ 
              |               |
    PREROUTING    | INPUT   FORWORD    OUTPUT | POSTROUTING    
              |                           |
              ----------------------------

               Kernal Netfilter




linux

相關文章
相關標籤/搜索