firewalld防火牆
由於omv本身的防火牆功能較陽春(系統主動建立的連線設定問題多),改用firewalld防火牆
sudo apt remove --purge ufw
sudo apt install firewalldsudo systemctl status firewalld 的錯誤訊息
debian 10 firewalld 0.6.3 Error: COMMAND_FAILED: '/usr/sbin/ip6tables-restore -w -n' failed: ip6tables-restore v1.8.2 (nf_tables): line 4: RULE_REPLACE failed (No such file or directory): rule in chain OUTPUT 解決辦法
vim /etc/firewalld/firewalld.conf
有個InvividualCalls=no 把它改成InvividualCalls=yes
儲存離開
sudo systemctl restart firewalld
# 啟動 firewalld 服務
systemctl start firewalld
# 停止 firewalld 服務
systemctl stop firewalld
# 設定開機自動啟動 firewalld 服務
systemctl enable firewalld
# 列出所有設定
sudo firewall-cmd --list-all重要設置:白名單 IP 位址
方法一(推薦)
方法二
關閉白名單IP(請先把ssh服務開通,不然就通通不通)
指定zone的網路介面
cat /etc/firewalld/zones/public.xml
查詢區域設定
列出 firewalld 中已經定義好的區域,執行:
設定預設 ZONE
列出所有的區域與內容
查詢public zone永久設定值
區域簡介
firewalld 的區域(zone)可用來設定網路連線、介面等所處的運作環境,對內使用的區域其防火牆規則會較為寬鬆,反之若是對外的區域其規則會較為嚴謹。
一條網路連線或介面只能隸屬於一個區域,我們可以自訂區域的設定,也可以直接從 firewalld 預設的幾個區域中選擇:
區域
描述
drop
任何往內的封包都會被丟棄,只允許往外傳送的封包。
block
任何來自於外部的連線都會被阻擋,只允許自己系統主動建立的連線。
public
公開區域,預設不信任其他電腦與網路,只有被允許的連線才能進入。通常大部分的連線設定都會放在這裡。
external
公開區域,適用於 NAT 網路環境。
dmz
非軍事區域(demilitarized zone,有點像是放在外頭的危險區域),允許外部的連線進入,但其對內的連線則有限制,只有被允許的連線才能連進內部網路。
work
公司內部等工作區域,在此區域中不應該會有惡意的攻擊者。只有被允許的連線可以進入。
home
家裡頭的網路區域,在此區域中不應該會有惡意的攻擊者。只有被允許的連線可以進入。
internal
內部網路區域,在此區域中不應該會有惡意的攻擊者。只有被允許的連線可以進入。
trusted
完全信任的區域,接受所有連線。
列出預設區域
設定預設區域
列出預先定義的服務名稱
若要將指定的服務新增至指定的區域中,可執行:
上面這行指令只是暫時將 http 服務新增至 public 區域中,重新開機後這個設定就不見了,若測試沒問題,再將設定寫入設定檔,永久保存:
sudo firwall-cmd --permanent --add-port=8000/tcp 插入防火墻規則,放通8000端口。
埠號的部分也可以用範圍的方式指定,一次開通多個連接埠:
移除服務
若要將指定的服務從某個區域中移除,可以執行:
如果是要移除自訂的通訊協定與埠號,則執行:
新增服務名稱
除了直接指定通訊協定與埠號之外,我們也可以自訂新的服務名稱,加入 firewalld 的服務名稱清單中,這樣就可以使用服務名稱的方式來設定開啟的服務,這樣做的好處是可以讓防火牆的設定看起來更容易理解,清楚說明埠號的用途。
若要使用名稱(如之前的8000/tcp),可以參考/usr/lib/firewalld/services 添加cloudcmd.xml到/etc/firewalld/cloudcmd.xml
重新載入設定
cat /etc/firewalld/public.xml
firewall-cmd --zone=public --add-source=120.115.4.29
firewall-cmd --zone=public --remove-source=120.115.4.29
firewall-cmd --runtime-to-permanent
用於apt-get
Last updated
Was this helpful?