firewall防火牆

firewall防火牆

1 防火牆簡介

在基於RHEL7的服務器,提供了一個firewall的動態管理的防火牆,其支持IPv4和IPv6,還支持以太網橋,並有分離運行時間和永久性配置選擇。它還具有一個通向服務或者應用程序以直接增長防火牆規則的接口。shell

2 簡單介紹

firewall的配置文件:/etc/lib/firewalld//etc/firewalld/下的XML文件。配置firewall能夠直接編輯配置文件,也可使用firewall-cmd命令行工具。服務器

3 防火牆使用

  1. 查看firewalld的狀態
    firewall-cmd --state
  2. 查看活動分區類別
    firewall-cmd --get-active-zones
  3. 查看當前分配的接口
    firewall-cmd --get-zone-of-interface=ens33
  4. 查看分配的區域的全部接口:
    firewall-cmd --zone=public --list-interfaces
  5. 找出公共區域的全部設置
    firewall-cmd --zone=public --list-all
    firewall-cmd --list-all
  6. 關閉|開啓全部的輸入和輸出的數據包(禁用)
    # 關閉全部輸入輸出的數據包
    firewall-cmd --panic-on
    # 開啓再次輸入輸出的數據包
    firewall-cmd --panic-off
    # 查看panic模式的狀態(yes啓用 no退出)
    firewall-cmd --query-panic
  7. 從新加載防火牆
    # 從新加載防火牆,不中斷用戶鏈接(不丟失狀態信息)
    firewall-cmd --reload
    # 從新加載防火牆並中斷用戶鏈接(丟失狀態信息),防火牆出現嚴重問題才執行
    firewall-cmd --complete-reload
  8. 爲分區增長接口
    # 把em1增長到公共分區,增長--permanent選擇並從新加載防火牆,是之永久生效
    firewall-cmd --zone=public --add-interface=em1
  9. 設置分區(將一個端口加入分區)
    # 設置默認分區,當即生效,不須要從新加載防火牆
    firewall-cmd --set-default-zone=public
    # 將一個端口加入分區
    firewall-cmd --zone=public --permanent --add-port=8080/tcp
    firewall-cmd --reload
    # 查看開發的端口
    firewall-cmd --zone=public --list-ports
    # 刪除
    firewll-cmd --zone=pubic --remove --remove-port=8080/tcp
  10. 將一個服務(http)加入到分區
    # 加入
    firewall-cmd --permanent --zone=work --add-service=http
    firewall-cmd --reload
    # 移除
    firewall-cmd --permanent  --zone=work --remove-service=http
    firewall-cmd --reload
    # 注意,這並不會中斷已經創建的鏈接。若是您打算中斷,您可使用 --complete-reload 選項,但這不單單中斷您已經移除的服務,還會中斷全部已經創建的鏈接。
  11. 配置假裝 IP 地址
    # 查詢是否可用
    firewall-cmd --zone=external --query-masquerade
    # 容許假裝IP
    firewall-cmd --zone=external --add-masquerade
    # 禁用假裝IP
    firewall-cmd --zone=external --remove-masquerade
  12. 配置端口轉發,地址轉發
    # 將22端口轉發到3753端口,使用tcp協議
    firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=3753
    # 本來發往22端口的程序包如今被轉發到地址是192.0.2.55下相同的端口
    firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.0.2.55
    # 將22端口的數據包轉發到192.0.2.55下的2055端口
    firewall-cmd --zone=external /
      --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.0.2.55
  13. 使用直接接口增長一個自定義規則
    # 增長一個自定義規則到 「IN_public_allow」 鏈裏:
    firewall-cmd --direct --add-rule ipv4 filter IN_public_allow \
      0 -m tcp -p tcp --dport 666 -j ACCEPT
    # 從 「IN_public_allow」 鏈移除一個自定義規則:
    firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow \
      0 -m tcp -p tcp --dport 666 -j ACCEPT
    # 列出 「IN_public_allow」 鏈中的規則:
    firewall-cmd --direct --get-rules ipv4 filter IN_public_allow
  14. 配置rich language語法:
    格式:
    # 添加
    firewall-cmd [--zone=zone] --add-rich-rule='rule' [--timeout 9=seconds]
    # 移除
    firewall-cmd [--zone=zone] --remove-rich-rule='rule'
    # 檢查是否存在
    firewall-cmd [--zone=zone] --query-rich-rule='rule'
多規則結構:
```shell
rule [family="<rule family>"]
    [ source address="<address>" [invert="True"] ]
    [ destination address="<address>" [invert="True"] ]
    [ <element> ]
    [ log [prefix="<prefix text>"] [level="<log level>"] [limit value="rate/duration"] ]
    [ audit ]
    [ accept|reject|drop ]

多規則命令:tcp

source:指定源地址,不支持使用主機名。能夠經過增長 invert="true" 或 invert="yes" 來顛倒源地址命令的意思。全部提供的地址都匹配。
destination:經過制定目的地址,目標能夠被限制在目的地址中。
service:服務名稱是 firewalld 提供的其中一種服務。能夠經過 firewall-cmd --get-services查看。格式: service name=service_name
port: 端口,可爲範圍或者獨立數字 格式:port port=number_or_range protocol=protocol
protocol:協議
icmp-block:用這個命令阻絕一個或多個 ICMP 類型,查看支持的icmp類型列表:firewall-cmd --get-icmptypes,格式: icmp-block name=icmptype_name
masquerade:打開規則裏的 IP 假裝。用源地址而不是目的地址來把假裝限制在這個區域內。在此,指定一個動做是不被容許的。
forward-port:從一個帶有指定爲 tcp 或 udp 協議的本地端口轉發數據包到另外一個本地端口,或另外一臺機器,或另外一臺機器上的另外一個端口.格式:forward-port port=number_or_range protocol=protocol /
            to-port=number_or_range to-addr=address

運行來自主機192.168.1.3的全部IPv4流量ide

firewall-cmd --zone=public --add-rich-rule="rule family='ipv4' source address=192.168.1.3 accept"

拒絕來自主機192.168.1.4到22端口的tcp流量工具

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.1.4 port port=22 protocol=tcp reject'

容許主機10.1.0.3到80端口的IPv4的TCP流量,並轉發到65530端口上命令行

firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=65530'
相關文章
相關標籤/搜索