您好,登錄后才能下訂單哦!
這篇文章主要講解了“linux7防火墻的基本使用及詳解”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“linux7防火墻的基本使用及詳解”吧!
1、firewalld的基本使用
啟動: systemctl start firewalld
查看狀態: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
2.systemctl是CentOS7的服務管理工具中主要的工具,它融合之前service和chkconfig的功能于一體。
啟動一個服務:systemctl start firewalld.service
關閉一個服務:systemctl stop firewalld.service
重啟一個服務:systemctl restart firewalld.service
顯示一個服務的狀態:systemctl status firewalld.service
在開機時啟用一個服務:systemctl enable firewalld.service
在開機時禁用一個服務:systemctl disable firewalld.service
查看服務是否開機啟動:systemctl is-enabled firewalld.service
查看已啟動的服務列表:systemctl list-unit-files|grep enabled
查看啟動失敗的服務列表:systemctl --failed
3.配置firewalld-cmd
查看版本: firewall-cmd --version
查看幫助: firewall-cmd --help
顯示狀態: firewall-cmd --state
查看所有打開的端口: firewall-cmd --zone=public --list-ports
更新防火墻規則: firewall-cmd --reload
查看區域信息: firewall-cmd --get-active-zones
查看指定接口所屬區域: firewall-cmd --get-zone-of-interface=eth0
拒絕所有包:firewall-cmd --panic-on
取消拒絕狀態: firewall-cmd --panic-off
查看是否拒絕: firewall-cmd --query-panic
那怎么開啟一個端口呢
添加
firewall-cmd
代碼如下 | 復制代碼 |
應急模式在 0.3.0 版本中發生了變化 在 0.3.0 之前的 FirewallD版本中, panic 選項是 –enable-panic 與 –disable-panic. |
查詢應急模式
firewall-cmd --query-panic
此命令返回應急模式的狀態,沒有輸出。可以使用以下方式獲得狀態輸出:
firewall-cmd --query-panic && echo "On" || echo "Off"
處理運行時區域
運行時模式下對區域進行的修改不是永久有效的。重新加載或者重啟后修改將失效。
啟用區域中的一種服務
firewall-cmd [--zone=<zone>] --add-service=<service> [--timeout=<seconds>]
此舉啟用區域中的一種服務。如果未指定區域,將使用默認區域。如果設定了超時時間,服務將只啟用特定秒數。如果服務已經活躍,將不會有任何警告信息。
例: 使區域中的ipp-client服務生效60秒:
firewall-cmd --zone=home --add-service=ipp-client --timeout=60
例: 啟用默認區域中的http服務:
firewall-cmd --add-service=http
禁用區域中的某種服務
firewall-cmd [--zone=<zone>] --remove-service=<service>
此舉禁用區域中的某種服務。如果未指定區域,將使用默認區域。
例: 禁止home區域中的http服務:
firewall-cmd --zone=home --remove-service=http
區域種的服務將被禁用。如果服務沒有啟用,將不會有任何警告信息。
查詢區域中是否啟用了特定服務
firewall-cmd [--zone=<zone>] --query-service=<service>
如果服務啟用,將返回1,否則返回0。沒有輸出信息。
啟用區域端口和協議組合
firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]
此舉將啟用端口和協議的組合。端口可以是一個單獨的端口 <port> 或者是一個端口范圍 <port>-<port> 。協議可以是 tcp 或 udp。
禁用端口和協議組合
firewall-cmd [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>
查詢區域中是否啟用了端口和協議組合
firewall-cmd [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>
如果啟用,此命令將有返回值。沒有輸出信息。
啟用區域中的IP偽裝功能
firewall-cmd [--zone=<zone>] --add-masquerade
此舉啟用區域的偽裝功能。私有網絡的地址將被隱藏并映射到一個公有IP。這是地址轉換的一種形式,常用于路由。由于內核的限制,偽裝功能僅可用于IPv4。
禁用區域中的IP偽裝
firewall-cmd [--zone=<zone>] --remove-masquerade
查詢區域的偽裝狀態
firewall-cmd [--zone=<zone>] --query-masquerade
如果啟用,此命令將有返回值。沒有輸出信息。
啟用區域的ICMP阻塞功能
firewall-cmd [--zone=<zone>] --add-icmp-block=<icmptype>
此舉將啟用選中的Internet控制報文協議(ICMP)報文進行阻塞。ICMP報文可以是請求信息或者創建的應答報文,以及錯誤應答。
禁止區域的ICMP阻塞功能
firewall-cmd [--zone=<zone>] --remove-icmp-block=<icmptype>
查詢區域的ICMP阻塞功能
firewall-cmd [--zone=<zone>] --query-icmp-block=<icmptype>
如果啟用,此命令將有返回值。沒有輸出信息。
例: 阻塞區域的響應應答報文:
firewall-cmd --zone=public --add-icmp-block=echo-reply
在區域中啟用端口轉發或映射
firewall-cmd [--zone=<zone>] --add-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
端口可以映射到另一臺主機的同一端口,也可以是同一主機或另一主機的不同端口。端口號可以是一個單獨的端口 <port> 或者是端口范圍 <port>-<port> 。協議可以為 tcp 或udp 。目標端口可以是端口號 <port> 或者是端口范圍 <port>-<port> 。目標地址可以是 IPv4 地址。受內核限制,端口轉發功能僅可用于IPv4。
禁止區域的端口轉發或者端口映射
firewall-cmd [--zone=<zone>] --remove-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
查詢區域的端口轉發或者端口映射
firewall-cmd [--zone=<zone>] --query-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
如果啟用,此命令將有返回值。沒有輸出信息。
例: 將區域home的ssh轉發到127.0.0.2
firewall-cmd --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2
處理永久區域
永久選項不直接影響運行時的狀態。這些選項僅在重載或者重啟服務時可用。為了使用運行時和永久設置,需要分別設置兩者。 選項 –permanent 需要是永久設置的第一個參數。
獲取永久選項所支持的服務
firewall-cmd --permanent --get-services
獲取永久選項所支持的ICMP類型列表
firewall-cmd --permanent --get-icmptypes
獲取支持的永久區域
firewall-cmd --permanent --get-zones
啟用區域中的服務
firewall-cmd --permanent [--zone=<zone>] --add-service=<service>
此舉將永久啟用區域中的服務。如果未指定區域,將使用默認區域。
禁用區域中的一種服務
firewall-cmd --permanent [--zone=<zone>] --remove-service=<service>
查詢區域中的服務是否啟用
firewall-cmd --permanent [--zone=<zone>] --query-service=<service>
如果服務啟用,此命令將有返回值。此命令沒有輸出信息。
例: 永久啟用 home 區域中的 ipp-client 服務
firewall-cmd --permanent --zone=home --add-service=ipp-client
永久啟用區域中的一個端口-協議組合
firewall-cmd --permanent [--zone=<zone>] --add-port=<port>[-<port>]/<protocol>
永久禁用區域中的一個端口-協議組合
firewall-cmd --permanent [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>
查詢區域中的端口-協議組合是否永久啟用
firewall-cmd --permanent [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>
如果服務啟用,此命令將有返回值。此命令沒有輸出信息。
例: 永久啟用 home 區域中的 https (tcp 443) 端口
firewall-cmd --permanent --zone=home --add-port=443/tcp
永久啟用區域中的偽裝
firewall-cmd --permanent [--zone=<zone>] --add-masquerade
此舉啟用區域的偽裝功能。私有網絡的地址將被隱藏并映射到一個公有IP。這是地址轉換的一種形式,常用于路由。由于內核的限制,偽裝功能僅可用于IPv4。
永久禁用區域中的偽裝
firewall-cmd --permanent [--zone=<zone>] --remove-masquerade
查詢區域中的偽裝的永久狀態
firewall-cmd --permanent [--zone=<zone>] --query-masquerade
如果服務啟用,此命令將有返回值。此命令沒有輸出信息。
永久啟用區域中的ICMP阻塞
firewall-cmd --permanent [--zone=<zone>] --add-icmp-block=<icmptype>
此舉將啟用選中的 Internet 控制報文協議 (ICMP) 報文進行阻塞。 ICMP 報文可以是請求信息或者創建的應答報文或錯誤應答報文。
永久禁用區域中的ICMP阻塞
firewall-cmd --permanent [--zone=<zone>] --remove-icmp-block=<icmptype>
查詢區域中的ICMP永久狀態
firewall-cmd --permanent [--zone=<zone>] --query-icmp-block=<icmptype>
如果服務啟用,此命令將有返回值。此命令沒有輸出信息。
例: 阻塞公共區域中的響應應答報文:
firewall-cmd --permanent --zone=public --add-icmp-block=echo-reply
在區域中永久啟用端口轉發或映射
firewall-cmd --permanent [--zone=<zone>] --add-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
端口可以映射到另一臺主機的同一端口,也可以是同一主機或另一主機的不同端口。端口號可以是一個單獨的端口 <port> 或者是端口范圍 <port>-<port> 。協議可以為 tcp 或udp 。目標端口可以是端口號 <port> 或者是端口范圍 <port>-<port> 。目標地址可以是 IPv4 地址。受內核限制,端口轉發功能僅可用于IPv4。
永久禁止區域的端口轉發或者端口映射
firewall-cmd --permanent [--zone=<zone>] --remove-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
查詢區域的端口轉發或者端口映射狀態
firewall-cmd --permanent [--zone=<zone>] --query-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
如果服務啟用,此命令將有返回值。此命令沒有輸出信息。
例: 將 home 區域的 ssh 服務轉發到 127.0.0.2
firewall-cmd --permanent --zone=home --add-forward-port=port=22:proto=tcp:toaddr=127.0.0.2
直接選項
直接選項主要用于使服務和應用程序能夠增加規則。 規則不會被保存,在重新加載或者重啟之后必須再次提交。傳遞的參數 <args> 與 iptables, ip6tables 以及 ebtables 一致。
選項–direct需要是直接選項的第一個參數。
將命令傳遞給防火墻。參數 <args> 可以是 iptables, ip6tables 以及 ebtables 命令行參數。
firewall-cmd --direct --passthrough { ipv4 | ipv6 | eb } <args>
為表 <table> 增加一個新鏈 <chain> 。
firewall-cmd --direct --add-chain { ipv4 | ipv6 | eb } <table> <chain>
從表 <table> 中刪除鏈 <chain> 。
firewall-cmd --direct --remove-chain { ipv4 | ipv6 | eb } <table> <chain>
查詢 <chain> 鏈是否存在與表 <table>. 如果是,返回0,否則返回1.
firewall-cmd --direct --query-chain { ipv4 | ipv6 | eb } <table> <chain>
如果啟用,此命令將有返回值。此命令沒有輸出信息。
獲取用空格分隔的表 <table> 中鏈的列表。
firewall-cmd --direct --get-chains { ipv4 | ipv6 | eb } <table>
為表 <table> 增加一條參數為 <args> 的鏈 <chain> ,優先級設定為 <priority>。
firewall-cmd --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>
從表 <table> 中刪除帶參數 <args> 的鏈 <chain>。
firewall-cmd --direct --remove-rule { ipv4 | ipv6 | eb } <table> <chain> <args>
查詢帶參數 <args> 的鏈 <chain> 是否存在表 <table> 中. 如果是,返回0,否則返回1.
firewall-cmd --direct --query-rule { ipv4 | ipv6 | eb } <table> <chain> <args>
如果啟用,此命令將有返回值。此命令沒有輸出信息。
獲取表 <table> 中所有增加到鏈 <chain> 的規則,并用換行分隔。
firewall-cmd --direct --get-rules { ipv4 | ipv6 | eb } <table> <chain>
當前的firewalld特性
D-BUS接口
D-BUS 接口提供防火墻狀態的信息,使防火墻的啟用、停用或查詢設置成為可能。
區域
網絡或者防火墻區域定義了連接的可信程度。firewalld 提供了幾種預定義的區域。區域配置選項和通用配置信息可以在firewall.zone(5)的手冊里查到。
服務
服務可以是一系列本讀端口、目的以及附加信息,也可以是服務啟動時自動增加的防火墻助手模塊。預定義服務的使用使啟用和禁用對服務的訪問變得更加簡單。服務配置選項和通用文件信息在 firewalld.service(5) 手冊里有描述。
ICMP類型
Internet控制報文協議 (ICMP) 被用以交換報文和互聯網協議 (IP) 的錯誤報文。在 firewalld 中可以使用 ICMP 類型來限制報文交換。 ICMP 類型配置選項和通用文件信息可以參閱 firewalld.icmptype(5) 手冊。
直接接口
直接接口主要用于服務或者應用程序增加特定的防火墻規則。這些規則并非永久有效,并且在收到 firewalld 通過 D-Bus 傳遞的啟動、重啟、重載信號后需要重新應用。
運行時配置
運行時配置并非永久有效,在重新加載時可以被恢復,而系統或者服務重啟、停止時,這些選項將會丟失。
永久配置
永久配置存儲在配置文件種,每次機器重啟或者服務重啟、重新加載時將自動恢復。
托盤小程序
托盤小程序 firewall-applet 為用戶顯示防火墻狀態和存在的問題。它也可以用來配置用戶允許修改的設置。
圖形化配置工具
firewall daemon 主要的配置工具是 firewall-config 。它支持防火墻的所有特性(除了由服務/應用程序增加規則使用的直接接口)。 管理員也可以用它來改變系統或用戶策略。
命令行客戶端
firewall-cmd是命令行下提供大部分圖形工具配置特性的工具。
對于ebtables的支持
要滿足libvirt daemon的全部需求,在內核 netfilter 級上防止 ip*tables 和 ebtables 間訪問問題,ebtables 支持是需要的。由于這些命令是訪問相同結構的,因而不能同時使用。
/usr/lib/firewalld中的默認/備用配置
該目錄包含了由 firewalld 提供的默認以及備用的 ICMP 類型、服務、區域配置。由 firewalld 軟件包提供的這些文件不能被修改,即使修改也會隨著 firewalld 軟件包的更新被重置。 其他的 ICMP 類型、服務、區域配置可以通過軟件包或者創建文件的方式提供。
/etc/firewalld中的系統配置設置
存儲在此的系統或者用戶配置文件可以是系統管理員通過配置接口定制的,也可以是手動定制的。這些文件將重載默認配置文件。
為了手動修改預定義的 icmp 類型,區域或者服務,從默認配置目錄將配置拷貝到相應的系統配置目錄,然后根據需求進行修改。
如果你加載了有默認和備用配置的區域,在 /etc/firewalld下的對應文件將被重命名為 <file>.old 然后啟用備用配置。
正在開發的特性
富語言
富語言特性提供了一種不需要了解iptables語法的通過高級語言配置復雜 IPv4 和 IPv6 防火墻規則的機制。
Fedora 19 提供了帶有 D-Bus 和命令行支持的富語言特性第2個里程碑版本。第3個里程碑版本也將提供對于圖形界面 firewall-config 的支持。
對于此特性的更多信息,請參閱: firewalld Rich Language
鎖定
鎖定特性為 firewalld 增加了鎖定本地應用或者服務配置的簡單配置方式。它是一種輕量級的應用程序策略。
Fedora 19 提供了鎖定特性的第二個里程碑版本,帶有 D-Bus 和命令行支持。第3個里程碑版本也將提供圖形界面 firewall-config 下的支持。
更多信息請參閱: firewalld Lockdown
永久直接規則
這項特性處于早期狀態。它將能夠提供保存直接規則和直接鏈的功能。通過規則不屬于該特性。更多關于直接規則的信息請參閱Direct options。
從ip*tables和ebtables服務遷移
這項特性處于早期狀態。它將盡可能提供由iptables,ip6tables 和 ebtables 服務配置轉換為永久直接規則的腳本。此特性在由firewalld提供的直接鏈集成方面可能存在局限性。
此特性將需要大量復雜防火墻配置的遷移測試。
計劃和提議功能
防火墻抽象模型
在 ip*tables 和 ebtables 防火墻規則之上添加抽象層使添加規則更簡單和直觀。要抽象層功能強大,但同時又不能復雜,并不是一項簡單的任務。為此,不得不開發一種防火墻語言。使防火墻規則擁有固定的位置,可以查詢端口的訪問狀態、訪問策略等普通信息和一些其他可能的防火墻特性。
對于conntrack的支持
要終止禁用特性已確立的連接需要 conntrack 。不過,一些情況下終止連接可能是不好的,如:為建立有限時間內的連續性外部連接而啟用的防火墻服務。
用戶交互模型
這是防火墻中用戶或者管理員可以啟用的一種特殊模式。應用程序所有要更改防火墻的請求將定向給用戶知曉,以便確認和否認。為一個連接的授權設置一個時間限制并限制其所連主機、網絡或連接是可行的。配置可以保存以便將來不需通知便可應用相同行為。 該模式的另一個特性是管理和應用程序發起的請求具有相同功能的預選服務和端口的外部鏈接嘗試。服務和端口的限制也會限制發送給用戶的請求數量。
用戶策略支持
管理員可以規定哪些用戶可以使用用戶交互模式和限制防火墻可用特性。
端口元數據信息(由 Lennart Poettering 提議)
擁有一個端口獨立的元數據信息是很好的。當前對 /etc/services 的端口和協議靜態分配模型不是個好的解決方案,也沒有反映當前使用情況。應用程序或服務的端口是動態的,因而端口本身并不能描述使用情況。
元數據信息可以用來為防火墻制定簡單的規則。下面是一些例子:
允許外部訪問文件共享應用程序或服務
允許外部訪問音樂共享應用程序或服務
允許外部訪問全部共享應用程序或服務
允許外部訪問 torrent 文件共享應用程序或服務
允許外部訪問 http 網絡服務
這里的元數據信息不只有特定應用程序,還可以是一組使用情況。例如:組“全部共享”或者組“文件共享”可以對應于全部共享或文件共享程序(如:torrent 文件共享)。這些只是例子,因而,可能并沒有實際用處。
這里是在防火墻中獲取元數據信息的兩種可能途徑:
第一種是添加到 netfilter (內核空間)。好處是每個人都可以使用它,但也有一定使用限制。還要考慮用戶或系統空間的具體信息,所有這些都需要在內核層面實現。
第二種是添加到 firewall daemon 中。這些抽象的規則可以和具體信息(如:網絡連接可信級、作為具體個人/主機要分享的用戶描述、管理員禁止完全共享的應歸則等)一起使用。
第二種解決方案的好處是不需要為有新的元數據組和納入改變(可信級、用戶偏好或管理員規則等等)重新編譯內核。這些抽象規則的添加使得 firewall daemon 更加自由。即使是新的安全級也不需要更新內核即可輕松添加。
sysctld
現在仍有 sysctl 設置沒有正確應用。一個例子是,在 rc.sysinit 正運行時,而提供設置的模塊在啟動時沒有裝載或者重新裝載該模塊時會發生問題。
另一個例子是 net.ipv4.ip_forward ,防火墻設置、libvirt 和用戶/管理員更改都需要它。如果有兩個應用程序或守護進程只在需要時開啟 ip_forwarding ,之后可能其中一個在不知道的情況下關掉服務,而另一個正需要它,此時就不得不重啟它。
sysctl daemon 可以通過對設置使用內部計數來解決上面的問題。此時,當之前請求者不再需要時,它就會再次回到之前的設置狀態或者是直接關閉它。
防火墻規則
netfilter 防火墻總是容易受到規則順序的影響,因為一條規則在鏈中沒有固定的位置。在一條規則之前添加或者刪除規則都會改變此規則的位置。 在靜態防火墻模型中,改變防火墻就是重建一個干凈和完善的防火墻設置,且受限于 system-config-firewall / lokkit 直接支持的功能。也沒有整合其他應用程序創建防火墻規則,且如果自定義規則文件功能沒在使用 s-c-fw / lokkit 就不知道它們。默認鏈通常也沒有安全的方式添加或刪除規則而不影響其他規則。
動態防火墻有附加的防火墻功能鏈。這些特殊的鏈按照已定義的順序進行調用,因而向鏈中添加規則將不會干擾先前調用的拒絕和丟棄規則。從而利于創建更為合理完善的防火墻配置。
下面是一些由守護進程創建的規則,過濾列表中啟用了在公共區域對 ssh , mdns 和 ipp-client 的支持:
*filter :INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]:FORWARD_ZONES - [0:0]:FORWARD_direct - [0:0]:INPUT_ZONES - [0:0]:INPUT_direct - [0:0]:IN_ZONE_public - [0:0]:IN_ZONE_public_allow - [0:0]:IN_ZONE_public_deny - [0:0]:OUTPUT_direct - [0:0]-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -j INPUT_direct -A INPUT -j INPUT_ZONES -A INPUT -p icmp -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i lo -j ACCEPT -A FORWARD -j FORWARD_direct -A FORWARD -j FORWARD_ZONES -A FORWARD -p icmp -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited -A OUTPUT -j OUTPUT_direct -A IN_ZONE_public -j IN_ZONE_public_deny -A IN_ZONE_public -j IN_ZONE_public_allow -A IN_ZONE_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT -A IN_ZONE_public_allow -d 224.0.0.251/32 -p udp -m udp --dport 5353 -m conntrack --ctstate NEW -j ACCEPT -A IN_ZONE_public_allow -p udp -m udp --dport 631 -m conntrack --ctstate NEW -j ACCEPT
使用 deny/allow 模型來構建一個清晰行為(最好沒有沖突規則)。例如: ICMP塊將進入 IN_ZONE_public_deny 鏈(如果為公共區域設置了的話),并將在 IN_ZONE_public_allow 鏈之前處理。
該模型使得在不干擾其他塊的情況下向一個具體塊添加或刪除規則而變得更加容易。
感謝各位的閱讀,以上就是“linux7防火墻的基本使用及詳解”的內容了,經過本文的學習后,相信大家對linux7防火墻的基本使用及詳解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。