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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-1-17 10:08:56 | 显示全部楼层 |阅读模式
现在对安全的要求更严格了,对内网环境的特定服务器,现在只允许指定IP或IP段进行访问,其他一律屏蔽,配置步骤如下:9 m5 _! Q; N* n- S; ?
检查防火墙是否启动:. p# G$ S$ t; ~2 E" [- F
systemctl status firewalld.service0 g0 X1 P6 J( B: c; Q  \
启动防火墙:+ [  d0 [! ~: m2 d3 b
systemctl start  firewalld.service
2 M; ^4 X" |' y$ @* P5 @) _0 \
6 a* i1 M/ B  e

7 X5 J8 c' q  h' u4 M开机启动防火墙:. t; u" ]: ^6 r
systemctl enable firewalld.service
. k) x2 F* S9 D1 m! C6 ?. y/ F7 M7 \* e+ I8 A6 u

( k) k# ]; T" ]; j修改防火墙acl规则:7 q" Y: S( }6 D, S' ^1 _
通过编辑文件:
* c1 X) n* K& y0 S5 U" H9 D/ {vim /etc/firewalld/zones/public.xml' ]9 b& Z" H4 i  [

) E6 C! X) S- a) y& d. \- W  h* j<?xml version="1.0" encoding="utf-8"?>
& s: \4 \1 j( r0 _' i3 {<zone>
* S: V9 c; C, p* S+ |  <short>Public</short>5 N- Z: ]9 D% L1 e+ M! }
  <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>
, ~0 W7 r, k5 g8 V  <service name="ssh"/>
+ {5 d# W9 u9 P* l# h3 I- R  <service name="dhcpv6-client"/>
$ ~. z& G) Y- x  O3 _/ c</zone>$ b! m; D  x/ l
~                  - k7 X/ S( C* T0 C* D

* H4 |1 Z: F, J8 \! P: v默认的防火墙规则  k4 }( n. ^  J+ Y% H- a$ I/ I

6 n3 |# v7 q# V7 b8 `& R& Z0 D7 }第二种通过命令:
" d9 A: v, n1 S7 ?3 X* h! |& B. [0 L+ ]* d& s) u
手动开放指定端口
9 a) Y( q9 A/ ?2 d5 O
" j/ [! s, D& y( }; U7 t5 L4 g

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

- g- K: R9 X/ O4 \0 Q

( q& p( _' G: M, h; s$ o4 _2 M1 y改完配置文件后重载一下防火墙服务
4 d$ t) K1 k2 {0 P* B4 T/ |" rfirewall-cmd --reload
+ a# y# ^5 ?0 _0 B8 u% d% P5 [' k4 X3 L

  S8 Q* f9 b8 {* N基本应用

firewall-cmd --state" j; x0 O# g& i& |1 ~% |' d
获取firewalld状态' \% i7 d1 R  ~2 x# C0 S' e6 K  L
.# V( P- ~7 y- g
firewall-cmd --reload
2 Y; {  x! Y7 C$ i3 [# d  N4 e在不改变状态的条件下重载防火墙
: T: y1 D* I- o8 A. U.5 ?7 [7 D+ c, I8 @5 M9 |- t/ g; v
firewall-cmd --complete-reload8 t. ^3 |1 J6 H: X; G
完全重启,状态信息将会丢失
# k: p' S6 @; Y: C.. U& g5 @' t! j
firewall-cmd --get-zones
2 ?2 \; Q, w! _( b) V3 {1 i获取支持的区域0 b1 A$ n& u" j( s) P: j
.
) Z* ?: [! h- Ofirewall-cmd --get-services
: ~8 a" f1 m' s. a获取所有支持的服务,支持的服务存放在/usr/lib/firewalld/services目录下。
, V0 Y# \4 B6 c- d服务是firewalld所使用的有关端口和选项的规则集合。8 \0 E- J2 b$ Q, Y6 [# B
被启动的服务会在firewalld服务开启或运行是自动加载。& @& d5 M2 \2 @0 ^% o0 g
我们还可以创建自己的服务,即添加端口和服务的对应关系,将在下面讲解。7 O2 L' j& h4 d# @  Q
.7 v7 A, Q1 N2 u& Y3 P
firewall-cmd --get-icmptypes/ B: v& R- u1 `0 W
获取所有支持的ICMP类型) Y# P* l5 o$ T  G# B
., G- P. D  g5 A7 x; H8 L
firewall-cmd --list-all-zones
: E2 z  U& {) v, |列出全部启用的区域的特性(即查询当前防火墙策略),特性是定义的防火墙策略。
, K  b# Q1 x8 d' W8 a( V策略如:服务、端口和协议的组合、端口/数据报转发、伪装、ICMP拦截或自定义规则等。6 t) M# z" S  n5 @. S
该命令会列出所有区域的所有特性,包括详细规则(rich-rules)。
0 W, W1 m  W! [1 Y) P( y.
3 ^+ I3 ~2 x( D  M( Cfirewall-cmd [--zone=区域] --list-all
+ `2 W8 }2 l" h7 a. x输出指定区域启用的全部特性,如果区域被省略,将显示默认区域的信息。( }2 j) ^. D4 y$ O; n
.  m/ C5 }) n* m- w
firewall-cmd --get-default-zone
/ |! R+ p! V# ?( M8 p9 |查默认区域,默认的默认区域为public
( T" p  M* K6 V5 _" ^9 E.! ]$ i+ y2 x2 K
firewall-cmd --set-default-zone=区域
+ B+ s5 ^" g4 w* a, L) P/ Z, r设置默认区域,也可通过/etc/firewalld/firewalld.conf中的DefaultZone配置项定义默认区域。
, R& G8 b! W- S2 M! H) V5 D流入默认区域中配置的接口的新访问请求将被置入新的默认区域。当前活动的连接将不受影响。
/ D% z5 ]+ q3 F' l: z0 H2 H.+ l$ A; b4 o) }( N) ]6 b: J- X. D( s
firewall-cmd --get-active-zones
/ E/ D& S! L- t8 v获取活动的区域,同时会输出活动区域所包含的接口。$ ]1 {3 Y, u7 R; ?% K& `
.* H9 \; q4 j9 X7 b5 Z. \
firewall-cmd --get-zone-of-interface=网卡名
7 v+ f1 g& N2 L5 L$ B查指定接口属于哪个区域& @& P: \& N! r% W
.
& H' i4 b* q' j! o, sfirewall-cmd [--zone=区域] --add-interface=接口名
' k& A0 g. z; ~# L将指定接口增加到指定区域,如果区域被省略了,将会被添加到默认区域。
( m8 l& p' l" n% [: I一个接口同时只能属于一个区域,接口会在防火墙重新加载后重新应用。
! e; O2 W/ R: _9 f. [7 M+ [.3 V% H) Y( |8 n- n" \- c6 p
firewall-cmd [--zone=区域] --change-interface=接口名
! [7 M, U9 U3 [2 G修改接口所属区域,这个选项与--add-interface选项相似。/ x/ t: H: I7 X7 `" y
但不同的是,当接口已经存在于另一个区域的时候,该接口将被重置到新的区域。4 X$ C/ [" B: j" `3 K! W
.; ^' H$ l( ~) w4 N" d+ y! w& \! M
firewall-cmd [--zone=区域] --remove-interface=接口名
: A' C$ H" D* @; L: R. u, {; J从指定区域中删除指定接口,删除后,这个接口的所有数据包将使用默认区域的规则。5 z4 a0 \* _2 G- M0 e( q& q0 x# ]9 {- A8 U
.% r6 J" `) j, {2 E% J- e" Y
firewall-cmd [--zone=区域] --query-interface=接口名4 h. U: D. j( v; x& l8 X
查指定区域中是否包含指定接口,如果区域被省略了,将被指定为默认区域。
4 b6 |) w& }1 J6 \4 c.
: M9 h5 [8 H8 J; ifirewall-cmd [--zone=区域] --list-services
7 t- J* A4 f5 E; ?4 R- ^列举区域中启用的服务,如果区域被省略了,将使用默认区域。3 F( y+ x# q! d* `
.$ J) p- \" {! G
firewall-cmd --query-masquerade 检查是否允许NAT转发! C0 E( r1 d. z+ c" N$ M
firewall-cmd --zone=public --add-masquerade --permanent 永久开启路由转发
# M) _. {: J9 n- W) Y$ mfirewall-cmd --remove-masquerade 禁止防火墙NAT转发
3 g+ M4 F$ ?2 }- \; v.3 ?: m5 E$ o3 @" Y* l$ X* X
firewall-cmd --panic-on 启用应急模式,将阻断所有网络连接,以防出现紧急状况。9 r$ H  p/ |3 w# _( t7 e+ H
firewall-cmd --panic-off 禁用应急模式, B8 H+ P- z6 S) t$ K1 ~
firewall-cmd --query-panic 查应急模式状态8 Z: X) }# A$ T) }4 p/ B
.
7 R  }1 ^1 q* ^6 Q# \' z其它相关的配置可在手册页man firewall-cmd中查看。

% r  O4 n( ?$ x2 O  t! i3 `
3 u3 O) G% c# o8 H

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 10:21:23 | 显示全部楼层
firewalld默认为我们提供了9个区域,默认就有一些区域是有效的。这些区域按照不信任到信任的顺序排序,如下。0 I( |- f- U, J) _% O) `
.
% i4 ^4 [6 u8 r5 t起---------------------------------
: x* a9 b; h! B' {* w; h丢弃区域(Drop Zone)
1 k$ G8 J: A; L* p如果使用丢弃区域,任何进入的数据包都将被丢弃。
+ z1 Q, B9 \; e, u这个类似于6.x版本中使用的iptables -j drop。# h2 O, j, {) w9 V
使用丢弃规则意味着将不存在响应。2 R8 Q2 \8 Z$ o$ h/ H& k
.
% r( b. H+ c( V, n阻塞区域(Block Zone)9 m' F8 a6 @  [' e5 N; e
阻塞区域会拒绝进入的网络连接,并返回icmp-host-prohibited。: ~* a) m2 r' l1 l# z
只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。
( P0 G+ x; z: [.; I! H) |5 U2 C$ V4 ^
公共区域(Public Zone)9 r. s7 K8 L7 J$ g7 i9 N, C( }/ D
只接受被选中的连接,默认只允许ssh和dhcpv6-client。
0 L7 ~" }' \+ T: z! s' _# j( j这个zone是缺省zone,即被默认使用的Zone。
  V/ r5 \( F$ ?* Z.
; }# L& r. G, A; B7 u外部区域(External Zone)
8 g+ m9 y+ _8 O3 k8 a7 d只有指定的连接会被接受,即ssh,而其它的连接将被丢弃或不被接受。
. O; x6 F# L; x5 e# y$ V这个区域类似于路由器的启用伪装(masquerading)选项。
; x$ U$ e1 {6 T  \* H2 T3 w.
, k+ r0 o- _) b3 m! l2 d隔离区域(DMZ Zone)4 j( W" g8 b; F, }# P
该区域只允许被选中的连接通行。2 e( O* L* x: {/ g& K9 m' ^( Z! C
如果只允许部分服务能被外部访问,可以在DMZ区域中定义。# w- ^! n( e! ^- X$ P
.
0 G! B; F5 N' f4 D% E- U' |工作区域(Work Zone)( g; C' |' U. ]
在这个区域,我们只能定义内部网络连接。1 E! `3 L. y7 s* ?) T
比如私有网络通信才被允许,只允许ssh, ipp-client和dhcpv6-client。; X: a! K& [  ^  Z) y
.
" x, H( k) q' E家庭区域(Home Zone)# V" V) K( f' x! w
这个区域专用于家庭环境。
! J, y( {) p' u5 j它同样只允许被选中的连接,即ssh,ipp-client,mdns,samba-client和dhcpv6-client。
+ c2 P- S7 i' I  q* d2 i.) w$ C: W; v- Y2 a0 R
内部区域(Internal Zone): _4 K' B( c" o
这个区域和工作区域类似,只有被选中的连接才可通行,和家庭区域一样。( L- b" {, L1 d
.
! Y4 U7 H1 @1 O* p. D2 j& O信任区域(Trusted Zone)) ?* m& n* a/ i$ h, u, |& b5 o9 R
信任区域允许所有网络连接通行。5 w: H- o7 z9 [2 Y( d' ?/ @' g/ n
切记:trusted区域是最被信任的区域,使用该区域时,在不做任何配置的情况下允许所有连接通行。
8 I7 t' p. R9 t--------------------------------------始' g4 w1 k- \6 p4 j
.
3 [8 A; i) n7 I9 X2 K以上是系统定义的所有的zone,但这些zone并不是都在使用,只有活跃的zone才有实际操作意义。" K6 k1 B. H3 a' S& O
/ P1 L* d( t7 r* T
Firewalld 原则# V& Z1 G  Q: ?6 Y" x! x8 I4 k1 x
.& |& x  Z! ]$ v# X* N. L- F
当一个客户端访问服务器时,服务器将根据以下原则决定使用哪个zone的策略去匹配。! I* p( {0 F1 m: r
.
5 B. Z# H$ G  `" I1
: P8 ]' G' i' I# q如果这个客户端数据包的源IP地址匹配zone的sources(来源),那么该zone的规则就适用这个客户端。
, X, x* W: P; [2 w7 Y7 C! k注意:一个源只能属于一个zone,不能同时属于多个zone。
# t& o8 G  b9 r7 y8 l: h3 ~.) P! v  |/ R- M; F- D: ]7 G" Q4 r
2
6 y  X2 |; P$ ~) w5 v( _8 j1 k. j& X如果这个客户端数据包进入服务器的某一个接口(如eth0)区配zone的interfaces, 则么该zone的规则就适用这个客户端。
) }2 w1 @+ E; r一个接口只能属于一个zone,不能同时属于多个zone。: B0 [4 }, \) b& L& Z
.! v; R! M, W8 S) u
3
; w+ Q. Z6 t) K  O% N- p4 O如果上述两个原则都不满足,那么缺省的zone将被应用,即使用public区域。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 10:24:43 | 显示全部楼层
实现过程
5 |# F2 c3 N7 S + O- Z( |4 D# v: p5 B/ t
下面的命令将配置192.168.1.0/24整个网段的IP允许访问服务器的22端口% i/ u; y: z6 S2 p5 J7 f% r
9 U; A  C. e: L: R7 D) ]$ o" Q' g

3 @# T2 T3 G. t' Z& b! e// 先移除默认开启的没有访问限制的ssh服务
+ p% d! X" M' T" ^2 b: ^# firewall-cmd --permanent --remove-service=ssh
( H5 G4 F  s1 k1 A, E* _% v// 添加复杂规则,只允许指定IP段访问22端口
; J* l$ x% M/ x9 d* K: }# `# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept': c  J4 i# F, c/ R3 `" I; K
// 使上面配置生效
" D. b, E0 _4 ~# firewall-cmd --reload
/ Y: D7 R  c1 X! c7 H) s; S1 z// 查看当前配置信息
- }2 L7 l6 N8 G8 w# Q/ W9 E9 g# firewall-cmd --list-all  h7 e) A9 L! H0 p! w4 g" L. e
2 J7 \+ v7 v' C( ~% ~- c5 }
备注:' z$ F/ p& X+ v) F4 g
source address也可以设置为单个IP地址,例如192.168.1.1, B& F, O( y9 N/ u( V; n) z* s  ?
port可以为单个端口或端口范围,例如1-10000
) C, `/ d% C" T% s  @
! v& V# u4 i' Y) R# |) O
1 b& i" m  z' z  n 2 l/ t" o+ d5 }0 V
其他常用命令( c" j: W: P9 E# L6 l

3 r9 M: {+ T8 l* p6 L删除之前的复杂规则,这里的内容需要与之前添加时的rule内容完全一致,可以复制粘贴过来
) T. D2 j0 `+ ~$ w$ v. f, \( [  R
9 j* V  s& @) Mfirewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
: j" b" J9 m: E  F 2 ~1 [# D/ k# B0 K0 \
手动开放指定端口, @# C" v$ R; a; k

$ R: }9 F, l6 l- s" _6 Y7 tfirewall-cmd --permanent --add-port=3306/tcp
$ T  w; P5 x4 ~% e9 x) \ 9 x: l4 q0 S  Y- ~2 e; ]
删除开放的端口
3 S9 p" W9 a& A. v 7 h! i" Z7 n; m! I2 f1 @; q2 P
firewall-cmd --permanent --remove-port=3306/tcp9 t; Z! x  K6 v- ?# v7 d# ^
9 q% R0 t9 o1 H% I* z
开放指定服务(系统内置的)/ ?% n: m, b# o, t) H! r1 g

! Q+ @6 }4 B& n6 rfirewall-cmd --permanent --add-service=http: X- _; W1 Z- S2 y: J
0 U' N, f" o$ S3 F/ z3 O
删除服务' l. m2 P0 _* w8 ]# e5 X+ X

/ @1 i/ `5 H. `firewall-cmd --permanent --remove-service=http
+ l$ G: T, o1 H; k1 _9 M- z : ?( D/ M5 [* N8 K
添加白名单地址(单IP)
% H3 }6 y7 G+ f1 j, H& v: c ( A% E/ X! n0 h4 y; ]% _
firewall-cmd --permanent --add-source=192.168.1.100
; @+ d: v: ]9 u& K' H
+ a5 Z5 _; l! Y) Y- Q注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究
% @% U- z# n/ E* t$ r8 Q' m3 b, W& L8 p
: f, b- q# y" S* M) G, G! h
添加白名单地址(指定网络段CIDR格式)
) Q* \9 W% A: |! A5 e9 A) a / `& R8 z  ^6 o! A$ |/ H' f
firewall-cmd --permanent --add-source=192.168.1.0/24
7 d1 M; g. t5 j; d ' _, {* q* S9 M/ K; l/ b, ?
删除白名单地址- x: x' s& u1 s# ]' }# v
1 g. A& u8 E5 m+ G& R/ v7 a
firewall-cmd --permanent --remove-source=192.168.1.100
$ }, ]/ w1 F& D; D8 X
/ n$ A8 |% L# l屏蔽指定IP地址
2 ?1 C. P5 e, Y+ S# B4 S5 ?
) A1 G2 B) @* l: r. }! Hfirewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
- N! g5 D& @3 k5 ~ 9 J( Y% J3 _! ~2 E  I# c+ ]* w
屏蔽IP地址段
: }' M3 Z2 u6 ^" B! J
  @+ [+ w9 b  ffirewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"  R0 N( y8 H# |: V/ R, a# }
8 [: y8 S$ B+ i# \, L8 _# I5 Y
手动编辑xml配置文件
3 Y0 F0 T7 {& C8 K6 j/ t * Y" _1 g1 r6 s. H
除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效)

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 10:26:05 | 显示全部楼层
1.firewalld的基本使用
4 X' V% [/ Y% e- S1 l+ o# h- H! O/ q& ]+ x/ y& m3 c) K
启动:  systemctl start firewalld
/ Y! S5 b6 F; V' o: r% Z0 m  B  H+ a
查状态:systemctl status firewalld
, |& d2 w+ i6 [8 U- b% U6 Q/ v, ^% |" T! |4 v( [/ p+ ?+ i0 V& z
停止:  systemctl disable firewalld) J" W( c" S: A6 }7 I) c5 w7 C* z6 J

& n2 J7 |5 Z; i0 T( {4 g5 P) j# l" S6 t禁用:  systemctl stop firewalld
3 c8 K* }: A3 ]' _  H) I& W
$ p' D  O3 \" i在开机时启用一个服务:systemctl enable firewalld.service2 l+ w; c  f1 x7 L
2 w! s5 ?6 R4 u4 I" x
在开机时禁用一个服务:systemctl disable firewalld.service  b! L% b$ L& @6 v( m% o; j

& r! N' }" }$ G0 f6 k查看服务是否开机启动:systemctl is-enabled firewalld.service
  V4 H3 M2 ?( j& u9 O& m8 H( ^" @2 c; K1 r) m! M4 p
查看已启动的服务列表:systemctl list-unit-files|grep enabled- ?# q4 X) ]  ~. d8 {6 O; b* Y

3 X7 C' q; V9 z5 n# u4 W查看启动失败的服务列表:systemctl --failed! e# U6 X& `2 n, K' p

, M6 S4 L6 @/ K% F
6 K5 D6 q. x" G3 G9 {) O
. N: X  O1 `5 z5 P2.配置firewalld-cmd
/ T/ |# O& q$ ~/ k) N
7 f. z5 T, e  ]2 j& ~查看版本: firewall-cmd --version
% S4 L9 h% I1 p0 y# w( {' T8 i& o2 }4 j; R/ j
查看帮助: firewall-cmd --help
+ ~2 |: @9 A% E8 d- h% x! J. W/ v4 n$ @4 d
显示状态: firewall-cmd --state
! d9 m4 _! P. [. F& o1 ?- H
! O8 K0 M" B5 Z" J2 K: K- M. Y8 H7 k查看所有打开的端口: firewall-cmd --zone=public --list-ports( M7 n0 E6 I' K6 k2 m& L+ q
' O% g  Y% M7 I" j
更新防火墙规则: firewall-cmd --reload5 d) M) |) G0 l: u: c: R4 V

3 ~0 [- J9 V* h9 X查看区域信息:  firewall-cmd --get-active-zones# B9 J9 k' Z2 u; q" e- a: R$ i
$ ]! x) ?& j% G4 f* K
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
; @/ V6 d  M" T6 j) Q( N; ^
+ z/ [$ ^' M) {1 ]3 F$ N0 b2 O拒绝所有包:firewall-cmd --panic-on4 g6 U" h7 _) A' F  C! p1 G
: L: Y4 C2 C; Q# [$ T
取消拒绝状态: firewall-cmd --panic-off
& h+ p7 V6 O. F! r+ F8 X7 }2 K
! I, Z$ ~- l5 B  m查看是否拒绝: firewall-cmd --query-panic
/ W+ }" ?' I! {  @5 H) e* r& Y; ]( a

. L+ M/ O+ v/ u- n
' m) t) A4 o% P/ d$ c" z7 p% q3.添加/删除  一条规则) h1 ?0 F5 g0 ^  q2 L
" U$ g8 ~9 u6 b- O6 p! j3 n
! u( w" R2 a/ A* K& G1 h

4 g; ]7 |7 |5 N/ n7 t1 K% G添加2 |2 t( d# l3 m- }
) z; H) R% n/ A* ~: a! M6 a
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
/ i7 z! n2 o" x, u: K- H& Q* c! H9 \+ F6 A+ |: h5 s  [6 c* H. G( ?
firewall-cmd --zone=public --add-service=http --permanent
1 C: @4 w% }# Y# Z  G  ?3 ]
! b/ g  k: W' r/ z. w8 efirewall-cmd --reload    # 重新载入,更新防火墙规则/ ]  a# J* L; f; W5 ?) N

# t0 O$ p, e- |1 Bfirewall-cmd --zone= public --query-port=80/tcp  #查看  P2 d( u/ K5 O# R, t5 v

; m. ]9 M6 i- {' g
0 A& }0 o' l, q4 Z- x
7 e$ _9 e1 k: P' P" a删除# O1 x8 W9 w- M4 D+ U5 M" v
8 g6 f: i4 V' u+ ]7 T
firewall-cmd --zone= public --remove-port=80/tcp --permanent  # 删除
9 }" @: u, T2 x, W8 L3 n0 f* G6 P. F
: N, d, R6 S+ _6 g
+ J8 j/ C$ X+ [1 s! j/ {& B: x) F6 o: k2 C, E( Z5 o  k" W- S
firewall-cmd --list-services
  Y4 s/ c  Q1 M  m+ x/ r( b% T+ @) R
firewall-cmd --get-services1 j3 h- e( B8 e  k# J# S" K2 ~
+ k  s3 z6 i: ^$ L
firewall-cmd --add-service=<service>
+ g+ L" F3 a- q/ K2 ]' ?4 v
/ N: `. B' E6 b) E3 Gfirewall-cmd --delete-service=<service>
+ ]1 G# }0 A0 y$ a: w5 `* G; |/ ^9 q+ X8 h8 @
在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载3 q8 f8 u* L6 S

1 O2 I, `7 b% G, P- }" _使用命令实际也是在修改文件,需要重新加载(firewall-cmd --reload)才能生效。3 U. L& s& @# j: v
6 J* |8 ^- b1 H' `8 Y! [1 h9 H- L

; O  H/ O8 ?" i0 C) ^2 I
5 i+ q( d0 |( u' rfirewall-cmd --zone=public --query-port=80/tcp0 |- g8 _1 ^( x# w0 \1 b
. ^' q- D3 ^3 `9 T
firewall-cmd --zone=public --query-port=8080/tcp
  H8 x2 R9 \- d: @$ ]& V
5 l$ H/ |5 [" b2 A4 I  gfirewall-cmd --zone=public --query-port=3306/tcp( `( Y# r) W( Y$ D3 ^& j2 k
$ b% X2 i# e; \: d: r
firewall-cmd --zone=public --add-port=8080/tcp --permanent
; f& S8 u8 t  ~5 y: Y
9 Z  d3 ^/ N, ^9 ^7 G3 vfirewall-cmd --zone=public --add-port=3306/tcp --permanent
7 ?: F6 {5 h5 i7 Q7 ~+ m" _  P
. K7 H# o! h9 G( V3 j1 h& n/ Mfirewall-cmd --zone=public --query-port=3306/tcp
; c7 d1 v, B5 q5 r$ v  `; b
( @$ K/ I) M+ P# Y# gfirewall-cmd --zone=public --query-port=8080/tcp% m) _$ h6 h" G$ Y7 ^: u6 H

9 _1 M1 s4 W+ [! X1 ~: Z: |firewall-cmd --reload  # 重新加载后才能生效
2 y6 C8 w$ E0 s; V% L
% S# Q6 N; O3 G/ f- x" T" Sfirewall-cmd --zone=public --query-port=3306/tcp8 [( l! t, i9 \9 c1 k, L

  ^0 _$ F" \0 e* {9 z2 ^0 _firewall-cmd --zone=public --query-port=8080/tcp7 \1 @' b% w, \" i3 G2 k6 E. }) H

2 O4 {# Z3 K! h7 v3 c2 ~( L. v. W7 b. S
& x1 g! y  I* b3 X- ~
4.参数解释
  q3 Y/ j: {3 l0 e6 Q* l4 W& `& Y
/ y0 N* f. l) ~' u% V0 s) l2 m–add-service #添加的服务
, Z: q- G0 R& w  r; O% W
3 \# O/ ^# r; K–zone #作用域
2 x: n, B* k1 S) m8 b* o3 Q, c% k2 Q( Z5 V# j8 o7 m, |( Y
–add-port=80/tcp #添加端口,格式为:端口/通讯协议+ u3 R% f( D3 V) j0 {

; n( S' T: o/ N/ A–permanent #永久生效,没有此参数重启后失效
4 z; |/ d3 s3 {" Z4 S- g0 c: B/ W! S

: w" l1 Y; {8 P7 W% b' ^5 L  t& w1 K0 b* Y1 ~) c
5.使用举例8 d! z, i8 j+ P, B& r; c
4 ?0 d/ m: E; i- e0 U

" o8 u$ [- `$ |% r
0 h! |6 d3 w/ q  ]firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'    //设置某个ip访问某个服务+ y' K. y  {7 J5 X
9 s# {1 r7 E+ l8 Q6 @
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //删除配置
3 n9 V2 A9 [  ]3 w$ O. x& b) z% s% W7 C2 c
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //设置某个ip访问某个端口
. v! P; m2 m1 n3 X- r4 [
1 J2 Q: O3 F) P7 ?" Y+ bfirewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //删除配置
5 V0 @" J1 g# K# c1 Z
6 s6 {- J8 V1 F4 M2 V! S
$ A9 \8 `; _$ Z$ F4 j" N/ U$ q. o! o$ g6 [, \. G! u
firewall-cmd --query-masquerade  # 检查是否允许伪装IP0 N, r* E6 w3 l/ c/ r! Y: P( Q

( l/ `8 {. l; e/ A) N  t3 u5 Z$ z& Tfirewall-cmd --add-masquerade    # 允许防火墙伪装IP! P* V/ `0 ~1 l; h

5 i; u1 q8 @. s  Qfirewall-cmd --remove-masquerade # 禁止防火墙伪装IP" C$ |6 I% T) ~2 Y$ K

6 i. z0 Q' `+ X8 D
" d* Y9 c/ t* n' W' p" k
4 J6 ^$ U8 F: D/ \firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080
/ Q& `+ H" X( R  ?1 Z1 k1 ]0 h( b% n, G0 ~/ x; H/ x
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
  {/ ]( s5 B* l8 B
! F9 h- N% s! G" B: Gfirewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口
3 u, e* ^- ?% C' B* W; k# `+ N9 l3 K7 J5 g5 a' \. f; Y. O/ X- Y; H

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 11:40:00 | 显示全部楼层
开放指定服务(系统内置的); S8 \& W* t* t& f8 q/ C. |+ Z
firewall-cmd --permanent --add-service=http3 U- m2 Y  c3 m1 U) W! k6 A) ^
1
. I" `4 Z, H% v* v0 ~6 X" a7 q删除服务% q' @. V. ]9 ]$ C3 I, q; X' o8 w( S
firewall-cmd --permanent --remove-service=http2 e% l7 J/ w( [( P
18 ^7 o( Y8 `9 p" v$ ]
添加白名单地址(单IP)
, n9 O0 r) n& \4 B: s9 L' o4 ~firewall-cmd --permanent --add-source=192.168.1.100; P5 e, l; |% a( |- @! N1 r0 B
1# J( u/ c+ k! a: \7 ^: I3 |
注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究
/ t( r+ O9 F; B- @  M8 [! C4 ~7 j) {
添加白名单地址(指定网络段CIDR格式)9 r, f/ e8 K' y+ N! H( m0 `
firewall-cmd --permanent --add-source=192.168.1.0/24
1 {3 F8 h  Z1 c0 b0 }* j1 G1# M6 i  p. m6 T, p1 h2 J
删除白名单地址: U* j& T0 [6 l; p# _
firewall-cmd --permanent --remove-source=192.168.1.1000 Q! k. {6 L8 j4 S
1& c9 ^- ^) A9 t; C' G, q
屏蔽指定IP地址
& L, B: a- ~6 {firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"
4 W1 {: P2 F* K$ o$ n6 [1( I2 u8 h0 j4 R& C$ S
屏蔽IP地址段
! Y4 {9 c$ m+ m# D0 t* {( cfirewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject", p( E" ~' K% M: O+ `# G
1
' h! v6 i! z) b! r) S手动编辑xml配置文件5 q' v! O8 D/ a2 o# V# k! V
除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效)2 T8 Q: c0 E' l% ^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:56 , Processed in 0.025749 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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