日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux学习整理-网络防火墙firewalld

發布時間:2023/12/20 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux学习整理-网络防火墙firewalld 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 概念

1-1. firewall簡介

firewalld是Linux系統的一款防火墻管理工具。通過充當netfilter的前端來提供防火墻功能,默認后端是iptables/ntftables。開發語言是python。firewalld=firewall+daemon。實際上就是一個守護進程。操作firewalld的是firewalld-cmd命令。

CentOS Ubuntu★ openSUSE+--------------+ +------------+ +---------------------+ -*-| firewall-cmd | | ufw | | SUSEfirewall2 | |+--------------+ +------------+ +---------------------+ |用戶空間+-----------------------------------------------------------+ || iptables command | |+-----------------------------------------------------------+ -*-+-----------------------------------------------------------+ -*-| | || OS(Netfilter) | 內核空間| | |+-----------------------------------------------------------+ -*-

firewalld主要是在centos7以后才作為默認的防火墻管理工具的。像Ubuntu,Debian也可以安裝firewalld。

  • firewall-cmd 是一個命令行的客戶端,通過D-Bus來操作后端。
  • firewall-config是一個圖形界面的客戶端,也是通過D-Bus來操作后端。
  • firewall-applet也是一個圖形界面客戶端,也是通過D-Bus來操作后端。

firewall-applet是firewalld中可選的狀態欄小圖標程序,它能夠顯示防火墻日志通知,同時也是一種打開 firewall-config 的快捷方式

  • firewall-offline-cmd是一個命令行客戶端,不需要通過D-Bus來操作后端。

firewalld?的配置儲存在?/usr/lib/firewalld/?和?/etc/firewalld/?里的各種 XML 文件里,這樣保持了這些文件被編輯、寫入、備份的極大的靈活性,使之可作為其他安裝的備份等等。

1-2. 運行時和永久

  • 運行時(runtime)

firewalld配置的防火墻策略默認為運行時(Runtime)模式,就是設置完立刻生效,但是系統的重啟會導致失效。要想設置完立刻生效,重啟也不失效需要--runtime-to-permanent屬性。

  • 永久(permanent)

如果想讓配置策略一直存在,方法就是在firewall-cmd命令后面添加–permanent屬性,這樣配置的防火墻策略就可以永久生效了。但是,永久生效模式有一個“不近人情”的特點,就是使用它設置的策略只有在系統重啟后才會生效。如果想讓配置的永久策略立即生效,需要手動執行firewall-cmd --reload命令。

1-3. 對網絡區域的理解

firewalld的網絡區域可以理解成windows聯網時,彈出來的對話框,讓選擇網絡。

?

  • drop(丟棄)

任何接收的網絡數據包都被丟棄,沒有任何回復。僅能有發送出去的網絡連接。

可以用firewall-cmd --list-all-zones來查看各個網絡區域的設置。

droptarget: DROPicmp-block-inversion: nointerfaces: sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • block(限制)

任何接收的網絡連接都被?IPv4?的?icmp-host-prohibited?信息和?IPv6?的?icmp6-adm-prohibited?信息所拒絕。

blocktarget: %%REJECT%%icmp-block-inversion: nointerfaces: sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • public(公共)

在公共區域內使用,不能相信網絡內的其他計算機不會對您的計算機造成危害,只能接收經過選取的連接。

public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: dhcpv6-client http sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • external(外部)

特別是為路由器啟用了偽裝功能的外部網。您不能信任來自網絡的其他計算,不能相信它們不會對您的計算機造成危害,只能接收經過選擇的連接。

externaltarget: defaulticmp-block-inversion: nointerfaces: sources: services: sshports: protocols: masquerade: yesforward-ports: source-ports: icmp-blocks: rich rules:
  • dmz(非軍事區)

用于您的非軍事區內的電腦,此區域內可公開訪問,可以有限地進入您的內部網絡,僅僅接收經過選擇的連接。

dmztarget: defaulticmp-block-inversion: nointerfaces: sources: services: sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • work(工作)

用于工作區。您可以基本相信網絡內的其他電腦不會危害您的電腦。僅僅接收經過選擇的連接。

worktarget: defaulticmp-block-inversion: nointerfaces: sources: services: dhcpv6-client sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • home(家庭)

用于家庭網絡。您可以基本信任網絡內的其他計算機不會危害您的計算機。僅僅接收經過選擇的連接。

hometarget: defaulticmp-block-inversion: nointerfaces: sources: services: dhcpv6-client mdns samba-client sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • internal(內部)

用于內部網絡。您可以基本上信任網絡內的其他計算機不會威脅您的計算機。僅僅接受經過選擇的連接。

internaltarget: defaulticmp-block-inversion: nointerfaces: sources: services: dhcpv6-client mdns samba-client sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • trusted(信任)

可接受所有的網絡連接。

trustedtarget: ACCEPTicmp-block-inversion: nointerfaces: sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:

1-4. 總結

  • target

target: { default , ACCEPT , DROP , REJECT }

zonetarget說明dropblocktrusted其它網絡區域
DROP拒絕請求,不會回復信息,訪問者處于等待狀態,直到timeout
REJECT拒絕請求,會明確告訴訪問者,請求被拒絕
ACCEPT接受請求。
default(默認跟REJECT一樣)
  • icmp-block-inversion

icmp-block-inversion: { yes , no }

yesicmp-blocks里面記述的接受,沒記述的拒絕,也就是反轉
noicmp-blocks里面記述的拒絕。
  • ?interfaces

interfaces: { 網卡名稱?}

用ifconfig或者ip addr查詢到的網卡名稱

例:interfaces: ens33

  • sources?

sources: { IP or CIDR}

例:sources:192.168.0.211

? ? ? ?sources:192.168.0.0/24

  • services

?services: { servicetype}

firewall-cmd --get-services命令 可以查詢到所有的service。但是只能看到名字。除了大家熟悉的http,ssh等,其余的可以去/usr/lib/firewalld/services/ 下查詢。

例:zabbix-server 可以用?cat /usr/lib/firewalld/services/zabbix-server.xml 去看端口號

  • ports?

ports: { port/protocol }

像http,https,ssh一類的可以用上面的services來定義。

像一些非常用端口,比如20001一類的,可以用ports定義。

例:ports:20001/tcp

  • protocols

?protocols: { protocol }

protocol協議就是普通的熟知的協議,比如說tcp udp icmp。

  • masquerade

?這個東西是端口地址轉發用的,比如說從別的機器訪問本機的9090端口相當于訪問另一臺機器的80端口。這種情況下,需要開啟masquerade,當數據流量返回來的時候可以自動返回。

例:也就是說目標地址轉換以后,從A(訪問機)->B(本機)->C(地址轉換后的機器),這個route是通的,但是數據從C(地址轉換后的機器)->B(本機)->A(訪問機),如果不開啟masquerade,就需要源地址轉換。

firewall-cmd --add-masquerade? ? ? ?開啟

firewall-cmd --remove-masquerade 關閉

  • forward-ports

?forward-ports: { port=port:proto=protocol:toport=轉換后的端口:toaddr=轉換后的IP }

例:forward-ports: port=8080:proto=tcp:toport=80:toaddr=192.168.1.1

就是到達本機8080端口的數據都會轉發到192.168.1.1:80。這個時候如果上面的masquerade不開啟,從192.168.1.1:80返回的數據就不能到達本機的8080端口。

  • source-ports

?source-ports:{ port/protocol }

跟前面的ports一樣的格式,這個指的是源port,ports指的是本機的port。

  • icmp-blocks?

icmp-blocks: { ICMP Type }

ICMP type 可以用?firewall-cmd --get-icmptypes 來查看。具體的定義情報的話 參照

/usr/lib/firewalld/icmptype 下的xml文件

  • rich-rules?

rich-rules: {rich rule}

前面的那些屬性設置不了規則了,可以用這個屬性來設置詳細規則。

例:firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.200.0/24 port port=135 protocol=tcp accept'

來自192.168.200.0/24網段的訪問本機端口135的tcp協議,都接受。

充分理解上面的東西以后剩下的就是命令的用法了。

2 firewalld的啟動和關閉

# firewalld狀態查詢(兩個都可以) firewall-cmd --state systemctl status firewalld#firewalld啟動 systemctl start firewalld#firewalld開機啟動 systemctl enable firewalld#firewalld關閉 systemctl stop firewalld

3 firewalld的命令使用

3-1. 更改運行時設置,然后將它們永久化

firewall-cmd <other options> firewall-cmd --runtime-to-permanent

3-2.?設置永久設置并將設置重新加載到運行時模式

firewall-cmd --permanent <other options> firewall-cmd --reload

3-3. 小技巧,規則過期,例如下面的例子,增加ssh的規則,但是15分之后失效。

firewall-cmd --add-service=ssh --timeout 15m

3-4. 列出當前active zone的全屬性

firewall-cmd --list-all# 擴展 # 列出指定zone的全屬性 firewall-cmd --list-all --zone=block#列出所有的zone的全屬性 firewall-cmd --list-all-zones

3-5. 列出當前active zone的各種屬性值

firewall-cmd --list-[option]

option可以取下面的值
? interfaces
? sources?
? services
? ports
? protocols
? forward-ports
? source-ports
? icmp-blocks
? rich-rules

# 列出所有service firewall-cmd --list-services # 列出所有icmptype firewall-cmd --list-icmp-blocks # 列出所有pors firewall-cmd --list-ports

3-6. 其它的command可以用下面的命令來看幫助文檔。

man firewall-cmdfirewall-cmd --help

總結

以上是生活随笔為你收集整理的Linux学习整理-网络防火墙firewalld的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。