找回密码
 注册
查看: 1309|回复: 4

firewall防火墙acl规则,以及介绍

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-1-17 10:08:56 | 显示全部楼层 |阅读模式
现在对安全的要求更严格了,对内网环境的特定服务器,现在只允许指定IP或IP段进行访问,其他一律屏蔽,配置步骤如下:
9 ~1 k" L. n, A: R1 J" h检查防火墙是否启动:# K, n& D( o0 p$ |% N2 G
systemctl status firewalld.service
9 K2 _4 U! g/ O" h启动防火墙:
+ Y% g$ t5 P- `6 R$ tsystemctl start  firewalld.service# m* R. m, e) ]8 h; o& e! ]& X; b

! n# S) ^5 t9 |6 e
4 Q4 H/ l9 W% x3 c1 w9 a
开机启动防火墙:
/ @; O, Q! P- l: I$ L' f, Csystemctl enable firewalld.service# w. E! a- k) e" M
/ g* Q% y& f) {" }/ V* e
: S9 D8 ?, P* t4 L2 z4 \+ d
修改防火墙acl规则:
) q* }' K' O! [通过编辑文件:
$ [* G+ J6 B4 L, r6 y# Vvim /etc/firewalld/zones/public.xml: W9 _$ c, ^9 @5 a9 t  z

+ ]& A- |5 f( y6 W, i5 S# f3 O<?xml version="1.0" encoding="utf-8"?>' D* w0 @- ^2 t$ L( n, f5 z
<zone>1 N" q* |: G6 M' c, y3 G
  <short>Public</short>" I) z  F; `2 K* Q
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
6 V5 _9 ]6 L( g- q, c  <service name="ssh"/>
0 V/ s5 _. I) n1 _4 w6 }  <service name="dhcpv6-client"/>
! Z, b  l2 M/ ?+ G7 n4 p, Z</zone>+ f! i* E; {" h- t/ ?
~                  7 }9 j2 E' Z, S; p" A! b

3 u3 r+ e, w% d+ [4 c& O6 m默认的防火墙规则
/ E% X, ]) L& z5 S4 z
/ c$ P* W5 [% s  N) i* E7 j第二种通过命令:1 H) G4 E1 `; N

' z6 R+ K3 J( t, ~- u) O- O/ g手动开放指定端口
4 c; {# X" Y3 o+ g" L' T
  w/ q+ N" L# u: H

firewall-cmd --permanent --add-port=3306/tcp


  j4 q1 a: g; W: j+ {2 i* q% D1 d; ]1 y4 ]/ ^( K
改完配置文件后重载一下防火墙服务
5 u" Y6 o( X0 {7 r5 W2 A' a+ ^firewall-cmd --reload4 w6 M. p" |$ ~  `

! x" B; k' ^) t/ o0 O( G, q6 }
1 o1 {. M+ Q. U3 J! _基本应用

firewall-cmd --state5 d) J7 [7 \) U! [  `/ {1 l
获取firewalld状态
+ s7 t8 ?3 s( L7 `5 |0 x.
, z; b" x, x2 ]7 W6 K+ M/ _5 Q4 V. dfirewall-cmd --reload
" k7 B4 Y) S. }5 {8 J- O在不改变状态的条件下重载防火墙( E% b/ U* h( M8 G% U, X6 C7 I
., {" Z" \( n2 p& D
firewall-cmd --complete-reload
1 F! S6 @: N) B% w' Y完全重启,状态信息将会丢失
/ v* e- [7 X7 H9 ^, F0 B1 [.* y0 S5 f2 h' S9 P) }+ |/ ?' E% V
firewall-cmd --get-zones
9 A- W# S" T/ D. z; \2 G获取支持的区域
- o$ O/ v. b% @9 D1 L" {8 ?, o.
) j; j/ y% A/ G6 _! cfirewall-cmd --get-services
0 c9 o% r! u% E获取所有支持的服务,支持的服务存放在/usr/lib/firewalld/services目录下。! Z4 N! g" c2 K
服务是firewalld所使用的有关端口和选项的规则集合。
. J6 }, ^- h1 p/ k被启动的服务会在firewalld服务开启或运行是自动加载。
& U6 S3 S7 D0 z$ H我们还可以创建自己的服务,即添加端口和服务的对应关系,将在下面讲解。5 J# k- d3 O) m3 q: ]
.
+ c. ]4 _. q$ B- P. r5 o' a6 }5 gfirewall-cmd --get-icmptypes
, q/ `) K- U/ P. D; Z获取所有支持的ICMP类型
! z9 S6 N# a4 j9 u/ U1 F2 k.
( j5 q$ ?$ ~5 {: M% Q6 E& R$ Mfirewall-cmd --list-all-zones
; J1 K+ F, d9 t  B! ]4 s列出全部启用的区域的特性(即查询当前防火墙策略),特性是定义的防火墙策略。& z/ V( p/ p2 V1 x
策略如:服务、端口和协议的组合、端口/数据报转发、伪装、ICMP拦截或自定义规则等。
/ |# l& s) G: H5 \+ S该命令会列出所有区域的所有特性,包括详细规则(rich-rules)。
; o1 w1 S2 Z/ g9 d% ^* Y.
' t4 o+ J  U: e$ E5 Z( f( Ifirewall-cmd [--zone=区域] --list-all* H# e/ I' T1 i$ O6 D2 L! ]3 B8 [
输出指定区域启用的全部特性,如果区域被省略,将显示默认区域的信息。7 x* @! t% i. ?1 B
.
! s$ L! U' p  r/ c; f8 ^& Jfirewall-cmd --get-default-zone" u) q) T2 F& L% d
查默认区域,默认的默认区域为public
+ W9 V$ q5 K( `+ S9 |9 x! _) R.
$ }5 H' [; L4 H0 v- @" |firewall-cmd --set-default-zone=区域
% h, ]/ Z- P6 q' _1 z设置默认区域,也可通过/etc/firewalld/firewalld.conf中的DefaultZone配置项定义默认区域。
: Z/ b  `% A5 k' ~& \, {  _流入默认区域中配置的接口的新访问请求将被置入新的默认区域。当前活动的连接将不受影响。
( W" S$ Z# v  s' s9 Q; G.+ O4 ~2 V0 ^+ n
firewall-cmd --get-active-zones$ H) F% \& `% p# Q# q4 e, `
获取活动的区域,同时会输出活动区域所包含的接口。% N$ m) o6 {" c5 {, {; m: T
.
; h9 i% r, Z$ e# o! {firewall-cmd --get-zone-of-interface=网卡名4 Q$ u3 }7 P) @! T$ v& h% ]9 S
查指定接口属于哪个区域
- G0 e1 |: q6 i* q; x! ?.4 H; e7 m" I6 w  ?. x9 T' ?- f
firewall-cmd [--zone=区域] --add-interface=接口名8 d' i9 _1 @* a" g& h: o4 [
将指定接口增加到指定区域,如果区域被省略了,将会被添加到默认区域。
0 h* C: ?# c" {! V8 a一个接口同时只能属于一个区域,接口会在防火墙重新加载后重新应用。
9 F  O% z, U% `! S: ]" ?.
$ p1 }4 n' x5 c' |9 Kfirewall-cmd [--zone=区域] --change-interface=接口名
! e9 e/ W, K4 Q, n修改接口所属区域,这个选项与--add-interface选项相似。
4 S1 f% W6 N, M但不同的是,当接口已经存在于另一个区域的时候,该接口将被重置到新的区域。6 _, ^0 V2 D% b2 J1 l
.
! i/ q8 B+ B! x0 t7 w7 y1 B' f4 cfirewall-cmd [--zone=区域] --remove-interface=接口名% Y+ ^" Q. N* p( [! B% @
从指定区域中删除指定接口,删除后,这个接口的所有数据包将使用默认区域的规则。! U! _+ O: a# Q0 P: |' M
.* T9 D8 L! a4 Z6 J1 ^
firewall-cmd [--zone=区域] --query-interface=接口名
4 {/ [8 r3 h- r! x, K查指定区域中是否包含指定接口,如果区域被省略了,将被指定为默认区域。: X& e% a0 P5 i7 s- r) a8 r
.3 w% N$ F& p+ W' x- L  v
firewall-cmd [--zone=区域] --list-services9 a2 e8 P, S$ p: ?3 O
列举区域中启用的服务,如果区域被省略了,将使用默认区域。8 B" d5 r+ D! t" B" U& `8 `
./ z1 H9 F6 [6 t# Z9 F8 P; x
firewall-cmd --query-masquerade 检查是否允许NAT转发
7 D+ i/ U3 o% d% y4 M1 xfirewall-cmd --zone=public --add-masquerade --permanent 永久开启路由转发
- x3 Q/ U. |& f$ G: efirewall-cmd --remove-masquerade 禁止防火墙NAT转发4 B) h; T# i1 [( U* U. ^
.; ^  ]! x) Y6 N6 [
firewall-cmd --panic-on 启用应急模式,将阻断所有网络连接,以防出现紧急状况。
4 ?- {) Y3 d7 D( j4 m/ Qfirewall-cmd --panic-off 禁用应急模式  S5 S, V2 R" E/ v3 h8 `; p0 T
firewall-cmd --query-panic 查应急模式状态2 ]1 |2 [5 t3 ]: o7 o% ]
.* `5 C/ Q& X0 w) G
其它相关的配置可在手册页man firewall-cmd中查看。


; T. ^" E: c5 Z
7 k/ S& `2 ]8 J: i

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 10:21:23 | 显示全部楼层
firewalld默认为我们提供了9个区域,默认就有一些区域是有效的。这些区域按照不信任到信任的顺序排序,如下。3 @' r0 q0 q+ W  x4 T
.
2 z" s9 j: c. c起---------------------------------: {4 V/ H; N) F, }2 d4 W& ?
丢弃区域(Drop Zone)
* P' ]( d( Y  O, P& q; U3 J如果使用丢弃区域,任何进入的数据包都将被丢弃。8 a5 S' ^& }  }. Y
这个类似于6.x版本中使用的iptables -j drop。
$ B* [4 M& ?: p使用丢弃规则意味着将不存在响应。% ^. |$ _) I3 _8 ~+ c( M5 r) H
.7 o! C! f7 v5 p5 }3 |& W
阻塞区域(Block Zone)
+ d% ^( M. U) e* M  Q6 F& ~+ ?阻塞区域会拒绝进入的网络连接,并返回icmp-host-prohibited。) \, b+ v# t3 P3 B0 Z
只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。2 {7 S3 e8 @1 f2 H& r7 U9 G
.$ f( E- z0 f  V+ T" h4 z
公共区域(Public Zone)
* h" i- P8 O5 f( g3 Q; @只接受被选中的连接,默认只允许ssh和dhcpv6-client。5 E' u$ ^; j- H" ^! M2 ?# A2 t
这个zone是缺省zone,即被默认使用的Zone。
- D; s4 e& F& J# ~' ?" X.1 @/ @, r) o$ h
外部区域(External Zone)
* P3 e# }  }3 F只有指定的连接会被接受,即ssh,而其它的连接将被丢弃或不被接受。7 T  m0 f3 b: a2 v! {3 m
这个区域类似于路由器的启用伪装(masquerading)选项。
) i( H* ?) e! i$ n+ K1 U# ?) l' h.3 N% M+ B& P* Q, E
隔离区域(DMZ Zone)
0 y) I+ Y0 I2 p$ i5 @. U- z! D该区域只允许被选中的连接通行。! i, ]1 K3 Q% `* z1 ^& w; t# O
如果只允许部分服务能被外部访问,可以在DMZ区域中定义。
% [7 g- Z! {3 B( l- ].2 B/ F( u/ H+ x: Y% X7 k* x* j
工作区域(Work Zone)
) p: @  w2 t2 N1 ?0 T8 k1 X: {4 k在这个区域,我们只能定义内部网络连接。
& S; L- i) Z1 j, U) X比如私有网络通信才被允许,只允许ssh, ipp-client和dhcpv6-client。$ r  O5 G. [' G" `
.2 t, x7 [$ q+ j
家庭区域(Home Zone)- g0 ?$ V0 c) |6 k- g
这个区域专用于家庭环境。( Q( D0 v$ x. T- w, d9 l) P) P- Z# H. y4 t
它同样只允许被选中的连接,即ssh,ipp-client,mdns,samba-client和dhcpv6-client。) Q7 _, ^. h$ x; V+ r! m
.
. a7 s. D0 [6 k/ n- a, [, P内部区域(Internal Zone)# M1 G# R9 \7 v5 i) {1 {( z7 C
这个区域和工作区域类似,只有被选中的连接才可通行,和家庭区域一样。, M) F* u, d; A
.
) E5 g1 F; ~# s( o: u( p信任区域(Trusted Zone)1 A8 F+ a/ ~7 u  k
信任区域允许所有网络连接通行。
: _. p$ y# u, p; s切记:trusted区域是最被信任的区域,使用该区域时,在不做任何配置的情况下允许所有连接通行。
: z+ \6 C6 T5 G" A--------------------------------------始
1 F6 n( l. a2 s.
/ A! K2 G! \: [7 T6 |8 {以上是系统定义的所有的zone,但这些zone并不是都在使用,只有活跃的zone才有实际操作意义。* I. F4 Z  X3 [  t6 m8 v$ A

$ f5 J% N2 G* JFirewalld 原则1 b% i. B0 J" o
.) X7 k4 j# I! r6 C. B4 p3 ]# }& g
当一个客户端访问服务器时,服务器将根据以下原则决定使用哪个zone的策略去匹配。( e' n5 \& B6 d" c  [" \5 k
.
) N4 ~1 E/ G, t* J6 [4 M9 q$ y) w+ @* J1
3 w$ K& K6 q+ n- Q; h# _9 m如果这个客户端数据包的源IP地址匹配zone的sources(来源),那么该zone的规则就适用这个客户端。8 A6 C: l3 L6 U
注意:一个源只能属于一个zone,不能同时属于多个zone。  ~& k4 z$ r1 a
./ D) d$ L, D, b( Z1 Y
2
$ r4 ^" f) r  L/ z7 |如果这个客户端数据包进入服务器的某一个接口(如eth0)区配zone的interfaces, 则么该zone的规则就适用这个客户端。
! ?! l% h7 e: P; f2 m/ D. _; s一个接口只能属于一个zone,不能同时属于多个zone。
0 r' H: Q0 `; N0 M7 n.  h( _% V2 L9 L1 H) g2 c" ]! c
3
2 Z  \3 [5 h5 v, o4 Y8 G: ^/ k如果上述两个原则都不满足,那么缺省的zone将被应用,即使用public区域。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 10:24:43 | 显示全部楼层
实现过程" N0 Z# j# \7 T

; e: ^0 }3 g# q9 R4 M3 [; ^& S下面的命令将配置192.168.1.0/24整个网段的IP允许访问服务器的22端口$ U1 l' j: M6 J: E8 T7 Y' [

2 s+ d: L9 ?% ^ 6 c' j6 D9 r& W) d3 M
// 先移除默认开启的没有访问限制的ssh服务
1 U8 \& L& Y7 M7 I( _# firewall-cmd --permanent --remove-service=ssh
8 |" R- f' u" j" n4 Y6 H// 添加复杂规则,只允许指定IP段访问22端口
( j+ S1 t  F$ G" V  k# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'- h7 q5 W% n; a7 ?
// 使上面配置生效0 ~0 u1 a0 l; s3 e
# firewall-cmd --reload" p7 r. ~+ l, `# ]& C4 s5 l
// 查看当前配置信息. B5 @. a, [3 I( Y6 ?: o7 @+ D
# firewall-cmd --list-all
8 N  q/ U3 s# S% S0 L1 w
; V& F) q0 M1 |, t: ^备注:
5 K" b; M" |* @! f7 V, v5 n source address也可以设置为单个IP地址,例如192.168.1.1
1 l8 E& x# m1 U- D/ J7 c: h. v port可以为单个端口或端口范围,例如1-10000
' i) ?7 W" i- P2 t, o6 i+ U) g# n( G+ U3 h3 I

  y, l3 l, O3 d4 c9 ? " e5 j' U8 n) E9 a3 o
其他常用命令: x! v# i) T' K# M3 o- T+ w+ i' S

$ V" D5 m6 K# g( {9 M! R删除之前的复杂规则,这里的内容需要与之前添加时的rule内容完全一致,可以复制粘贴过来
  q$ p4 O/ q0 c# R  r
( R# }$ G# _5 s/ g" ]. hfirewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
3 P$ u/ [$ I6 a& S! ]; s- i
5 y7 X4 ~( w+ v7 @9 E& b1 ^; ]手动开放指定端口
- W' J4 }3 ^4 {/ [% i
) e# X, [2 x8 n! T/ Q' Gfirewall-cmd --permanent --add-port=3306/tcp
2 N; q) f" d, i+ v- R! T  d # z2 ?# k* V. o
删除开放的端口
* f5 e- m3 m$ i" o) |" @$ F
4 N& ~; U' u. k1 Z( vfirewall-cmd --permanent --remove-port=3306/tcp
* X+ E( K7 ]1 X" K" g
2 d; [' J# _" Z" b5 v* N9 ~6 t开放指定服务(系统内置的)- M$ u) {9 M% X8 y
" {, f$ p! E$ p3 ]( b
firewall-cmd --permanent --add-service=http
& |" ~2 L5 X! N7 v 7 Q% y& |7 ]6 y2 A7 o5 L& ~* z! H
删除服务
1 K5 V+ S! z. `8 p9 t* k) u" x. \0 m' @
9 J+ |% j  l: b$ Mfirewall-cmd --permanent --remove-service=http
. g9 A# c" W1 C# `" q% f' V# J
; o1 e+ b0 y* d: T' F5 ~添加白名单地址(单IP)
' I* y4 f* C! g1 j* R' H2 O6 T7 w
! o7 Z1 D6 X$ |+ afirewall-cmd --permanent --add-source=192.168.1.100' D2 b" u! E  d) A  Q( b
4 ^$ V* G6 E" G2 v
注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究
) F' R6 l9 ~) ^: o+ p8 d$ R( r" |2 K, ]% Z5 U5 a$ K

# V( H# ?5 E% w* b4 a0 b) O添加白名单地址(指定网络段CIDR格式)
  M0 W& Q$ Q* X( [
) N! Z; H4 k1 |6 c+ d& Sfirewall-cmd --permanent --add-source=192.168.1.0/24
6 [* P& r. q. p, ^# v
- V- S3 r! l! G) _删除白名单地址( c$ V  I7 ^: Q. A3 r% w6 j

! U7 G: e5 R- W% M0 _1 v! u) l/ _firewall-cmd --permanent --remove-source=192.168.1.100
4 S1 H* _2 R# y" f9 b
9 d; B+ A6 T$ s5 n7 w屏蔽指定IP地址
) b7 G0 Q8 s9 e
; p8 c7 C* H/ S, M, w, ]firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"' E4 b# h( v( s5 v# l1 O+ {$ h

0 |" m/ O5 l+ r$ K/ X6 ^4 f屏蔽IP地址段( e) y- s' D8 s2 o( r

" z! Z6 Q  x! ^2 |* Q, Q  ^firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
/ R8 w" j) }  G1 ~% y
2 k" L# ^, d- H2 K! T( Y手动编辑xml配置文件
! I- O" z3 M' A; V% c
( E6 d% E- G2 u( \除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效)

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 10:26:05 | 显示全部楼层
1.firewalld的基本使用
4 q; d3 p* q& y. O% y0 K3 I# A  t; a2 }( G% j
启动:  systemctl start firewalld5 H1 b' ^& t' z3 V( `" Y
- ~7 E# t" A# r3 A1 [8 t; q
查状态:systemctl status firewalld
/ L3 k2 c% n/ g: E) f; S: O  a1 Y# T! k  F/ a6 }
停止:  systemctl disable firewalld& [. D  p! d! c1 B
  ]4 L3 A' L4 K, l. `( A
禁用:  systemctl stop firewalld
% z: O  ?1 L. X5 _$ G5 Q  S+ T. S) H! E; a9 \9 [8 ]# f( k. A- G
在开机时启用一个服务:systemctl enable firewalld.service0 |& t8 L, ?4 G: I+ b9 [" B" J1 n

5 A; ~. ?: D6 I5 O1 M! y- h$ M9 k在开机时禁用一个服务:systemctl disable firewalld.service
) T$ A. }1 S% h0 S2 `8 @* m# J& ?/ l' D1 K3 [' o
查看服务是否开机启动:systemctl is-enabled firewalld.service
# A% G5 |$ W/ L/ j5 Y% {! ]3 Y- o. V8 `9 I) s& c! M
查看已启动的服务列表:systemctl list-unit-files|grep enabled
0 Y7 \0 j- E4 x4 Z' e3 [+ B$ m. l! `$ p% m( i1 j5 `* v
查看启动失败的服务列表:systemctl --failed
2 Y% h8 i, I% d, }7 B5 k2 |; c
1 N9 q8 V3 V4 a$ B7 X) n) o" C+ `, E
" }4 ~5 G* R6 }$ C" L# i
2.配置firewalld-cmd+ C8 T$ s8 Q) G
; i" W# n1 J% R, v% n& K2 r6 ?3 [0 S  `
查看版本: firewall-cmd --version! Y- v$ y! {1 ?( R) J( s

7 N! B5 `0 o6 {. u, c' S查看帮助: firewall-cmd --help
, q1 f3 W. X' g7 S! Q
) A( R, B$ u" a' \显示状态: firewall-cmd --state
! B  s; t. K$ l, p: m* `! X/ @2 J% h1 X+ C0 U
查看所有打开的端口: firewall-cmd --zone=public --list-ports
& j, o7 M; l- p' j8 D8 O, O7 p% }- p% O- t
更新防火墙规则: firewall-cmd --reload
" m3 _$ b9 V6 l' i* O" Z' w/ \  x  G( ^0 ?9 \; t- c+ o# j/ q" a2 o
查看区域信息:  firewall-cmd --get-active-zones) U& ~& Q# |. _/ ]
: T9 {6 ]1 g7 M& Z7 s! Y
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0" b$ ?2 a8 ~$ L5 r: c
4 d% u% M& i3 l) f; ]& C
拒绝所有包:firewall-cmd --panic-on
" a- E/ V" Q3 W% v/ `( S7 }5 j8 `  j" a
取消拒绝状态: firewall-cmd --panic-off
9 h6 a$ m) |( G3 |$ w& A+ K8 O# J( H( v
查看是否拒绝: firewall-cmd --query-panic
& a) k2 {8 S% D  O  J  h5 j; e3 C& U2 b; M; a' r" Q. y, W

$ w. A# X: x0 t0 p0 C- H  N0 ?& n- D1 V
3.添加/删除  一条规则9 X) ?# w; h  y8 m! [% X0 U
& ~. {: H5 s  T: M* G+ T5 b  z

/ Z# ^8 j+ ]% n. ^  @/ I  H' T
0 X. q- w/ `6 I- \8 q+ [6 U添加
; {; z7 G( ^3 T  H) i! k; l
) c0 R+ P1 q+ i' P* `firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)- P  k9 s; @5 M, X
. S9 y2 e% |4 p: Y* A4 Y
firewall-cmd --zone=public --add-service=http --permanent
9 f" h- ?: E$ D; s; R* y6 H: z
( f. q& T2 l4 J+ ?3 @firewall-cmd --reload    # 重新载入,更新防火墙规则
( g/ }  D" _8 u* c7 u( W
5 o% Y) g: ^) n# W  ~firewall-cmd --zone= public --query-port=80/tcp  #查看: C# w- r0 C* ?& G2 F" i% y- m  v$ R
) B1 N* y$ [) d# f) w3 u0 `

3 D! _  y0 I- a( |' j  X2 J, i. v1 A2 A# h  J
删除6 ~  a: Y3 N+ u% Y

" s* ]' v$ ^" X. H. l& I5 M2 ufirewall-cmd --zone= public --remove-port=80/tcp --permanent  # 删除: i2 `( j' b, o1 ], |6 R8 e

0 g  l2 f4 e+ E5 e4 `  V' t1 j% g2 `1 i0 j' ?
- O4 `1 v" E/ X$ ]
firewall-cmd --list-services
) `( |. Z" N% O
$ r- _5 M1 \' _8 G% p/ o& L/ ^firewall-cmd --get-services# ], S: Y" f, y, S, `
$ G/ Y3 P. ~; i5 J, @; D0 {& _
firewall-cmd --add-service=<service>; ]4 [0 }; p2 ?8 q" |* M5 O
" ?2 K+ p3 {% {! Z& ]$ ]. l
firewall-cmd --delete-service=<service>
8 D9 |. D& a% ]4 ]+ S& p  _
+ }" h6 O) z2 y在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载
4 s& R! Q4 R  B  W
$ {4 C7 E+ i3 e& K使用命令实际也是在修改文件,需要重新加载(firewall-cmd --reload)才能生效。
1 N8 ^# M$ t3 M. P
1 v& K6 Y* }. g2 n/ C( S8 K& _
7 C& P# U* [5 A* Q& {0 |& R9 Z! a
$ w- O1 U: q/ I3 `5 x. yfirewall-cmd --zone=public --query-port=80/tcp
! Z1 F5 O. h8 E9 S! Q. E
4 v6 }1 P3 v$ _; M* c+ ~firewall-cmd --zone=public --query-port=8080/tcp
1 g0 T9 ?- r& V: l2 n, q6 p
3 H' P# z7 u4 A1 Efirewall-cmd --zone=public --query-port=3306/tcp& b9 i# k4 ~5 m

( s, ~7 @5 h' D" \firewall-cmd --zone=public --add-port=8080/tcp --permanent1 j! c  ^$ Y' q' O4 z7 {
. t" w1 F7 M6 m1 d) }% L
firewall-cmd --zone=public --add-port=3306/tcp --permanent
; h* F/ o2 [) R1 i$ [% Q. V6 J$ W; K4 L
firewall-cmd --zone=public --query-port=3306/tcp
" m$ V! V1 x. i
) p8 W" p1 s6 O: O" m9 gfirewall-cmd --zone=public --query-port=8080/tcp
$ [: n2 W5 g$ n2 _6 C9 e' X6 n) N/ C2 C$ _2 \+ O3 d! h
firewall-cmd --reload  # 重新加载后才能生效8 J0 t8 |2 _$ ~+ r" ]

  R# Z. V9 B. Bfirewall-cmd --zone=public --query-port=3306/tcp
3 C) D) A0 b# O: ?7 p. Z# Y
8 j" `6 `& o( A3 B" M( c5 `firewall-cmd --zone=public --query-port=8080/tcp2 b1 O% \2 }" h0 ^$ u

9 N) t" A9 y' h3 Y3 w, x8 x+ a. M/ C! \) X$ F' V3 q

4 D/ e* Y( _3 ]; o& i7 J" A# U4.参数解释
- z1 m' F1 H/ \9 Q- E  A
% B8 N, A* w% m' K. Z6 G–add-service #添加的服务
& U7 D$ r7 D% R) M& c6 m" k8 R, ]% t. v' P% w2 H
–zone #作用域' D5 p0 y5 q+ n" }7 r

. f3 {) B2 V  }5 R1 @/ c: |–add-port=80/tcp #添加端口,格式为:端口/通讯协议" a4 y- w, D; R0 D

' ]" f( u9 U. _+ ~( X–permanent #永久生效,没有此参数重启后失效
( i0 }, Z! `8 ~2 o  L
9 h( i- Z7 l" |( U; L6 F+ N8 R. z
# J8 j! W; U9 M  ~5 X
& d5 m' ]/ O! r7 f' e& ~) S- |5.使用举例
2 ]- u6 _; M- p6 k7 L5 P" M0 W/ R$ F3 ~/ Z% E# @& H

& J& ?+ z9 Z- I2 i3 M9 z; }
/ [+ m: x( }( ~7 Ifirewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'    //设置某个ip访问某个服务8 N7 j( A; n( h5 q3 T+ B% U
0 ?0 o% g* d9 I, d7 Z9 M+ B/ T2 }( z0 |
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //删除配置
7 F8 e5 o- e9 ?2 p4 b9 [* }7 q
! }' j) l+ a5 H& P% `! h1 Nfirewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //设置某个ip访问某个端口" f# t7 t) _5 a) A

/ C+ g% [% i$ l$ D+ W: H) A9 f& Vfirewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //删除配置: U" ?: Z4 L7 l7 [
, m% J; r+ `% v% u) r* G4 G
+ l2 F4 m+ U: h# `/ U. |

6 ]4 u! q3 x3 }firewall-cmd --query-masquerade  # 检查是否允许伪装IP. A  W% }( w: M# L6 r
& K' N2 d" d' S( B$ K9 _
firewall-cmd --add-masquerade    # 允许防火墙伪装IP$ F. s$ P: a% E* Y, q

  g# x5 [+ t7 Z  b+ f- a( W6 Afirewall-cmd --remove-masquerade # 禁止防火墙伪装IP
0 y  v$ g2 F- I* x; H) {* x3 h: d5 }, G
% n- j+ F% f5 W9 N: D) |4 {
5 [& A1 y' q6 W6 x9 ]. d4 _' U0 ?6 J( ^) i, C2 Y) C& m
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080. U! q! q/ }2 G0 g

0 W$ O/ {9 w$ I, ~& Vfirewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1% V) X0 {7 T6 J  E# v
9 G& \, s  {; {" m8 m
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口
. }+ }1 V0 V  f; {5 K7 `; l. D3 i
% B' Q& C& p: w: Y5 n$ L

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 11:40:00 | 显示全部楼层
开放指定服务(系统内置的): l2 [) z$ ?! }3 Q% N+ N5 x; p
firewall-cmd --permanent --add-service=http
/ L/ y2 o2 D5 b; X5 f10 t! U1 s# ]) Z
删除服务( O1 K! T; _6 U1 o3 B
firewall-cmd --permanent --remove-service=http1 A7 S. A! P4 g0 x$ l
1. t5 H* F8 D; `) f" x: K
添加白名单地址(单IP)
" _, \4 f+ T2 L: p+ ^; ?firewall-cmd --permanent --add-source=192.168.1.100% o+ n7 K2 G: \8 z" M
1
) v" J; Z, }; M8 _/ `: F注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究
4 V. _; ^6 N$ @, C: \0 a( {7 X* C, k" q' l. X
添加白名单地址(指定网络段CIDR格式): O, _/ h; d6 Y3 b! i
firewall-cmd --permanent --add-source=192.168.1.0/24+ O5 v, L+ k' q( U* T! F. N. q
13 p; v; q- K! J/ p6 v
删除白名单地址: K5 S7 O3 t8 w) g# s: l
firewall-cmd --permanent --remove-source=192.168.1.100
$ z6 j: _) J5 s/ ~9 ~$ f& T' _, V11 ^) u3 }9 J% y; |8 o/ R8 i8 ?$ @
屏蔽指定IP地址( L( y% Q, T1 d3 ~4 l
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"+ b9 p: V# M% F4 w
1
5 }  o' k7 x0 {! r- z屏蔽IP地址段
( ]) q& _) A4 G# ^) Wfirewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"* q7 {) y  |9 `& ^8 w# ~
1
7 h$ s8 t# e; h. ]4 }  [& y/ u- S手动编辑xml配置文件0 {( s7 t, i$ @9 P+ N0 |# A) v
除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效): t4 h4 Q# E2 G9 Q, X# \
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 03:21 , Processed in 0.024424 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表