作者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/cn.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