Centos7 firewalld GUI設定問題 - Linux

Megan avatar
By Megan
at 2018-02-03T03:13

Table of Contents

※ 引述《easytry (放空)》之銘言:
: Centos7 Firewalld 在設定阻擋與允許來源ip失敗
: 想請教一下了解這塊的前輩們
: 狀況如下
: 在使用GUI模式設定時 :
: 目的是要允許192.168.0.0/24 & 172.20.1.0/24 網段通過 , deny others
: 以正常firewall來說 , 應該是允許192.168 與172.20 , 最後再加一筆deny all即可
: 但在Centos7 的firewalld 下卻不行 (by rich rules)
: 還是其實跟本不是在rich rules下做?
: 在rich rules下設定 , 不管怎麼設 , 都只吃deny all那筆
: 如果設為deny !172.20.1.0/24 , 的確會允許172.20.1.0/24 deny others
: 但這狀況下也沒辦法再設定允許192.168.0.0/24 了
: 先感謝幫忙!!感恩!

這邊直接回文,原本推文內容我好像說錯,所以這邊重新回應一篇,不好意思

firewalld 本身底層還是使用 iptables,所以結合 iptables 的 chain 概念,
所以可能要先瞭解底層怎麼產生的。下面敘述前面省略 iptables 這個命令:

-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_SOURCE
-A INPUT -j INPUT_ZONES

-A INPUT_ZONES -i eth0 -g IN_public
-A INPUT_ZONES -i eth1 -g IN_public
-A INPUT_ZONES -g IN_public

-A IN_public -j IN_public_log
-A IN_public -j IN_public_deny
-A IN_public -j IN_public_allow
-A IN_public -p icmp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

整個來看,INPUT chains 最後順序 IN_public_log, IN_public_deny 與
IN_public_allow,最後跑拒絕存取。

1. 在 public zone 裡面,就你說的要允許某些 ip 或是拒絕某些 ip,我想
你大概這樣用?

firewall-cmd --add-rich-rule="rule family=ipv4 \
source address=192.168.0.0/24 accept"

firewall-cmd --add-rich-rule="rule family=ipv4 \
source address=10.0.0.0/8 reject"

那 accept 部分是放在 IN_public_allow 這個 chain, reject 部分放在
IN_public_deny。

那依據這個來看:

-A IN_public -j IN_public_log
-A IN_public -j IN_public_deny
-A IN_public -j IN_public_allow
-A INPUT -j REJECT --reject-with icmp-host-prohibited

IN_public_log ---> IN_public_deny ---> IN_public_allow --> REJECT ALL

上面規則來說 reject 是多打的,因為最後就是都阻擋,所以只要新增
accept 部分就好。

那這樣用呢?

firewall-cmd --add-rich-rule="rule family=ipv4 \
source address=192.168.0.0/24 reject"

firewall-cmd --add-rich-rule="rule family=ipv4 \
source address=192.168.0.1 accept"

這兩行執行之後,其實 192.168.0.1 也無法連入,因為 reject 優先比較高

2. 依據你描述情況若有複雜需求,個人建議用傳統 iptables 來弄停用
firewalld 可能比較簡單,但若還是要用 firewalld 的話看起來就是
在 INPUT 的 INPUT_direct 這個 chain 動手腳,那語法大概是:

firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 1 \
-s 192.168.0.1 -j ACCEPT

那就等於傳統直接呼叫 iptables 語法:

iptables -I INPUT 1 -s 192.168.0.1 -j ACCEPT

3. 傳統 iptables 對你需求可能簡單多

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT

iptables -A INPUT -s 192.168.0.1 -j REJECT
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

這樣就是允許 192.168.0.0/24,但是 192.168.0.1 卻例外被拒絕

提供給你參考.

--
如果真的愛一個作業系統 怎能不害怕不再能使用它 而我們必須接受現實
於是長大了 寂寞就是沒有了機會再用它 比沒有電腦還要寂寞
而那些點亮我們生命的作業系統 就彷彿電影中發生在暹邏的愛情故事
即使短暫使用也會刻骨銘心

--
Tags: Linux

All Comments

Dinah avatar
By Dinah
at 2018-02-07T03:33
Gilbert avatar
By Gilbert
at 2018-02-11T11:27
推 大感謝阿!! 謝謝您!

中文 man-pages 的折行警告

Susan avatar
By Susan
at 2018-01-28T13:29
我自己有把常用東西寫成 man-pages 的習慣, 像之前把台灣常見的固定 IP 寫成 man-pages , 插人 IP 比較方便。 http://github.com/gholk/loco/tree/master/man 因為學校是中文,一定要用, 但中文在 groff 處理的時候斷行會有問題, 間 ...

linux雙顯卡的問題(amd nv 混插)

Jake avatar
By Jake
at 2018-01-28T01:22
想要請問一下各位專業大大 小弟組了一台Ryzen 1600的機器,目前手上有一張nv 1070跟一張amd 5450的顯卡 請問有方式可以設定,讓一般的桌面應用都使用5450渲染(例如逛網頁、看影片、寫code ),然後跑特殊應用(挖礦、Machine Learning)的時候,指定切換到1070的CUDA ...

Ubuntu的WiFi中斷?

Hardy avatar
By Hardy
at 2018-01-26T14:21
可能是該 WiFi 的 kernel module 裡面的自動省電機制所造成的也不一定 先用 `find /sys -name control | grep net` 找一下哪一個是 WiFi 的 kernel module Ex. /sys/devices/pci00/net/wlx012345678901 ...

linux透過手機上網使用bt沒綠燈

Daph Bay avatar
By Daph Bay
at 2018-01-25T17:35
用linux mint上網開bt抓檔 查過要開port才會綠燈變快 zf3 552kel 怎麼設定手機呢 我查過有一個zf3 as router 不知是不是 - ...

Ubuntu與windows裝在不同硬碟的開機選單

Tom avatar
By Tom
at 2018-01-24T15:40
我目前Ubuntu(16.04)的版本是安裝在【D槽】 每次要開啟都必須進入BIOS選取作業系統 一開始還好,但用久了實在是有點煩 想請問各位大大 有沒有辦法把這個作業系統新增在如下圖這種開機選單呢?? https://goo.gl/cN9XFE 謝謝大家 - ...