易陆发现互联网技术论坛

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

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

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

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

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

x
现在对安全的要求更严格了,对内网环境的特定服务器,现在只允许指定IP或IP段进行访问,其他一律屏蔽,配置步骤如下:
) a$ k8 M  N3 y& p5 w检查防火墙是否启动:
( [1 L7 s0 b( T. i  m9 s0 Lsystemctl status firewalld.service
# f2 d4 N2 r9 _) X6 m6 `3 e启动防火墙:: j0 `2 h3 u  k. F( u! |
systemctl start  firewalld.service' ?3 T1 c) y$ Z5 a$ L. l1 H3 `
* j8 C/ A" M( I! @9 K

* h9 M, r8 c9 q+ y开机启动防火墙:
2 o9 ?1 E2 u/ X# Csystemctl enable firewalld.service
4 d0 W2 D: M* r0 O! I0 I. g0 A4 G' k- l. Q; {

/ N' N" X: r5 M' x  G修改防火墙acl规则:! H  Q: v) S& r  ~" ^5 Y0 \0 s
通过编辑文件:
' Y8 s! j0 }: Q6 E3 w  Yvim /etc/firewalld/zones/public.xml. m' d8 D# K7 h2 M$ E6 S# @0 k

1 |7 a% t) E7 b. W$ F<?xml version="1.0" encoding="utf-8"?>
! ?: ~2 Y" t$ m" _1 q3 Z; E* g<zone>0 s, V* K; [4 Y; W- h0 w7 V
  <short>Public</short>0 [6 k. a; l8 Q! q8 h  ~8 j; m5 c
  <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>+ `  l1 ~. q8 |+ T' v
  <service name="ssh"/>( A3 A- l* q9 C  `
  <service name="dhcpv6-client"/>) l  J' \% O4 R0 W( q8 J0 g. l' i
</zone>
4 _- T4 S0 h4 v# D~                  
% y2 f( }! q) E+ i; @8 t# f
8 ~3 v/ [# P% [+ h6 T5 v默认的防火墙规则
: k& z3 U4 ~# D: @4 F( Y8 d7 a- @- V. P7 e7 m/ B9 T" D
第二种通过命令:' i" y9 F8 M, H- B6 j9 u

; h; J- s- t: H$ T1 M1 Y- X手动开放指定端口
4 e2 \0 M5 m4 W, T0 g( C) E7 W# h3 G4 r: P8 ^, |) n, G  U1 Y

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


# q7 t0 g: T  \3 @4 K
, `0 K' K. V& g改完配置文件后重载一下防火墙服务7 V! \6 \+ P) `
firewall-cmd --reload
0 @0 @* ~) ]  Z$ P7 q5 F$ G
" m5 E" q/ G' J
" `5 O& @  @' Q3 f基本应用

firewall-cmd --state
6 d9 [! G7 v: Z% c! i获取firewalld状态
$ p1 y" F8 |/ O- G.
$ ]. g  b, @9 S, a# a' Ofirewall-cmd --reload% `% n2 F% ]% [0 P8 C* d. `
在不改变状态的条件下重载防火墙
) P) H6 m2 R# ]' \.+ n% i# |- K7 ~
firewall-cmd --complete-reload
0 B- M% [; e# D/ _完全重启,状态信息将会丢失
; D2 n- S/ Y5 u( c& u.
3 @1 F/ e; I4 c- s% Xfirewall-cmd --get-zones
& M' v# @- I( e; j. q8 b获取支持的区域
! i( B7 Y+ q$ l# G.$ B! d. q6 B( B- R9 c
firewall-cmd --get-services
( t* s+ V0 k/ E, M3 E9 K2 M* ?' V8 ~获取所有支持的服务,支持的服务存放在/usr/lib/firewalld/services目录下。) P! U% P; Z- \; _# T
服务是firewalld所使用的有关端口和选项的规则集合。
" T% m' g1 m- u8 Q2 ?; `9 `被启动的服务会在firewalld服务开启或运行是自动加载。7 c4 c( c0 ^+ Z# A8 G! s
我们还可以创建自己的服务,即添加端口和服务的对应关系,将在下面讲解。" x6 z. i" |4 T1 i1 }8 ]
.
% ?* q- l# b+ `7 ifirewall-cmd --get-icmptypes
: K, z4 r* }9 |" Q$ ]( G) l' \. d8 Q3 c获取所有支持的ICMP类型! \8 p" b/ y+ ]4 p; A$ L* \
.
9 }# t7 _4 U' pfirewall-cmd --list-all-zones' f6 m8 t$ I5 Q4 J+ }, ?3 N
列出全部启用的区域的特性(即查询当前防火墙策略),特性是定义的防火墙策略。, z' R9 R- w2 I# w6 k& n( O
策略如:服务、端口和协议的组合、端口/数据报转发、伪装、ICMP拦截或自定义规则等。
. u' C) E' m. X: @4 A5 H' Z该命令会列出所有区域的所有特性,包括详细规则(rich-rules)。$ i/ v7 \2 X# b9 Q5 s/ [
.
  `2 I' j. b1 D: @0 Q( A3 x8 g3 Gfirewall-cmd [--zone=区域] --list-all4 O9 m7 g" x: l0 k& d. c
输出指定区域启用的全部特性,如果区域被省略,将显示默认区域的信息。6 `& [$ P- Y! k5 s" w' y# U
.
! y4 p: U/ ^" Y% e3 o) Bfirewall-cmd --get-default-zone) I- S( y2 R  I3 H; b' @$ H
查默认区域,默认的默认区域为public
8 B, N# k  _$ ]- V." I% \- k0 O& e& ^' K" K# {% m
firewall-cmd --set-default-zone=区域2 y+ N4 i( M5 i/ t
设置默认区域,也可通过/etc/firewalld/firewalld.conf中的DefaultZone配置项定义默认区域。
! [2 R% K5 u/ P+ ]& N流入默认区域中配置的接口的新访问请求将被置入新的默认区域。当前活动的连接将不受影响。' h5 w% |* x% c* n
.; i  N6 i4 D3 Y5 G5 U
firewall-cmd --get-active-zones& U0 i! H* U. m* R6 d: O4 G
获取活动的区域,同时会输出活动区域所包含的接口。
4 ~5 I' X8 E, X; i5 V7 `- ~.3 V. F/ F# n$ Y8 V1 x+ T+ o
firewall-cmd --get-zone-of-interface=网卡名
  l# I+ O, N5 A$ E, U8 _查指定接口属于哪个区域% \1 H% ]2 g) D2 R# ~8 F7 e4 H
.- @2 _* G7 O7 H
firewall-cmd [--zone=区域] --add-interface=接口名4 ^0 L$ _' P9 Q+ g6 A" `3 M- v
将指定接口增加到指定区域,如果区域被省略了,将会被添加到默认区域。
0 `; |' k' ]( W# T1 c  k一个接口同时只能属于一个区域,接口会在防火墙重新加载后重新应用。+ T! V+ {; Y* d1 R$ D
.
6 f3 |  B' @0 i) t5 z4 vfirewall-cmd [--zone=区域] --change-interface=接口名
0 Q+ D/ D' Y) b8 O% K# A修改接口所属区域,这个选项与--add-interface选项相似。) J& `. y5 P* Q: y' d
但不同的是,当接口已经存在于另一个区域的时候,该接口将被重置到新的区域。+ Z; `+ l4 V( D$ b4 u# W
.8 [8 L: n1 e4 v3 E
firewall-cmd [--zone=区域] --remove-interface=接口名
, I1 M- e& K7 C3 ~从指定区域中删除指定接口,删除后,这个接口的所有数据包将使用默认区域的规则。4 u5 l( d0 D$ S) U1 }+ F  }
.+ x8 g; F4 a5 Z, X7 N
firewall-cmd [--zone=区域] --query-interface=接口名
& a+ ?9 l  Z" e% m+ I. T( E, S查指定区域中是否包含指定接口,如果区域被省略了,将被指定为默认区域。
! a, M) F! p  }2 ]* I.
0 M3 E* H/ N) \1 t5 S) J, Xfirewall-cmd [--zone=区域] --list-services+ B  B" g3 p# U5 U' M
列举区域中启用的服务,如果区域被省略了,将使用默认区域。
7 d& a0 c6 b- i6 I.$ q5 V  J1 g' x* `$ Q
firewall-cmd --query-masquerade 检查是否允许NAT转发
  h; J$ z8 }4 }& ]5 k% y* Z0 @firewall-cmd --zone=public --add-masquerade --permanent 永久开启路由转发3 `9 F: k2 S3 p* L# O
firewall-cmd --remove-masquerade 禁止防火墙NAT转发4 Z: x) Q% b3 {  y6 p8 O
.
$ M9 I9 O  U: n* P; r" B$ \firewall-cmd --panic-on 启用应急模式,将阻断所有网络连接,以防出现紧急状况。6 U7 l6 w& P7 H+ Y6 C
firewall-cmd --panic-off 禁用应急模式! G3 Y* J* `) v7 F* ~, [4 s
firewall-cmd --query-panic 查应急模式状态5 p5 c* v; ]) I! j2 p
.
( o1 X* O' C+ x9 I其它相关的配置可在手册页man firewall-cmd中查看。

1 v. B' N% n+ t2 M" i& j: U
- j! b, P! g% O* n7 G  M; C! Z
 楼主| 发表于 2022-1-17 10:21:23 | 显示全部楼层
firewalld默认为我们提供了9个区域,默认就有一些区域是有效的。这些区域按照不信任到信任的顺序排序,如下。
, x9 c/ g, I9 s.1 c- V: w4 `" |9 p
起---------------------------------5 j7 B5 s# W, k
丢弃区域(Drop Zone)  o- Z9 e1 t! D# p3 Q) k: }2 H" a# i
如果使用丢弃区域,任何进入的数据包都将被丢弃。
) l! ]1 @7 B* `& Q* l. p这个类似于6.x版本中使用的iptables -j drop。
# j- u% O( q5 N6 f* N使用丢弃规则意味着将不存在响应。
. M) V) w' K/ \3 l.
; q) P8 S* w5 X2 \6 y/ F, S. M阻塞区域(Block Zone), D) Z0 ?( ^! R1 ?4 D
阻塞区域会拒绝进入的网络连接,并返回icmp-host-prohibited。
" s1 Q( f0 A$ G. W4 m只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。
" j7 x5 g, H8 H.2 f0 N" T% r/ V" J$ l1 X9 Q3 F2 V
公共区域(Public Zone)! W! h% j6 ]& f5 F
只接受被选中的连接,默认只允许ssh和dhcpv6-client。
1 J7 A# }1 t3 _5 z5 G这个zone是缺省zone,即被默认使用的Zone。
9 g' [! F$ H0 V' H8 Z) {.
+ C$ R- O' H4 r9 x! }外部区域(External Zone)' ]/ x8 t: M' Z8 d% c- L" h
只有指定的连接会被接受,即ssh,而其它的连接将被丢弃或不被接受。! ^# \. F8 d  M. k7 h' c1 r
这个区域类似于路由器的启用伪装(masquerading)选项。
6 Q: y4 H8 L, g1 V9 x.
) [- P6 L& k) H2 z: e1 H* l隔离区域(DMZ Zone)
6 h4 h! G' w: ]  E/ b: d1 w该区域只允许被选中的连接通行。
' i: w9 E$ v; D) k如果只允许部分服务能被外部访问,可以在DMZ区域中定义。
8 [$ i2 V  z! c* m! O- K.
: k6 Z# {' ~) B* X工作区域(Work Zone)
" s, v0 q1 u- E6 t% j3 _' [3 G在这个区域,我们只能定义内部网络连接。
9 j8 K; J5 Y; y& C$ l# t, n! g- [比如私有网络通信才被允许,只允许ssh, ipp-client和dhcpv6-client。
7 O8 J( a6 o1 e: c.+ Q' z3 P# _" U$ {+ e/ P6 H7 ^
家庭区域(Home Zone)
  C% Z8 F) ]% J( T这个区域专用于家庭环境。
! A8 @% K+ Q; U7 B/ l9 h它同样只允许被选中的连接,即ssh,ipp-client,mdns,samba-client和dhcpv6-client。% C5 m$ f) R# E* l) ^% \
.
+ M& j0 r" S7 U/ Y) z: K+ K# y6 L内部区域(Internal Zone)/ v' Y0 `& o$ ~  v& ~6 m
这个区域和工作区域类似,只有被选中的连接才可通行,和家庭区域一样。
* }# o& x- n1 e$ c.9 C; q8 l' X# u; t
信任区域(Trusted Zone)
  R& N7 @% L9 _信任区域允许所有网络连接通行。
( N) [- H2 l0 Z) k" U9 e0 |; B切记:trusted区域是最被信任的区域,使用该区域时,在不做任何配置的情况下允许所有连接通行。
# |: a" }. S: }# u$ e9 A--------------------------------------始
& C+ x6 h6 t6 h.
1 H# N8 C9 X; ^. Q) {5 X以上是系统定义的所有的zone,但这些zone并不是都在使用,只有活跃的zone才有实际操作意义。
; S3 v- G6 \) P  X9 _
6 i% J5 M3 w! s6 f( G% s9 b) ^0 [Firewalld 原则0 W; B( L4 d6 C6 _. ~
.3 B& l% P: G$ r( Z+ o  A9 O8 d
当一个客户端访问服务器时,服务器将根据以下原则决定使用哪个zone的策略去匹配。7 X4 S) ]% [& ^* d: b9 P& V" `
.0 H1 ^% T; {7 e: Y6 {- O8 R
16 Z3 S8 F# g; `' |# D5 J$ V: E( v
如果这个客户端数据包的源IP地址匹配zone的sources(来源),那么该zone的规则就适用这个客户端。
8 a7 g7 s  R% w- @+ _9 G! A$ n注意:一个源只能属于一个zone,不能同时属于多个zone。
( d# ]9 D! q( d% ~1 f.$ X7 L+ g% G( c. r8 F" H+ n, [9 L
2
2 @! y) k1 r6 t6 Q5 z. _# I如果这个客户端数据包进入服务器的某一个接口(如eth0)区配zone的interfaces, 则么该zone的规则就适用这个客户端。/ ]8 Q+ u8 X3 V9 p) R
一个接口只能属于一个zone,不能同时属于多个zone。  ~0 t  l' @! P5 R/ O$ `
.+ D: X% ~, ~% F+ o4 C* c
3  c3 a% r+ K  h
如果上述两个原则都不满足,那么缺省的zone将被应用,即使用public区域。
 楼主| 发表于 2022-1-17 10:24:43 | 显示全部楼层
实现过程
, H: `! E% r) I& z; X
# u# D0 N! r; U$ c% ?1 O下面的命令将配置192.168.1.0/24整个网段的IP允许访问服务器的22端口5 K9 @  H' X) Z+ U, c
+ c/ i1 g% z* ]+ r( E
8 O. G3 P3 [+ \, M" o% M
// 先移除默认开启的没有访问限制的ssh服务0 H. O4 n9 j5 \, y! J% O# J
# firewall-cmd --permanent --remove-service=ssh9 s% G, q4 Q2 g1 Z8 ~+ B0 {
// 添加复杂规则,只允许指定IP段访问22端口
, V6 Q  S8 R1 v/ p" s$ ?# {# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
" b$ e, e4 |- C& v! X1 b9 D' }7 P0 Q// 使上面配置生效
) }0 n0 m# T) m# firewall-cmd --reload
" M2 _; A8 m- @; {7 ]7 v+ m) u// 查看当前配置信息
/ L8 }2 o) Z# O# ^; x; \# firewall-cmd --list-all$ m6 \: r5 n; f
# ^' q1 K; k, j) h& r1 U
备注:7 A: K  t3 Z) c2 J/ q/ r7 E  Z/ F
source address也可以设置为单个IP地址,例如192.168.1.1
0 e0 ]" U3 g: P3 h. x; p port可以为单个端口或端口范围,例如1-10000
8 f$ }- z- l+ i
7 X( w# U7 C0 |& u/ I 3 Y* m" j! X; L* X1 x

; c: n0 h5 t3 ^5 |" I0 u其他常用命令- Y! N. l/ c( A" F
* w# }" l& I  @1 o( E
删除之前的复杂规则,这里的内容需要与之前添加时的rule内容完全一致,可以复制粘贴过来
7 t1 ^: t# s) Q 7 M. x3 I! R2 A% M
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'* T3 q! Z/ w3 B. L5 E+ N

0 z8 S9 `* Z) z手动开放指定端口
( @" b' Y) p, s! y/ z# L! b3 G; G ! E2 k- l( p$ m+ ~
firewall-cmd --permanent --add-port=3306/tcp
& K( n/ {9 m$ l9 X
* Q3 l7 W* J! U删除开放的端口, ^7 c& c4 K/ R  K

( o: V0 k' d# P" n2 v2 H) c+ ^firewall-cmd --permanent --remove-port=3306/tcp
# e, E3 |. D, |
2 C' o$ {7 s- h; w* G7 h, }开放指定服务(系统内置的)
: S' e# p1 \! b# Q . g, ]: ?5 G& q0 |- R! |4 R( `% ^
firewall-cmd --permanent --add-service=http
, I; ?# b. G& F : E3 C1 u0 t: X( Z, f, J
删除服务* [1 @/ v* j- m- g  \

- j- ~, h7 h: ^5 X# afirewall-cmd --permanent --remove-service=http
$ y$ F* ?; m  ]  n 6 Q# m' o- m6 K' e. t
添加白名单地址(单IP)
5 j8 V7 [. c  Y. F. `/ S4 D2 l7 Q # p# v- e/ p% n( a
firewall-cmd --permanent --add-source=192.168.1.100- j9 v2 h# J$ `

& Q& E3 `+ A1 k9 `; Z注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究
: P2 d  w: r  s9 e# N
; l6 e# n* S$ ~; }' d$ q6 Y, s
$ q1 i6 f; `! C+ Y* R2 v+ _添加白名单地址(指定网络段CIDR格式)4 t# [, h- d/ K$ b1 m' {
" a7 f* u) \" K( W. [0 M
firewall-cmd --permanent --add-source=192.168.1.0/24
: s3 W1 o4 S3 v2 s2 {. f4 E
, Z7 t: r% ?3 J  g, X: t  ?删除白名单地址
( E' L& q+ o8 Z4 ], d- ]6 d
3 l2 c1 E0 @7 i$ V( P+ qfirewall-cmd --permanent --remove-source=192.168.1.100
$ M# ^4 n  E* I& |9 w2 r   ^& X( Y# m1 S1 ~4 c; t7 O
屏蔽指定IP地址  _- v, G4 Z4 z+ r) M
0 @/ a+ ]) i& n' v$ S& \9 a0 u
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"+ h# y+ u- n6 R$ @" Z
% B& q$ x; x7 i. F8 w6 F' A: p/ O
屏蔽IP地址段7 K- J0 J! @+ h) G
% W, `9 [& C+ d8 Q1 Q: x( \
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
$ \1 H! r5 u) t! A   ?+ T$ ?: G0 u5 E; \
手动编辑xml配置文件
0 s0 a6 r" e/ b7 J' y* j$ W
$ H1 F$ U9 M1 W5 X除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效)
 楼主| 发表于 2022-1-17 10:26:05 | 显示全部楼层
1.firewalld的基本使用
% G' v5 a! L: K$ h- F$ i3 ]+ J* Y7 y8 ~1 ~
启动:  systemctl start firewalld
0 U# a  O5 O1 L2 O
) l7 `% f9 [9 Q0 N查状态:systemctl status firewalld / `9 ]( {; t# j- o( T  U

0 N* a7 D& a& Q6 ^; F2 C1 D2 }停止:  systemctl disable firewalld! T- w$ |/ }4 `0 Y
- N# g% N7 D& f" e6 B
禁用:  systemctl stop firewalld
, b3 t& e8 i2 n, H  I
' W3 r6 E4 @. o( H# @在开机时启用一个服务:systemctl enable firewalld.service- Z$ Y* D  P( Q8 D, ^$ p; ^$ Y
5 L9 w, f. K& s% L3 D9 w$ v9 r: ?
在开机时禁用一个服务:systemctl disable firewalld.service
) \9 }1 R/ U  Y) v. ]/ W/ K& e
, R! x) o/ s- [3 \2 Q/ P6 J9 A查看服务是否开机启动:systemctl is-enabled firewalld.service
% o- h  b* f+ g
8 F8 |+ T! t* X查看已启动的服务列表:systemctl list-unit-files|grep enabled
" H+ a! d6 O1 X3 M- F7 I6 t, s
2 c7 q) M/ _5 r6 D  u- G6 E查看启动失败的服务列表:systemctl --failed! E% g4 p1 T! M7 u* a

$ M$ h5 }4 |! C5 w
3 r+ i  n6 S: T$ ?. Y
% k) c# g  Q( ]& Y2.配置firewalld-cmd
$ o9 j6 ]3 o' N6 b1 F  G8 f% U. i0 c9 N1 r3 o
查看版本: firewall-cmd --version
! ^8 k; X& y8 ]3 L! v! ?, R5 c. i4 N, ]3 u" r  Y
查看帮助: firewall-cmd --help
) T8 T( r# {4 ]$ a) {, J) m/ [* {+ S
显示状态: firewall-cmd --state
8 ^: n# l' K9 s) c7 C: l: x3 O8 `- j* n4 ?2 R
查看所有打开的端口: firewall-cmd --zone=public --list-ports3 |; d) R9 u! Y# B5 [- P. k" F

; @5 N) C7 t  Y& n' n. f# |更新防火墙规则: firewall-cmd --reload
! ]8 }. U3 o; r7 U1 j1 ]8 k8 u; w; R8 u
查看区域信息:  firewall-cmd --get-active-zones/ R6 b, b- q+ T; Q' p/ T6 {7 F0 m5 i
, g2 |; H  u/ P5 J+ I' I
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
0 @3 n0 l$ O" ?4 [( w5 L; o( Z' a# o+ p6 w& N( H6 S) x9 t% _
拒绝所有包:firewall-cmd --panic-on7 l, h0 ^3 t3 u$ [6 h$ Z
% m1 ]; M0 C% m( ]
取消拒绝状态: firewall-cmd --panic-off
, J+ a* S% l/ ~& A; f8 h: X+ Z; T/ u3 v: `
查看是否拒绝: firewall-cmd --query-panic
' P3 ~; w: p/ q. Z, c8 v; j& m
+ p9 z5 ?9 |5 d4 x. m9 H( F2 n9 ^7 h& w" m. ^1 K1 m
8 t' u2 O4 ^" _5 _6 a/ b9 L% j* H
3.添加/删除  一条规则
  M7 `, M- }2 K) n8 C
# f+ i" D" f8 J% r% s$ Z
* O5 |' A0 p( l" @3 R3 z! u, W3 U
% W# ?1 w9 ~9 A添加; I3 M2 l/ W! o+ i& L$ i6 v

8 l( Q0 n1 p. x% O$ d9 g3 Tfirewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)8 K7 z% v: k1 P0 E; G! f
; ^: f' J" }$ P$ Q. s8 q1 K
firewall-cmd --zone=public --add-service=http --permanent
# i: G. L1 C1 x: B% r% s2 S) s/ h7 Y# t1 m
firewall-cmd --reload    # 重新载入,更新防火墙规则
# w+ I* b5 A1 Y3 i6 o  [6 z9 N
5 V# y! [! x4 Y. O7 Ffirewall-cmd --zone= public --query-port=80/tcp  #查看
# Q5 `  Z5 y" m) U: u; l' x) Q7 W. Y7 |0 U
: L4 o8 _- }' s  K
3 X1 G" u% b) i/ _$ O) O- H4 @  E
删除9 T" _" d2 h- {
6 g- c, W7 X& n: c8 g
firewall-cmd --zone= public --remove-port=80/tcp --permanent  # 删除+ K: a0 w( f6 R! e
/ a4 q& }; `8 \, f, Q- U5 Y# ~
! n% ?9 k' C: c! |( g& P: p
, ]8 v5 k7 `8 K3 @
firewall-cmd --list-services
" q, _+ K4 c! w) g9 u0 I4 b1 v& F! N( H
firewall-cmd --get-services
3 d! s, }9 a! d
& F: G# X( y: L" a4 _firewall-cmd --add-service=<service>, F  {  K7 F0 G( p2 `7 G- [6 }; e

0 l  H% v; q  ^1 k) L8 Pfirewall-cmd --delete-service=<service>
. L$ Q( Z$ I; X6 n0 x; g/ w
: S6 @5 ^" \4 V: K  X0 ~! \, w- \在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载' T. `1 ~1 j' I6 ]8 L2 e2 `" E
) B0 y2 T( k. B/ j( e- Q
使用命令实际也是在修改文件,需要重新加载(firewall-cmd --reload)才能生效。, l0 ]) B! z+ b. z* j

2 a9 H- g; f# U' B- j5 d# C" J4 ?5 Y1 b  s
  _" j! Q) w$ `% S; a
firewall-cmd --zone=public --query-port=80/tcp$ N% _& x3 Q8 L5 L/ H

' p6 k7 u5 p* x# M+ W! h1 O# Jfirewall-cmd --zone=public --query-port=8080/tcp
7 @0 l/ m( @: w7 X6 Y" Q( N6 C$ Q% o. q/ A* v. J
firewall-cmd --zone=public --query-port=3306/tcp
1 l, G' g: m4 T5 C  g2 U% F3 o2 m  X) Y! w9 }' R! [% l5 J- D. |
firewall-cmd --zone=public --add-port=8080/tcp --permanent
, l; U% l: x& z) `) t
5 Y  K2 C, j6 U' Z) Afirewall-cmd --zone=public --add-port=3306/tcp --permanent: f' t% W; {" W1 E' ?) V

) E& ?& U7 h4 U: e. l" zfirewall-cmd --zone=public --query-port=3306/tcp
" S- K7 i$ l# l  W! ]( |+ P$ M
: s2 v1 p2 I" m4 V+ I, ofirewall-cmd --zone=public --query-port=8080/tcp* D5 W2 F" a4 r3 j6 ?+ D; B

& m' ~( p" R; I8 xfirewall-cmd --reload  # 重新加载后才能生效- r4 m5 T( i: D2 S( L1 V8 P
/ i: I  q" Z! `/ H. o6 ^9 e
firewall-cmd --zone=public --query-port=3306/tcp# y/ O1 w8 N' ]" k4 @7 [

8 y# V8 ?% B) D& r! xfirewall-cmd --zone=public --query-port=8080/tcp
$ X& H' b- r; _% Q" ~3 E. z3 H! g# o* M0 ~( a3 ~
( F! c' U1 Y( b3 I
& z" Q1 a1 L/ C2 s" T9 ]
4.参数解释
( e/ i. h6 _( X8 s. f
4 n+ \6 _& v+ `7 ?, N–add-service #添加的服务
4 V9 y! D6 g4 k8 ~- d. Q  v6 w5 o( |9 k% S7 {1 t
–zone #作用域! c3 N' C2 U5 ~3 G
3 O6 u3 ?" s- ^, e) [
–add-port=80/tcp #添加端口,格式为:端口/通讯协议, B, U: [2 L$ X( H

( Y' W  I( f, v' ~" E! V–permanent #永久生效,没有此参数重启后失效
8 A7 t$ \8 h* x
& E1 M( H& O8 \" m7 R" w; E0 i2 G# A' w7 c0 L! L
/ D: K, z) A/ E2 z( l  r
5.使用举例
4 g% Z1 l. D- f3 R9 N* @) P6 d& G' K. ]* f0 N8 u

6 ]6 K& z; i' W7 l- ]8 ?* j8 c9 b& j% l
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'    //设置某个ip访问某个服务
4 k+ Q2 B& ]; e! v
6 d, F4 u& z! v# v0 Pfirewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //删除配置
+ ]; R( l+ R' f. G% @) h& p4 ~
( Q* d' }4 F" D: \. Y9 Efirewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //设置某个ip访问某个端口6 w3 s6 [2 N/ o+ b, R  \

5 O0 {7 u8 e- ffirewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //删除配置1 {: T7 Y" @+ h6 S8 c1 k$ p" n
( n: g$ m2 x9 a9 Q* v- D( \  z
* d, c2 l3 j# I( V7 Q) `

- X% A- I* K' y+ P- J" C! kfirewall-cmd --query-masquerade  # 检查是否允许伪装IP; Z/ \. \4 ~# D1 i( F: I

8 _9 E) s' q; T2 W# z4 {firewall-cmd --add-masquerade    # 允许防火墙伪装IP5 |9 E/ d7 [0 P9 M. x" ?
% s5 V% a$ i) E  _; w
firewall-cmd --remove-masquerade # 禁止防火墙伪装IP
1 [+ g* D, E. Z* |, ?7 Y. K' Z% U6 Z
( W  f1 A: z! d+ X- @) E
+ B* x! s- @7 e& B7 ^- [9 ^
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080
( Y: g5 F/ h; G7 V# V9 t' r  a% r! T
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
' {$ x. ?0 @, V0 [9 P4 L* J6 |
0 e! R' h- z, Q) N& d0 `) jfirewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口- L7 ]  H) o' S9 u
7 ~) E" [* ], V) r' V/ e$ |
 楼主| 发表于 2022-1-17 11:40:00 | 显示全部楼层
开放指定服务(系统内置的)
. Q' w* I9 F5 ?  _% K5 Tfirewall-cmd --permanent --add-service=http
2 v% J0 K9 L: v9 X6 M. ^- A1: P: \  G" K8 U+ ^0 u, g% V
删除服务& j$ Z5 Q( G( l/ L- v  q6 L
firewall-cmd --permanent --remove-service=http
/ F, c- {& V! l. O* B4 ~' ]* {1* p6 x5 C/ P6 E( T8 ~8 q
添加白名单地址(单IP)
1 y4 O$ v3 N# j: ~9 u8 }1 I  Xfirewall-cmd --permanent --add-source=192.168.1.100
8 a" z) c0 I# b5 g10 _: f& z' Y& R* l+ i* x9 b: _
注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究! a) B+ b* B4 J1 d
) @% X/ W" O8 t8 U2 e# d' ~. B' A
添加白名单地址(指定网络段CIDR格式)2 V3 J7 t+ e8 y- x# g
firewall-cmd --permanent --add-source=192.168.1.0/24; W0 m, J/ }" B+ K
1
4 T/ Q* y7 ]1 ^1 |* j3 q删除白名单地址
6 g! G! W( x9 W/ Efirewall-cmd --permanent --remove-source=192.168.1.100
+ Y8 I# y1 t+ e+ A3 [1 v& r: ~+ V1
. c3 s. D9 ?1 {" ^* t/ N1 P屏蔽指定IP地址6 \2 A; \' S2 O6 y+ m8 }
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"/ d: I2 s# d' ]$ i
1
0 M8 m0 f! O, H& g屏蔽IP地址段! ?, V2 ]  m) L  I( s' W9 z; P
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"+ `) j' {# \8 a: N% C5 H
1
% W( g& d1 C# ~& H* Q手动编辑xml配置文件
8 C. X- b: U( d: w0 `除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效)
* A+ m0 }8 C5 E/ b% N- c& v2 u/ [
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

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

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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