易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 1304|回复: 4
收起左侧

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

[复制链接]
发表于 2022-1-17 10:08:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
现在对安全的要求更严格了,对内网环境的特定服务器,现在只允许指定IP或IP段进行访问,其他一律屏蔽,配置步骤如下:
7 W9 l3 V7 j6 t1 h- [' y2 {检查防火墙是否启动:" \% r' R- _: C+ g
systemctl status firewalld.service
) y! J( x$ ?, H* g* ^. D启动防火墙:; L4 }+ S" N$ m6 M
systemctl start  firewalld.service
% W+ |& p5 S# g7 D% f
! p  r% K3 }+ @2 W/ t
  u* Z- E/ d! l9 T2 N9 W. y
开机启动防火墙:
% y7 d1 |. \6 `/ g  zsystemctl enable firewalld.service! a" a$ v) k9 x% J: A
* \( q1 F8 L3 ^

& l4 w* J; ]( A6 E; l: h/ T修改防火墙acl规则:
3 F) I0 a. y0 L  |通过编辑文件:
4 c% ]/ B; H# E4 q9 e" C8 {vim /etc/firewalld/zones/public.xml
+ ]0 ?6 l4 @& m2 ^/ L  w# ~2 ]/ ~8 [" J3 ?$ c
<?xml version="1.0" encoding="utf-8"?>
+ u; S" ~8 y# d- k2 d<zone>
6 x6 `" H7 c( p5 ~6 K( f  <short>Public</short>
2 Z& K# Y2 z: V( W( g  <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>4 q$ e" z4 a$ v$ J4 X( H% ?
  <service name="ssh"/>- H- t. f* [$ v
  <service name="dhcpv6-client"/>
' X% I& w0 G: p  T% p/ |2 O</zone>
+ h: N  B, {( J2 L# j( T" p~                  1 Z, a( {( z( \- [# u- K( @: `
3 M: W/ E3 q6 A- _
默认的防火墙规则
3 {5 T. V# \+ \/ D+ V( x" d1 a; D$ P' {9 r
第二种通过命令:$ [" w- ^! H  P1 \( R. }

" @# j5 e; j: C9 M  r- X$ |手动开放指定端口' I5 W7 j$ x# Q
3 d2 a6 ]6 w' J- b- O- l

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

# T6 N6 N6 w8 I5 U8 g8 s( s
  ^5 x) J, D. F; D/ v" \+ ]
改完配置文件后重载一下防火墙服务
" R/ d9 g3 z6 \0 G' x. _) D3 n( Pfirewall-cmd --reload
( B0 x- c  y9 T; b/ t0 x& [( H! |9 B- n( g6 }% c$ `
  I  q3 a8 S9 _; G! R9 z# ]; u
基本应用

firewall-cmd --state/ N! r" Q! f! x" T9 X
获取firewalld状态6 v) \2 E* P9 `
.
  A* x* }/ G& f- zfirewall-cmd --reload
4 m8 x0 ~8 s5 O4 O, z8 k) F在不改变状态的条件下重载防火墙
$ J) j: I: g/ V+ F5 k& Q3 g6 I.& _# H, P9 ~- p& L, O/ A/ H
firewall-cmd --complete-reload
# R9 Q% b: A1 F; T0 U# B- A完全重启,状态信息将会丢失+ ]7 F- h- }2 V# s4 d* v
.
# i$ ^% [1 ]/ v2 y6 {1 ?; Z+ E$ nfirewall-cmd --get-zones! O; O  @$ b0 q: a+ ]5 t; U
获取支持的区域% J0 w0 O: I* V8 X1 S& ?# s
.3 n$ q* T. \5 V0 P/ P+ A. y& T
firewall-cmd --get-services
: c5 U; S6 k3 i获取所有支持的服务,支持的服务存放在/usr/lib/firewalld/services目录下。
( Y- y% g, K# u8 c服务是firewalld所使用的有关端口和选项的规则集合。
, y0 x3 c2 i* w5 }+ i被启动的服务会在firewalld服务开启或运行是自动加载。! c$ c1 D4 s+ y9 b
我们还可以创建自己的服务,即添加端口和服务的对应关系,将在下面讲解。4 Q: W' Z* ~1 B, y8 |) O
.
$ r* q$ F% \% |firewall-cmd --get-icmptypes- t: p6 Y  t5 a8 t, j2 o* h
获取所有支持的ICMP类型
+ T6 m% q" b9 s8 q: ].
4 z% ^% e* i5 cfirewall-cmd --list-all-zones( X9 ]: t& Q3 v( j6 X
列出全部启用的区域的特性(即查询当前防火墙策略),特性是定义的防火墙策略。- h6 c2 z2 W3 W1 \5 i9 `
策略如:服务、端口和协议的组合、端口/数据报转发、伪装、ICMP拦截或自定义规则等。9 F$ D$ L  V9 V' H7 z
该命令会列出所有区域的所有特性,包括详细规则(rich-rules)。
) G2 O5 r7 k  L8 K5 O& D9 q.
: {8 M6 N/ _" n$ e- C( x* i  {/ _+ cfirewall-cmd [--zone=区域] --list-all# z# C# R- C8 P- D
输出指定区域启用的全部特性,如果区域被省略,将显示默认区域的信息。* s3 X  S1 C, J8 @
.( D$ @, P5 H: g9 M. g- v1 u
firewall-cmd --get-default-zone
+ f0 E& U  T; `, W2 u# y查默认区域,默认的默认区域为public  e+ i9 N/ _8 z9 t3 }
.
9 E0 n7 @4 C: g) h- Z) d( l- t. Efirewall-cmd --set-default-zone=区域
5 |0 _) e! x% \/ v+ Z, P& A设置默认区域,也可通过/etc/firewalld/firewalld.conf中的DefaultZone配置项定义默认区域。4 j. r% G+ H9 r) r# L  D
流入默认区域中配置的接口的新访问请求将被置入新的默认区域。当前活动的连接将不受影响。
5 X! e6 _& f& y' M* E8 Z.
  _2 n7 R+ t- h' `% O# Vfirewall-cmd --get-active-zones
7 D3 _" [- C8 B: A- C获取活动的区域,同时会输出活动区域所包含的接口。0 \8 A. {" p+ ]) M
.
9 o3 {5 c9 @8 j; ]( b  Sfirewall-cmd --get-zone-of-interface=网卡名+ ?1 ]* J1 W) l6 P
查指定接口属于哪个区域
% j) z4 S) U$ q( [1 d.$ E% l( I0 v3 O9 N
firewall-cmd [--zone=区域] --add-interface=接口名9 F& _% Q# z  C. r% Q, w
将指定接口增加到指定区域,如果区域被省略了,将会被添加到默认区域。$ `, p$ d% d! Q9 M: p/ Y( G9 m6 w
一个接口同时只能属于一个区域,接口会在防火墙重新加载后重新应用。* Z7 r- _3 l8 U/ E4 H$ A- C7 B1 m
.
: {- T/ _3 `0 O( O) cfirewall-cmd [--zone=区域] --change-interface=接口名0 F! n# Q6 a! s( }. q6 |
修改接口所属区域,这个选项与--add-interface选项相似。
3 h+ @6 x; n3 `1 z$ V  b0 Q; |但不同的是,当接口已经存在于另一个区域的时候,该接口将被重置到新的区域。
" ^6 p# D+ C; ~+ S& D+ X.
6 m* [) I7 b8 E$ `- a  |firewall-cmd [--zone=区域] --remove-interface=接口名2 a  X, P$ |* h# {  U$ r
从指定区域中删除指定接口,删除后,这个接口的所有数据包将使用默认区域的规则。
! x9 F: o0 r. ?+ B! U3 Q.6 b% |3 |0 g# H6 z* U
firewall-cmd [--zone=区域] --query-interface=接口名8 q% Z3 T8 L% n/ h( r
查指定区域中是否包含指定接口,如果区域被省略了,将被指定为默认区域。
3 v% ]+ z# O/ @( d; A- ~0 s5 x, c+ V.8 Q; Y$ X  N3 W) V
firewall-cmd [--zone=区域] --list-services8 e# a* @( J3 K  S7 L
列举区域中启用的服务,如果区域被省略了,将使用默认区域。
4 F7 e3 t- ?: @- A! ].
& w. E" U- U6 A" @& I$ I8 Vfirewall-cmd --query-masquerade 检查是否允许NAT转发
0 p# Q( g1 l# S* Vfirewall-cmd --zone=public --add-masquerade --permanent 永久开启路由转发
5 X( h6 ^4 i9 L2 s1 O/ `$ P1 g0 x1 |firewall-cmd --remove-masquerade 禁止防火墙NAT转发$ u9 A& p. D+ h2 q7 S
.- ?( p4 T4 o. k! r1 Z
firewall-cmd --panic-on 启用应急模式,将阻断所有网络连接,以防出现紧急状况。
: V5 R  U# ^8 t/ e8 }5 ^firewall-cmd --panic-off 禁用应急模式/ B' L: B0 M6 [( ~+ ^7 J8 J+ `
firewall-cmd --query-panic 查应急模式状态
9 A+ I2 f, y' D3 t# T.
+ y* z7 C& t7 j) [' a) d- s其它相关的配置可在手册页man firewall-cmd中查看。

  P/ S0 ~1 ~3 _* g$ A

$ y6 a+ ]3 ?; Q
 楼主| 发表于 2022-1-17 10:21:23 | 显示全部楼层
firewalld默认为我们提供了9个区域,默认就有一些区域是有效的。这些区域按照不信任到信任的顺序排序,如下。4 Z4 s# D1 A+ W; O4 ?! k
.
$ I  d- U3 {3 y$ y. g起---------------------------------
0 l2 t* Q- O9 x& p1 Y丢弃区域(Drop Zone)
' Z3 C% S. P1 L% K9 ~如果使用丢弃区域,任何进入的数据包都将被丢弃。
- _+ D" D3 M+ q: k% S这个类似于6.x版本中使用的iptables -j drop。
7 k4 v' z  Q7 E* y使用丢弃规则意味着将不存在响应。9 G, Y( r9 W! Q5 G! T1 Z4 k
.' [6 a  Z% N. K. {7 _# d- @
阻塞区域(Block Zone)
# q1 h" l8 s0 z2 T5 {5 C' X8 b- K阻塞区域会拒绝进入的网络连接,并返回icmp-host-prohibited。4 j: c/ t( T7 D% ]9 @
只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。
5 x8 J) D/ g4 |6 p; m.
. r. K" B0 y/ c/ a* k8 j公共区域(Public Zone)
3 I  V, b  C; P0 h  Q* z只接受被选中的连接,默认只允许ssh和dhcpv6-client。
9 ~! }* Q" r' C- j/ `+ M( c这个zone是缺省zone,即被默认使用的Zone。" G) e' q* c7 n! I$ i7 W" F+ ~
.
" ]/ P+ u" r1 n2 Z: e5 X7 y$ w. M外部区域(External Zone)
0 F* p! {  p" i4 U$ N只有指定的连接会被接受,即ssh,而其它的连接将被丢弃或不被接受。
$ v- N' b, f% D4 E! C! h7 M这个区域类似于路由器的启用伪装(masquerading)选项。
/ C, m0 [( \+ Q1 m& s, i& J.
/ ], L" Y3 p8 O4 b; v隔离区域(DMZ Zone)
$ l8 @+ _3 m$ _3 ]5 t4 j该区域只允许被选中的连接通行。
; b. p+ C* `0 @7 V6 N4 A# J3 C如果只允许部分服务能被外部访问,可以在DMZ区域中定义。
# p6 S; w/ I) J& c.  ?% X" E% `: h* m8 Y
工作区域(Work Zone)
6 I/ N: M# U5 `5 P- L  W在这个区域,我们只能定义内部网络连接。
( P2 Q% Z/ f2 ]# g比如私有网络通信才被允许,只允许ssh, ipp-client和dhcpv6-client。+ x1 Z: [  E' z* B
.
, h- A' ]* E/ A8 I$ c家庭区域(Home Zone)
: ^# _. B( Z1 f  W这个区域专用于家庭环境。
# d* X2 X, \/ ^它同样只允许被选中的连接,即ssh,ipp-client,mdns,samba-client和dhcpv6-client。
. z9 @8 Q7 V# q9 X8 a+ H0 }.
. A6 k, B$ J. o8 v' K) h内部区域(Internal Zone)
6 R5 |" I% |: ~4 V; W/ H9 _这个区域和工作区域类似,只有被选中的连接才可通行,和家庭区域一样。
$ A3 F. A0 ^8 i.) X2 h1 N9 x# y8 ?( {3 g1 ~8 E) j
信任区域(Trusted Zone)
. r" C  B. d$ Y+ f: g8 x' Z信任区域允许所有网络连接通行。" r" @8 C- X/ Y, k
切记:trusted区域是最被信任的区域,使用该区域时,在不做任何配置的情况下允许所有连接通行。# o3 v$ a8 D) h& p
--------------------------------------始
1 B5 T- A" f. z" V) e/ S" L9 U2 f.3 @9 f) P8 p9 j  g" D8 y5 O
以上是系统定义的所有的zone,但这些zone并不是都在使用,只有活跃的zone才有实际操作意义。; u6 U% K2 u- ]. r$ v& w! G* @
  \1 G: ?! }" N6 [$ b; o' Z
Firewalld 原则
; h6 A( c( a0 q7 e2 l! d! N.
8 i. M0 V% H, \& `当一个客户端访问服务器时,服务器将根据以下原则决定使用哪个zone的策略去匹配。
* t  Y' _& Z  y. D- m$ a( ^5 x! b) z.
4 @& s/ `% |; _  m. u" O1+ U" H5 z+ {- t- g& c, _4 C
如果这个客户端数据包的源IP地址匹配zone的sources(来源),那么该zone的规则就适用这个客户端。; J) s: y* e; C
注意:一个源只能属于一个zone,不能同时属于多个zone。" Q/ T1 G. o: X3 h3 F  ^! O8 V
.1 Q% a2 q- Y8 I- N
24 z/ \/ ~- ]  u/ v3 l0 ^! q7 u
如果这个客户端数据包进入服务器的某一个接口(如eth0)区配zone的interfaces, 则么该zone的规则就适用这个客户端。, ~. n4 C$ T7 F( q8 G
一个接口只能属于一个zone,不能同时属于多个zone。9 N2 X$ Z5 w5 _( a8 g( T% S# {
.5 E# }4 q! ?5 A; E3 ^
3% u$ y3 v4 \" K! v# ?( e" l
如果上述两个原则都不满足,那么缺省的zone将被应用,即使用public区域。
 楼主| 发表于 2022-1-17 10:24:43 | 显示全部楼层
实现过程
, ~; t+ B, c0 y0 i7 a
3 w$ I8 R  i, p/ n! O" ]下面的命令将配置192.168.1.0/24整个网段的IP允许访问服务器的22端口. S& F" i; D" A
9 l" ]7 k* B$ ~8 i  T4 }
; F% J" F5 P! U2 f& n4 H4 \, {
// 先移除默认开启的没有访问限制的ssh服务
1 H2 j/ g. Z% k. J+ N; P# firewall-cmd --permanent --remove-service=ssh
6 n2 [3 a1 }0 u// 添加复杂规则,只允许指定IP段访问22端口
7 g6 F9 u1 o6 N# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
- j5 d$ c* p" t% p* G) [- P2 f. y+ D// 使上面配置生效
% l: ?& N  A6 [( T4 E# firewall-cmd --reload( Y% _9 b, |; S& V1 d
// 查看当前配置信息  x' I) x; m3 {6 R) }% L5 U/ a
# firewall-cmd --list-all
7 |" x( }+ S/ P  y: ~ + @: P+ E# }6 C
备注:2 N6 {0 A8 p- [9 v1 \6 q, w; [
source address也可以设置为单个IP地址,例如192.168.1.1
: z2 @. j6 R% D) ?! h( b! @# x port可以为单个端口或端口范围,例如1-10000# L2 O3 t6 v: t( g8 A5 k

3 V- |, q8 {- Y) B% h: S 7 s% P; g( [0 X, ~; ]

7 a7 ^! ^- ~0 u2 |. j9 |其他常用命令% |1 u, E# d( U8 e, c$ b$ @7 B# m( ]
; u* Z5 G, j  r" q& R' I4 o* O
删除之前的复杂规则,这里的内容需要与之前添加时的rule内容完全一致,可以复制粘贴过来
6 P* T: h& N& w, l# j, F/ l) r
2 Y, K( M" P4 h$ bfirewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'" d7 b% [; A: Z. S0 l! |9 I
% t4 q3 f9 W' }+ \& N, q( n
手动开放指定端口
9 n7 [8 X+ N3 @5 k' t+ r
( P5 H8 S" E6 D1 I; D# Q8 u9 hfirewall-cmd --permanent --add-port=3306/tcp9 y& Y/ @( t# s% p1 l

$ F- x" |6 I1 K) F( ~" k' X删除开放的端口
3 O; r7 o$ q4 A6 f0 v1 _
* m2 G8 v, L2 hfirewall-cmd --permanent --remove-port=3306/tcp2 J/ O! O( t, }& `
/ {) I( T* m! b: c* }5 L: P
开放指定服务(系统内置的)& I, A) U* p. G5 \) f

7 x) A" W! [0 n6 ^0 ofirewall-cmd --permanent --add-service=http
* X6 T: q& B" j& u
* K* |# j: X0 n4 l/ B1 d/ ^删除服务
2 z4 B" m& U& } % {( A' r% Q& Y; C8 f7 M9 S$ u
firewall-cmd --permanent --remove-service=http
1 d% l$ s3 [. h6 R
5 U8 A6 \* n8 R& }, O添加白名单地址(单IP)
$ ^9 `- y2 e0 M, x - Z; S5 V3 ~( P  j/ l
firewall-cmd --permanent --add-source=192.168.1.100/ ]# \) R. `: d: K4 N* ^

; R8 |5 Q" B. \6 C注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究
5 V9 B. H: C. A! F3 W9 Q3 \/ E: X

# K# Q$ ^" P0 x' k' ~" j添加白名单地址(指定网络段CIDR格式)
" z. c' {, J) ~+ ?0 b, ~( } - _2 U1 O' w, K: ]: G0 @
firewall-cmd --permanent --add-source=192.168.1.0/24
. W! P: p$ j/ S  u) ^/ L
0 d2 d% j0 [) M* \: T删除白名单地址
; J/ g3 X8 w5 @- w- U 4 k( A$ d9 W+ A( r$ i/ C
firewall-cmd --permanent --remove-source=192.168.1.100( b4 O* J$ y% X' G
4 l) x# ~* R; T1 a- {3 N  e
屏蔽指定IP地址1 o- z% G( [0 w* k, |: Z

4 Z! u, R* r3 m  \& u( |firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
& p2 C, j$ v0 g8 w+ O$ ?
1 a. V) B& I) Q1 Q& E) X( `屏蔽IP地址段* J# `6 U( o( a9 M8 q

: z9 Y* w- E- G% a. Ffirewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject": h% L0 `; K1 B) I1 D8 u( h
% g' x5 @+ K/ i( ?2 A$ K. T. @' A
手动编辑xml配置文件
" ^4 D: X. W5 P1 J- f2 H   T9 `6 h3 n# ~4 K$ y' o
除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效)
 楼主| 发表于 2022-1-17 10:26:05 | 显示全部楼层
1.firewalld的基本使用
; \, ]; t, T/ T- r8 r2 {5 }# H2 g  n
启动:  systemctl start firewalld6 T1 G' V7 U9 N4 `
# n7 z% Y3 M& c9 i
查状态:systemctl status firewalld
  B6 L! L7 q9 G; L$ T. U' O3 o. `
停止:  systemctl disable firewalld
+ w% m3 j% [6 p) t" S7 N* ~0 N8 v1 c( [/ y6 \
禁用:  systemctl stop firewalld
5 l* X) ?: t# g( G* n5 a# L- `/ v
8 w4 s7 `- m0 S7 `在开机时启用一个服务:systemctl enable firewalld.service
. V- P4 v. r% V( Q, o+ g- E( Z6 f9 C; R) p
在开机时禁用一个服务:systemctl disable firewalld.service
- O0 o0 s! m/ t: L. K1 ~5 y
9 w# j- X0 [4 k7 r查看服务是否开机启动:systemctl is-enabled firewalld.service/ W/ [1 W, g9 j7 x  t5 @3 e+ \6 d
/ Z6 Y; J+ x% {/ G! u
查看已启动的服务列表:systemctl list-unit-files|grep enabled
5 f- @+ H, d) G8 t  D& F4 p
8 }+ b: |4 ]5 Y查看启动失败的服务列表:systemctl --failed
, }8 l  A/ L6 c. N/ @, T2 ]0 H6 f3 y, u: m

3 L! K0 l, f2 w/ U9 J0 q1 g6 I* k. ]$ e
2.配置firewalld-cmd" ]/ g- Y0 U+ ~: y/ ~% Z1 z  q
3 v! M, |% w9 n4 S
查看版本: firewall-cmd --version
% O) N) o" [& G; U: y+ ^* V  R8 m& M, G5 X4 @
查看帮助: firewall-cmd --help
; o" V% c8 A8 r5 X$ d
$ k( k- K' a, H显示状态: firewall-cmd --state8 C0 [! A' v1 O
' j4 P% ^! S2 v1 D0 H. y: N. n! D6 g
查看所有打开的端口: firewall-cmd --zone=public --list-ports1 I2 N1 `3 M! y' c6 D5 r

, _0 W. |$ [( D! C: U5 s更新防火墙规则: firewall-cmd --reload; O" [! ^( k- T( k) q

- V1 n8 e7 a0 V; ]6 C查看区域信息:  firewall-cmd --get-active-zones
; S8 ^; F; m: N5 e/ ]3 ]9 r# V% S- U' O. q' n, m
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth07 f! Q" }* u/ Y0 w: ?0 [% r

! v: R6 P5 a  f拒绝所有包:firewall-cmd --panic-on6 Q5 R* h: |0 C( g6 g! R/ F  E' L9 B

7 @! V# @, ~2 a  Y% E& \1 o- @取消拒绝状态: firewall-cmd --panic-off9 l% t* {: V' z6 [

  H0 K& l1 J7 k+ P! E6 r. c/ J2 O查看是否拒绝: firewall-cmd --query-panic* u5 ~) g/ U; t* q7 K

# f- j/ e) K! {. a2 P
7 U2 s: |- R- B6 _8 l0 Q/ H3 K3 q. i2 M" D0 {) y- g$ j
3.添加/删除  一条规则/ T2 j* Y5 l* |0 j; y6 o3 E
( u* w! W: [- E8 V

/ b0 A% `. O- Q
9 u3 h: w4 T8 B$ Y# j, Y: Q7 C2 w" S添加, z- U  H" {3 f! A# D7 S0 w- O

; z( f. L! p5 c3 J4 ^) kfirewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)$ X8 V. h+ K4 Y" n

6 k5 T9 d4 m: s1 @; p, A- y2 wfirewall-cmd --zone=public --add-service=http --permanent  q7 A! ^9 O8 T1 S

& M% B1 J2 F; M( ]* o, r* zfirewall-cmd --reload    # 重新载入,更新防火墙规则
& A+ v( B& Y" c/ G
9 i0 r# K/ J" V) F! k4 U% Lfirewall-cmd --zone= public --query-port=80/tcp  #查看9 O. b0 H7 G9 \/ X  b# d  u, g9 a5 F

: \2 V/ n. o5 l2 B: W% ^/ H* u5 A8 \- Y7 e

8 X6 u# q: ?* T7 n9 |删除
5 z# _& ?5 ^0 T7 k* o- C2 }6 k1 h1 I. z5 B: f* t
firewall-cmd --zone= public --remove-port=80/tcp --permanent  # 删除& L' T/ H+ |1 v

9 K& G! X  t! P& ]% M9 j7 c7 j0 ]9 I' v" W4 @3 I( n+ x/ J! a5 l& f1 F
; J! B: T' U, J
firewall-cmd --list-services5 j1 I8 E$ s2 ~- j" J  i
" D! N: V- A) B, [6 }
firewall-cmd --get-services- J* |6 j3 }' A% {. l# W$ E

3 S. w# l5 S1 u  ?1 f7 x' u- U; _firewall-cmd --add-service=<service>( I$ c+ q, a% e( \- ?
& b+ ^: I0 }/ u7 Q. W
firewall-cmd --delete-service=<service>' c. e" b1 }; g1 h
8 Q* R: E& |  ?/ G
在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载: \5 E0 |7 Z2 o; Y) l

4 d& t; F! ^0 y使用命令实际也是在修改文件,需要重新加载(firewall-cmd --reload)才能生效。! N5 G# ]2 A0 K# ^& i
& c+ o2 w- |* ~/ S5 W
, ]% S; q) |. q4 c, @
% j. p5 U5 |) b. F
firewall-cmd --zone=public --query-port=80/tcp
0 T  J* m5 Q% r$ A9 a# z
+ Y7 X* {" }9 [( K; X# t5 C1 ofirewall-cmd --zone=public --query-port=8080/tcp
% @# B4 A) I' C+ B
) x$ v7 M, e1 @% Nfirewall-cmd --zone=public --query-port=3306/tcp
  k" \9 x. h* C$ s
$ G' k9 R$ }0 z0 G) Yfirewall-cmd --zone=public --add-port=8080/tcp --permanent
5 u$ }6 t6 z: T1 o9 F. d) W/ S$ y" {5 b  n4 [& V
firewall-cmd --zone=public --add-port=3306/tcp --permanent' `% t# t- v) b0 e5 r& l8 e* V
3 B5 H# d" T: }6 ~# L9 p' B
firewall-cmd --zone=public --query-port=3306/tcp
# @- t0 r6 {/ j, F0 I$ @9 ~: U% g; ?4 v' ?2 l  {  F8 j" i
firewall-cmd --zone=public --query-port=8080/tcp, [3 X$ K. s8 x* [- b4 N5 ^

6 t" @/ [3 c! m. y* f& C# ufirewall-cmd --reload  # 重新加载后才能生效
" h! k! Y9 D5 l+ w
/ r2 {% f3 u9 |$ Q* L; u( ]7 vfirewall-cmd --zone=public --query-port=3306/tcp4 z$ a, V  o" |5 h) ]

8 j/ c) z& H* l: ifirewall-cmd --zone=public --query-port=8080/tcp, u5 o! V. e  W% w3 X

, h/ H8 `9 n2 C- _* ~) N- C' ~! z) \& M8 [4 V$ C5 I8 K

: K9 u% u( o7 D" P% \& q! Z4.参数解释
1 _5 d8 e* |5 w  ~" o2 a4 o- x0 s* a; @
–add-service #添加的服务  Y1 V9 r- T+ @( Z/ a) H  F% w
) G) v( |" }0 A4 D
–zone #作用域
( j* d1 y6 a) a3 f2 _: @
( s7 P/ C3 o2 j) u' d2 A2 ^–add-port=80/tcp #添加端口,格式为:端口/通讯协议
5 _7 G4 ]5 z: {
9 ~( J$ y: w" j2 p# X7 y–permanent #永久生效,没有此参数重启后失效; E0 Y" ~  _4 u& L

" Q0 @0 c9 X5 j2 I( [
0 g; `2 S; Q' M# }9 `3 v, L$ l! W' Y+ @" X3 q8 R
5.使用举例+ m7 w: }; k6 w; X$ F' ?5 J
9 U' @$ H$ P) ?9 x8 D+ {  I2 j

3 |/ l) l% b0 j! r0 A: d7 Y4 Z9 o" A' n
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'    //设置某个ip访问某个服务; o, h" I0 w8 |3 \& r9 e- ^5 n
0 e6 ]7 _# l5 ?( `( \: z+ j( v
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //删除配置
7 t' n, s7 Z4 e1 V# }1 m% X7 K
! O7 Q+ ^: J7 {- Y7 c" m8 B% qfirewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //设置某个ip访问某个端口
( k- r" O5 O* [5 R" }5 {9 e7 a1 R* c' R
firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //删除配置
+ s! j# M2 S/ A- L
0 {% z) z: D# L3 Y: A( F, r: K5 Y6 }- \  H$ }$ t
5 y8 Z( I) U& S; U" `# j7 ]: \
firewall-cmd --query-masquerade  # 检查是否允许伪装IP3 B* ~2 c  e/ t! X. m% T
( a- L) L3 @" v% t( K) k
firewall-cmd --add-masquerade    # 允许防火墙伪装IP' C6 v& g# b% b: f. x
2 F7 }+ S0 g% |
firewall-cmd --remove-masquerade # 禁止防火墙伪装IP
1 M6 k+ M0 ?; [) f; i( W5 P1 e) }; r: y/ J% l4 l! U$ h/ K

% ]- u$ c/ T4 ~/ `; M0 w5 }1 ^4 ?8 U. k- F  M
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080
3 \7 X4 K' v  k: {; a+ Z( k( P# d5 V( X6 j/ c8 t, b2 V
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1: t+ j' _$ n# @5 X  q

5 Y) F! A1 u7 N( @9 Yfirewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口
! ~1 X, T9 R. l5 y4 \7 k/ E5 J/ S, s  S9 |
 楼主| 发表于 2022-1-17 11:40:00 | 显示全部楼层
开放指定服务(系统内置的)
2 R6 ^1 d8 ~7 u7 l/ p8 J2 h- lfirewall-cmd --permanent --add-service=http
& {/ j: s$ D1 W: I3 a! `16 e: L8 C; d5 Y3 V/ V* n
删除服务4 d7 c! _/ b2 e* Z3 j  e
firewall-cmd --permanent --remove-service=http
8 [7 \& ]& `0 \& X7 `/ U& D  n3 y1
% j% j2 g$ H, e( K# d7 g3 N3 N添加白名单地址(单IP)
" [/ Q6 ]  I% Z, N' o0 rfirewall-cmd --permanent --add-source=192.168.1.100& b( F* \9 `# E$ j' Q2 v
1' Z1 J7 g4 \/ P
注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究5 v0 G5 J) C# E# }# z
/ ?, o; j: B4 {" }. Y. W
添加白名单地址(指定网络段CIDR格式)
( W. X2 S! V* _3 z3 H( o$ Dfirewall-cmd --permanent --add-source=192.168.1.0/24
! R% h) a. G% C" j" Y1
4 i( h' C( e5 ?9 r5 L+ `4 Y4 G$ ?删除白名单地址9 z1 m/ K& P4 `' Q
firewall-cmd --permanent --remove-source=192.168.1.100
/ ~% w2 f  t$ u! K* r0 D& V. D1
$ c) z4 d9 T- O3 |4 ]# u$ b0 S3 E屏蔽指定IP地址  `0 ]6 V$ S% U, K3 v+ N
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
% `) p7 b, m! V' G6 b4 N1
2 u7 r5 C" Q6 ]  |( |屏蔽IP地址段
/ _7 i* m4 {0 Rfirewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
7 ?) q' f- i, V0 x0 s. g3 ]1
2 h( `" o/ C+ f8 q$ B$ o2 }手动编辑xml配置文件; x3 y2 e6 I4 r& X4 o2 W" d' J* y6 ?
除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效)
( t) [& ^$ b$ Z0 F+ l+ v
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-9 00:03 , Processed in 0.056168 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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