Linux下防火牆設置

Firewalld概述

動態防火牆後臺程序 firewalld 提供了一個 動態管理的防火牆,用以支持網絡 “ zones” ,以分配對一個網絡及其相關鏈接和界面一定程度的信任。它具備對 IP v4 和 IP v6 防火牆設置的支持。它支持以太網橋,並有分離運行時間和永久性配置選擇。它還具備一個通向服務或者應用程序以直接增加防火牆規則的接口。

系統提供了圖像化的配置工具firewall-config、system-config-firewall, 提供命令行客戶端firewall-cmd, 用於配置 firewalld永久性或非永久性運行時間的改變:它依次用 iptables工具與執行數據包篩選的內核中的 Netfilter通信。

firewalld和iptables service 之間最本質的不同是:

• iptables service 在 /etc/sysconfig/iptables 中儲存配置,而 firewalld將配置儲存在/usr/lib/firewalld/ 和 /etc/firewalld/ 中的各種XML文件裏.

• 使用 iptables service每一個單獨更改意味着清除所有舊有的規則和從/etc/sysconfig/iptables裏讀取所有新的規則,然而使用 firewalld卻不會再創建任何新的規則;僅僅運行規則中的不同之處。因此,firewalld可以在運行時間內,改變設置而不丟失現行連接。

4基於用戶對網絡中設備和交通所給與的信任程度,防火牆可以用來將網絡分割成不同的區域。

NetworkManager通知firewalld一個接口歸屬某個區域,新加入的接口被分配到默認區域。

網絡區名稱 默認配置

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服務連接,爲firewalld的默認區域

external( 外部 ) 出去的ipv4網絡連接通過此區域僞裝和轉發,僅接受ssh服務連接

dmz( 非軍事區 ) 僅接受ssh服務接連

block( 限制 ) 拒絕所有網絡連接

drop( 丟棄 ) 任何接收的網絡數據包都被丟棄,沒有任何回覆

5管理防火牆

安裝防火牆軟件:

# yum install -y firewalld firewall-config

啓動和禁用防火牆:

# systemctl start firewalld ; systemctl enable firewalld

# systemctl disable firewalld ; systemctl stop firewalld

使用iptables服務:

# yum install -y iptables-services

# systemctl start iptables ; systemctl start ip6tables

# systemctl enable iptables ; systemctl enable ip6tables

推薦使用firewalld服務

6使用命令行接口配置防火牆

查看firewalld的狀態:

# firewall-cmd --state

查看當前活動的區域,並附帶一個目前分配給它們的接口列表:

# firewall-cmd --get-active-zones

查看默認區域:

# firewall-cmd --get-default-zone

查看所有可用區域:

# firewall-cmd --get-zones

列出指定域的所有設置:

# firewall-cmd --zone=public --list-all

列出所有預設服務:

# firewall-cmd --get-services

(這樣將列出 /usr/lib/firewalld/services/ 中的服務器名稱。注意:配置文件是以服務本身命名的

service-name. xml)

7列出所有區域的設置:

# firewall-cmd --list-all-zones

設置默認區域:

# firewall-cmd --set-default-zone=dmz

設置網絡地址到指定的區域:

# firewall-cmd --permanent --zone=internal --add-source=172.25.0.0/24

(--permanent參數表示永久生效設置,如果沒有指定--zone參數,那麼會加入默認區域)

刪除指定區域中的網路地址:

# firewall-cmd --permanent --zone=internal --remove-source=172.25.0.0/24

添加、改變、刪除網絡接口:

# firewall-cmd --permanent --zone=internal --add-interface=eth0

# firewall-cmd --permanent --zone=internal --change-interface=eth0

# firewall-cmd --permanent --zone=internal --remove-interface=eth0

添加、刪除服務:

# firewall-cmd --permanent --zone=public --add-service=smtp

# firewall-cmd --permanent --zone=public --remove-service=smtp

8列出、添加、刪除端口:

# 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

(注意:這並不會中斷已經建立的連接,如果打算中斷,可以使用 --complete-reload選項)

firewalld的規則被保存在/etc/firewalld目錄下的文件中,你也可以直接編輯這些文件達到

配置防火牆的目的。/usr/lib/firewalld目錄下的內容是不可以被編輯的,但可以用做默認

模板。

9Direct Rules

通過 firewall-cmd 工具,可以使用 --direct 選項在運行時間裏增加或者移除鏈。

如果不熟悉 iptables ,使用直接接口非常危險,因爲您可能無意間導致防火牆被入侵。

直接端口模式適用於服務或者程序,以便在運行時間內增加特定的防火牆規則。

直接端口模式添加的規則優先應用。

添加規則:

# firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow 0 -p tcp --dport 80 -j

ACCEPT

刪除規則:

# firewall-cmd --direct --remove-rule ipv4 filter IN_public_allow 10 -p tcp --dport 80 -j

ACCEPT

列出規則:

# firewall-cmd --direct --get-all-rules

10Rich Rules

通過“ rich language”語法,可以用比直接接口方式更易理解的方法建立複雜防火牆規則。此外,還能永久保留設置。這種語言使用關鍵詞值,是 iptables 工具的抽象表示。這種語言可以用來配置分區,也仍然支持現行的配置方式。

語法結構:

11source

指定源地址,可以是一個ipv4/ipv6的地址或網段,不支持使用主機名。

destination

指定目的地址,用法和source相同。

service

服務名稱是 firewalld 提供的其中一種服務。要獲得被支持的服務的列表,輸入以下命令:

firewall-cmd --get-services 。命令爲以下形式:

service name= service_name

port

端口既可以是一個獨立端口數字,又或者端口範圍,例如,5060-5062。協議可以指定爲 tcp 或

udp 。命令爲以下形式:

port port= number_or_range protocol= protocol

protocol

協議值可以是一個協議 ID 數字,或者一個協議名。預知可用協議,請查閱 /etc/protocols。

命令爲以下形式:

protocol value= protocol_name_or_ID

12icmp-block

用這個命令阻絕一個或多個ICMP類型。IC MP 類型是 firewalld支持的ICMP類型之一。

要獲得被支持的ICMP類型列表,輸入以下命令: firewall-cmd --get-icmptypes

icmp-block在內部使用 reject 動作,因此不允許指定動作。命令爲以下形式:

icmp-block name= icmptype_name

masquerade

打開規則裏的 IP 僞裝。用源地址而不是目的地址來把僞裝限制在這個區域內。不允許指定動作。

forward-port

從一個帶有指定爲 tcp 或 udp 協議的本地端口轉發數據包到另一個本地端口,或另一臺機器,或另一臺機器上的另一個端口。port 和 to-port 可以是一個單獨的端口數字,或一個端口範圍。而目的地址是一個簡單的 IP 地址。不允許指定動作,命令使用內部動作accept 。命令爲以下形式:

forward-port port= number_or_range protocol= protocol /

to-port= number_or_range to-addr= address

13log

註冊含有內核記錄的新連接請求到規則中,比如系統記錄。你可以定義一個前綴文本,記錄等級可以是 emerg、alert、crit、error、warning、notice、info 或者 debug 中的一個。命令形式:

log [prefix= prefix text ] [level= log level ] limit value= rate/duration

(等級用正的自然數 [1, ..] 表達,持續時間的單位爲 s 、 m 、 h 、 d 。 s 表示秒, m 表示分鐘, h表示小時, d 表示天。最大限定值是 1/d ,意爲每天最多有一條日誌進入。)

audit

審覈爲發送到 aud i td 服務的審覈記錄來註冊提供了另一種方法。審覈類型可以是ACCEPT、REJECT或DROP中的一種,但不能在 audit命令後指定,因爲審覈類型將會從規則動作中自動收集。審覈不包含自身參數,但可以選擇性地增加限制。審覈的使用是可選擇的。選擇 accept 所有新的連接請求都會被允許。選擇 reject ,連接將被拒絕,連接來源將接到一個拒絕信息。拒絕的類型可以被設定爲使用另一種值。選擇 drop , 所有數據

包會被丟棄,並且不會向來源地發送任何信息。

14多語言命令的格式 :

在這個部分,所有命令都必須以 root 用戶身份運行。增加一項規則的命令格式如下:

firewall-cmd [--zone=zone] --add -rich-rule='rule' [--timeout=seconds]

這樣將爲 zone 分區增加一項多語言規則 rule 。這個選項可以多次指定。如果分區被省略,將使用默認分區。如果出現超時,規則將在指定的秒數內被激活,並在之後被自動移除

移除一項規則:

firewall-cmd [--zone=zone] --remove-rich-rule='rule'

檢查一項規則是否存在:

firewall-cmd [--zone=zone] --query-rich-rule='rule'

這將複查是否已經爲區域增加一個多語言規則 。如果可用,屏幕會顯示 yes,退出狀態爲0; 否則,屏幕顯示 no ,退出狀態爲 1。如果省略 zone,默認區域將被使用。

列出所有多語言規則:

firewall-cmd --list-rich-rules

15添加規則:

# firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.25.0.10" accept'

允許172.25.0.10主機所有連接。

# firewall-cmd --add-rich-rule='rule service name=ftp limit value=2/m accept'

每分鐘允許2個新連接訪問ftp服務。

# firewall-cmd --add-rich-rule='rule service name=ftp log limit value="1/m" audit accept'

同意新的 IP v4 和 IP v6 連接 FT P ,並使用審覈每分鐘登錄一次。

# firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.25.0.0/24"

service name=ssh log prefix="ssh" level="notice" limit value="3/m" accept'

允許來自172.25.0.0/24地址的新 IPv4連接連接TFTP服務,並且每分鐘記錄一次。

# firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'

丟棄所有icmp包

www.westos.org

16# firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.25.0.0/24 reject' --

timeout=10

當使用source和destination指定地址時,必須有family參數指定ipv4或ipv6。如果指定超時,

規則將在指定的秒數內被激活,並在之後被自動移除。

# firewall-cmd --add-rich-rule='rule family=ipv6 source address="2001:db8::/64" service

name="dns" audit limit value="1/h" reject' --timeout=300

拒絕所有來自2001:db8::/64子網的主機訪問dns服務,並且每小時只審覈記錄1次日誌。

# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source

address=172.25.0.0/24 service name=ftp accept'

允許172.25.0.0/24網段中的主機訪問ftp服務

# firewall-cmd --add-rich-rule='rule family="ipv6" source address="1:2:3:4:6::" forward-port

to-addr="1::2:3:4:7" to-port="4012" protocol="tcp" port="4011"'

轉發來自ipv6地址1:2:3:4:6::TCP端口4011,到1:2:3:4:7的TCP端口4012

17僞裝和端口轉發

18僞裝:

# 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 masquerade'

端口轉發:

# firewall-cmd --permanent --zone=< ZONE > --add-forward-port=

port=80:proto=tcp:toport=8080:toaddr=172.25.0.10

# firewall-cmd --permanent --zone=< ZONE > --add-rich-rule='rule family=ipv4 source

address=172.25.0.0/24 forward-port port=80 protocol=tcp to-port=8080'

1.添加信任地址

[root@localhost ~]#firewall-cmd --permanent --add-source=172.25.254.250 --zone=trusted ##只有172.25.254.250可以訪問

[root@localhost ~]#firewall-cmd --permanent --remove-source=172.25.254.250 --zone=trusted

2.訪問http權限

[root@localhost ~]#firewall-cmd --add-port=80/tcp --zone=public ##所有人可以通過80端口訪問http

[root@localhost ~]#firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 80 -s 172.25.254.250 -j REJECT  ##拒絕某個人,允許其他人

3.端口僞裝

[root@localhost ~]# firewall-cmd --zone=public --add-masquerade

[root@localhost ~]# firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.43 ##當有人通過ssh連接本機時通過22端口轉到43

[root@localhost ~]#firewall-cmd --zone=public --add-rich-rule='rule famliy=ipv4 source address=172.25.254.100 masqquerade' ##可發揮服務端的路由功能

發佈了49 篇原創文章 · 獲贊 20 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章