RHCE 8.0學習日記 day18

管理網絡安全

linux內核中包含netfilter,它是網絡流量操作(數據包過濾、網絡地址轉換和端口轉換)的框架。它是RHEL防火牆的主要組件。

Linux內核中還包含nftables,這是一個心得過濾器和數據包分裂子系統,它增強了netfilter的部分代碼,但保留了netfilter的架構。

firewalld 是RHEL7 和RHEL8推薦使用的防火牆前端。它是一個動態防火牆管理器,是nftables框架的前端(使用NFT命令)。使用nft來管理防火牆規則集。

firewalld會檢查進入系統的每個數據包的源地址。

Firewalld區域默認配置

區域名稱 默認配置
trusted 允許所有傳入流量
home 除非與傳出流量相關,或與ssh、mdns、ipp-client、samba-client或dhcpv6-client預定義服務匹配,否則拒絕傳入流量。   
內部 除非與傳出流量相關,或與ssh、mdns、ipp-client、samba-client或dhcpv6-client預定義服務匹配,否則拒絕傳入流量。 (一開始與/home區域相同)。
work 除非與傳出流量相關,或與ssh、ipp-client或dhcpv6-client預定義服務匹配,否則拒絕傳入流量。
公共 除非與傳出流量相關,或與ssh或dhcpv6-client預定義服務匹配,否則拒絕傳入流量。新添加的網絡接口的默認區域。
external 除非與傳出流量相關,或與ssh預定義服務匹配。否則拒絕傳入流量。通過此區域轉發的IPIV傳出流量將進行僞裝使其看起來像是來自傳出網絡接口的IPv4地址。
dmz 除非與傳出流量相關,或與ssh預定義服務匹配,否則拒絕傳入流量。
block 除非與傳出流量相關。否則拒絕所有傳入流量。
drop 除非與傳出流量相關,否則丟棄所有傳入流量(甚至不產生包含ICMP錯誤的響應)。

Firewalld上有一些預定義服務。這些服務可以幫助我們識別需要配置的特定網絡服務。

預定義Firewalld服務節選

服務名稱 配置
SSH 本地SSH服務器。到22/tcp的流量

dhcpv6-client

本地DHCPv6客戶端。到fe80::/64 IPv6網絡中546/udp的流量
ipp-client 本地IPP打印。到631/udp的流量。
samba-client 本地windows文件和打印共享客戶端。到137/udp和138/udp的流量。
MDNS 多播DNS(mDNS)本地鏈路名稱解析。到5353/udp指向224.0.0.251(IPv4)或ff02::fb(IPv6)多播地址的流量。

firewalld-cmd  --get-services 列出這些預定義服務

從命令行配置防火牆

常用firewall-cmd命令及其說明

FIREWALL-CMD命令 說明
--get-default-zone 查詢當前默認區域
--set-default-zone=ZONE 設置默認區域。此命令會同時更改運行時配置和永久配置。
--get-zones 列出所有可用區域
--get-active-zones 列出當前正在使用的所有區域(具有關聯的接口或源)及其接口和源信息。
--add-source=CIDR[--zone=ZONE] 將來自IP地址或網絡/子網掩碼的所有流量路由到指定區域。如果未提供--zone=選項,則使用默認區域。
--remove-source=CIDR[--zone=ZONE] 從區域中刪除用於路由來自IP地址或網絡/子網掩碼的所有流量的規則。如果未提供--zone=選項,則使用默認的區域。
--add-interface=INTERFACE [--zone=ZONE] 將來自INTERFACE的所有流量路由到指定區域。如果未提供--zone=選項,則使用默認區域。
--change-interface=INTERFACE [--zone=ZONE] 列出ZONE的所有已配置接口、源、服務和端口。如果未提供--zone=選項,則使用默認區域。
--list-all [--zone=ZONE] 列出ZONE的所有已配置接口、源、服務和端口。如果未提供--zone=選項,則使用默認區域。
--list-all-zones 檢索所有區域的所有信息(接口、源、端口、服務)。
--add-service=SERVICE [--zone=ZONE] 允許到SERVICE的流量。如果未提供--zone=選項,則使用默認區域。
--add-port=PORt/PROTOCOL [--zone=ZONE] 允許到PORT/PROTOCOL端口的流量。如果未提供--zone=選項,則使用默認區域。
--remove-service=SERVICE [--zone=ZONE] 從區域的運行列表中刪除SERVICE。如果未提供--zone=選項,則使用默認區域。
--remove-port=PORT/PROTOCOL[--zone=ZONE]

從區域的允許列表中刪除PORT/PROTOCOL端口。如果未提供--zone=選項,則使用默認區域。

--reload 丟棄運行時配置並應用持久配置。

示例:  將默認區域設置爲dmz,將來自192.168.0.0/24網絡的所有流量都分配給internal區域,並在internal區域上打開用於mysql服務的網絡端口。

root權限運行一下命令:

  • firewall-cmd  --set-default-zone=dmz
  • firewall-cmd  --permanent  --zone=internal  --add-source=192.168.0.0/24
  • firewall-cmd  --permanent  --zone=internal  --add-service=mysql
  • firewall-cmd  --reload

控制selinux端口標記

selinux不僅是進行文件和進程標記。selinu策略還嚴格控制網絡流量量。

SElinux用來控制網絡流量的其中一種方法是標記網絡端口,例如:端口22/TCP具有標籤ssh_port_t與其相關聯。默認HTTP端口80/TCP和443/TCP具有標籤http_port_t與其相關聯。

semanage port -l 命令獲取所有當前端口標籤分配的概述。示例:

優化搜索,請使用grep命令:

一個端口標籤可能會出現兩次,一次針對TCP,一次針對UDP。

semanage命令可以分配新端口標籤、刪除端口標籤或修改現有端口標籤。向現有端口標籤中添加端口,使用-a 添加新端口標籤,-t表示類型,-p表示協議。

示例:   semanage port  -a port_label  -p  tcp|udp  PORTNUMBER

運行gopher服務偵聽端口71/TCP: semanage  port  -a  -t gopher_port_t  -p tcp 71

查看對默認策略的本地更改: semanage  port -l  -c

刪除端口標籤,與添加端口標籤的語法相同,使用-d選項。示例:

刪除端口71/TCP 與gopher_port_t的綁定:

semanage port  -d  -t   gopher_port_t -p tcp  71

修改端口綁定,使用-m選項,示例:

semanage  port  -m  -t  http_port_t  -p  tcp  71

上面的命令將端口71/TCP從gopher_port_t修改爲http_port_t,需root權限。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章