作者roccqqck (Rochelle)
看板Linux
標題[問題] firewalld擋10.20.1.x 但不擋10.20.1.9
時間Wed May 18 15:49:20 2022
需求是firewalld擋10.20.1.x
但不擋 此網段某幾個ip
例如只擋
10.20.1.0-100
10.20.1.105-200
10.20.1.205-255
中間的ip不擋
其他網域也不擋
上網查只有擋整個網段 或 擋單個ip
firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' service name ='ssh' source address='10.20.1.100' reject"
firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' service name ='ssh' source address='10.20.1.0/24' reject"
難道我只能用窮舉法設定每個ip reject了嗎
請問有沒有更簡單的command來設定
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自:
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1652860162.A.C45.html
1F:→ CP64: 那先對放行的那幾個下 accept 最後對整段下 reject 呢 05/18 16:34
2F:推 nknudragon: submask不要用24 ,用28 or 30看看 05/18 16:39
4F:推 nknudragon: 另外的想法是,用/28,切成16個網段,開1擋15 05/18 16:53
5F:推 mirc: 先設定要放行的,之後再擋網段呢? 05/18 17:29
6F:→ roccqqck: 看來2樓的方法可能是唯一解 05/18 20:49
7F:→ roccqqck: mirc的方法我試過 失敗 整個網段reject 05/18 20:50
8F:→ roccqqck: 也是CP64的方法 05/18 20:59
9F:推 hizuki: iptables -L -v 先到accept target的方法是對的 05/18 22:16
10F:→ CP64: 不太確定 firewalld 底下的運作 看是先用樓上的方法 05/19 01:41
11F:→ CP64: 或是 nft list ruleset 看它生出來的 rule 是不是對的 05/19 01:41
12F:→ tomsawyer: 我記得firewalld跟iptables一樣有先後順序 你有對嗎? 05/19 10:32
firewalld 我兩種順序都試過 都是整個網段被reject
iptables的確照順序會成功 iptables還有--src-range的用法
但是要把其他規則移植到iptables 我寧用窮舉法
13F:→ tomsawyer: 喔我看錯,50可能要48遮 100用96遮 05/19 10:34
14F:推 chang0206: 維護一個iplist 作為放行白名單? 05/19 11:39
15F:→ CP64: 實際看了產出來的 rule, firewalld 會強制把 deny 放前面... 05/20 04:23
16F:→ CP64: 會需要在 accept 的 rule 裡加 priority=-1 往前拉 05/20 04:28
感謝 不過我的RHEL7 firewalld 0.6.3 剛剛測試似乎不支援priority
※ 編輯: roccqqck (101.12.100.160 臺灣), 05/20/2022 09:55:00
17F:→ tomsawyer: Rich-rule的參數似乎有rule-priority 可以用 可以試試 05/22 05:27
18F:→ tomsawyer: >0.7 05/22 05:28
19F:→ fashionjack: 先寫先執行,1F是正解。 05/22 05:28
firewalld一定要priority才行 照順序沒用
我另外找到一個很奇怪的方法 用firewall-cmd下iptables的規則
www.tecmint.com/block-ssh-and-ftp-access-to-specific-ip-and-network-range
#--------------------- On IPtables Firewall ---------------------
```
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j REJECT
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport ssh -j REJECT
```
#--------------------- On FirewallD ---------------------
```
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source
192.168.1.100 -p tcp --dport 22 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source
192.168.1.100/24 -p tcp --dport 22 -j REJECT
```
```
firewall-cmd --reload
#這規則用firewalld看不到
firewall-cmd --list-all-zones
#用iptables才看得到
iptables -L -n --line-numbers
```
※ 編輯: roccqqck (49.216.102.88 臺灣), 05/25/2022 15:22:33