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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-1-17 10:08:56 | 显示全部楼层 |阅读模式
现在对安全的要求更严格了,对内网环境的特定服务器,现在只允许指定IP或IP段进行访问,其他一律屏蔽,配置步骤如下:* Z3 J* W; u1 ^) f* ^
检查防火墙是否启动:9 F+ l, n- s$ L- K) {$ M, ?
systemctl status firewalld.service6 p8 E. Q+ ]7 y/ ]/ u( s3 e
启动防火墙:
6 w5 R" C9 h* n3 W. m5 G) Dsystemctl start  firewalld.service
+ d; x/ R7 T; a7 T; b: v
4 ?" Z( Y" @4 g# s6 Y/ ^- s

& r; X# Y6 `: a. {! T6 r7 q5 U开机启动防火墙:( v# _% e2 o9 ^9 a6 B
systemctl enable firewalld.service8 `/ a+ r0 E8 N2 z/ s( |, N" Z

8 {$ H7 Q3 W( J! t
8 t, m. j! l, K% J/ v
修改防火墙acl规则:
+ @2 c' }) e9 n5 q5 Z! P8 u3 e通过编辑文件:9 n8 K3 L) |3 b8 j+ [
vim /etc/firewalld/zones/public.xml$ w1 X9 n, p& r4 E9 r) C4 k( y4 }, h

8 v' ^4 a4 U& H" G: v<?xml version="1.0" encoding="utf-8"?># P6 C, X- Z! I4 z% A' B
<zone>
+ k0 P9 U, _0 ?3 B  <short>Public</short>
4 w5 ?- c; Y& H# U; e  <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 j7 U- p, M7 b8 k
  <service name="ssh"/>2 ]- a2 z" |$ }' h3 X
  <service name="dhcpv6-client"/>7 o$ V8 L+ I* K- X  r2 |* ~- E
</zone>3 @% e! b) b5 V6 V" T: _3 |
~                  
& B) m: a6 ^  z& I, O( c" c" c( J! m' j
默认的防火墙规则
- n9 U2 R5 o" z7 d/ t3 e' y0 P& v7 N5 F# G/ F8 h2 M* K
第二种通过命令:
& q' ]( i# j" f( P
4 k4 g; Z$ W& J- m1 w手动开放指定端口" {0 [3 D6 J) n" w: V2 c
: ~4 i) r  f% h5 r

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


) R% N$ \4 ?9 \7 i; k; T2 l0 n5 D6 N  `. _
改完配置文件后重载一下防火墙服务+ M9 S- V# M5 M, r$ i! o; C+ ?1 d
firewall-cmd --reload
# d7 Z- _- x: O9 U: B2 K; H) h+ q$ B5 o; q, c! V. |

, Z/ m* S* d, _7 v) l基本应用

firewall-cmd --state& ]( v8 A2 D4 U0 `
获取firewalld状态
5 v( U! B$ e4 Q/ B) H.
6 R  U% d( k( a1 [7 s, K" jfirewall-cmd --reload
  @# Y( }0 j$ E# ^在不改变状态的条件下重载防火墙
$ |6 _# B! j1 w3 c9 z7 H& L.
4 n. k$ P  M: s/ U' a' ifirewall-cmd --complete-reload, ^/ V* x1 \4 [/ J/ U. @
完全重启,状态信息将会丢失
9 l6 ]( k: M9 J% ^! L% g.# b' C) P/ N: ^2 f7 t
firewall-cmd --get-zones3 [$ j, _, C% W% \2 R) ?! ]
获取支持的区域, h$ f3 e/ d3 r" ]
.: f0 y3 z/ ~0 H# q) Z6 M) ?
firewall-cmd --get-services
6 R3 K, J; J) d! J* ]获取所有支持的服务,支持的服务存放在/usr/lib/firewalld/services目录下。
0 \; e9 Z3 i1 Z0 C服务是firewalld所使用的有关端口和选项的规则集合。- V3 q# S" l8 j3 v6 q& s
被启动的服务会在firewalld服务开启或运行是自动加载。5 a; }7 @5 |1 _7 E) x) y* i
我们还可以创建自己的服务,即添加端口和服务的对应关系,将在下面讲解。0 G( H; y: f7 O* z5 D* }
.5 F* F5 H& \. c) F  \$ l
firewall-cmd --get-icmptypes1 B1 M7 d6 o, `. V2 c* k
获取所有支持的ICMP类型  i, `; V9 g9 N" V) u8 U
./ @4 _3 \- O# H5 s6 V  U/ ~
firewall-cmd --list-all-zones  i" t4 A1 p4 m
列出全部启用的区域的特性(即查询当前防火墙策略),特性是定义的防火墙策略。
' F) @& {" n; B1 L# w策略如:服务、端口和协议的组合、端口/数据报转发、伪装、ICMP拦截或自定义规则等。" M) q. P6 E  {/ A$ I
该命令会列出所有区域的所有特性,包括详细规则(rich-rules)。' E* A+ S. u7 L
.
% P" \" Z7 d1 ~7 t$ cfirewall-cmd [--zone=区域] --list-all- |# ^! b7 C/ Y* l& O' N+ ?
输出指定区域启用的全部特性,如果区域被省略,将显示默认区域的信息。
1 p6 o6 I  ~; y9 R. S# ^; s.
3 ^$ {7 u& ?7 c: wfirewall-cmd --get-default-zone
5 a' r, {7 P# v查默认区域,默认的默认区域为public3 C( n- Y8 w8 X- I0 S
." p8 E/ l/ l6 h9 Z. W0 X
firewall-cmd --set-default-zone=区域6 |; W6 t% z, L& V
设置默认区域,也可通过/etc/firewalld/firewalld.conf中的DefaultZone配置项定义默认区域。
0 J: W5 h' s" ?/ a8 k4 e流入默认区域中配置的接口的新访问请求将被置入新的默认区域。当前活动的连接将不受影响。
6 {) p1 K# S4 e. e5 |$ o1 y.$ V% y4 u5 U( c
firewall-cmd --get-active-zones
! V0 p0 g+ i, h8 F" A获取活动的区域,同时会输出活动区域所包含的接口。
& w' Z/ d3 b4 F* x" [' }6 _3 \.
% D. ]% @/ Q4 i9 H* W- @firewall-cmd --get-zone-of-interface=网卡名
" Q) Y/ b7 N8 ], e0 I查指定接口属于哪个区域( E/ j. ~) j; d" _) Z& V
.! B7 P" }4 V# m! ]3 R/ D
firewall-cmd [--zone=区域] --add-interface=接口名$ F3 j3 d; `; N# R2 E: p8 s
将指定接口增加到指定区域,如果区域被省略了,将会被添加到默认区域。/ g9 k5 H2 D7 ?0 _
一个接口同时只能属于一个区域,接口会在防火墙重新加载后重新应用。9 f0 N3 \  G* R" c* o; n; Y
.: U6 f. n9 t  \, F& a& ^4 j+ F
firewall-cmd [--zone=区域] --change-interface=接口名& Q# K' {! T% D3 ~+ G) ~! l3 x* H
修改接口所属区域,这个选项与--add-interface选项相似。' f) {- N$ l9 a& E* A3 T. K( i, x
但不同的是,当接口已经存在于另一个区域的时候,该接口将被重置到新的区域。
7 y6 T; V% |, E4 S.
' h/ {4 ?2 U/ [, f  o  r& q7 Ifirewall-cmd [--zone=区域] --remove-interface=接口名
* Z6 A& ]4 N' M4 u* S从指定区域中删除指定接口,删除后,这个接口的所有数据包将使用默认区域的规则。6 x3 R& d3 o8 k' D
.
/ N( |6 ?+ J3 W% t* lfirewall-cmd [--zone=区域] --query-interface=接口名( d, G: x' H/ ?) t
查指定区域中是否包含指定接口,如果区域被省略了,将被指定为默认区域。
7 r* k3 ~+ u, b2 n.
0 b, ?; W! N9 z- rfirewall-cmd [--zone=区域] --list-services
  q7 y$ G1 f1 d8 S" S5 x3 R列举区域中启用的服务,如果区域被省略了,将使用默认区域。7 R0 \" t! Y  e3 [$ r
.
- |) G8 _' }) W* q' e9 \firewall-cmd --query-masquerade 检查是否允许NAT转发
. q. Q3 D- _) X$ t3 O  x7 \: hfirewall-cmd --zone=public --add-masquerade --permanent 永久开启路由转发
3 [+ p& r, j' Q1 R! d6 afirewall-cmd --remove-masquerade 禁止防火墙NAT转发
/ ]6 t$ e. B# s9 ]+ G9 }# J: E4 x.
& S! k5 |9 Y5 D, k% hfirewall-cmd --panic-on 启用应急模式,将阻断所有网络连接,以防出现紧急状况。) r/ i5 l8 b1 H6 d: i
firewall-cmd --panic-off 禁用应急模式
+ r6 ~( L5 q, q: e5 w7 K. }# l! Sfirewall-cmd --query-panic 查应急模式状态5 E" L- k: ?* ~) L' [" @  }
.
8 h) p+ T' b4 \7 [其它相关的配置可在手册页man firewall-cmd中查看。

* c$ d5 y( m; I8 z  |% ^0 l5 H6 {

: c' s; c; Q' h' F6 W

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 10:21:23 | 显示全部楼层
firewalld默认为我们提供了9个区域,默认就有一些区域是有效的。这些区域按照不信任到信任的顺序排序,如下。$ q4 |2 C, h( O( l/ c+ R
.9 d  ^+ n5 \& V4 `
起---------------------------------
$ e* }# W' p/ _% R3 x丢弃区域(Drop Zone)
% Y* M; G' t- S# q# j- g* ~0 P, M如果使用丢弃区域,任何进入的数据包都将被丢弃。
! E$ ?' }! C3 \4 ]0 G8 L, v这个类似于6.x版本中使用的iptables -j drop。
& L' P9 T! S& N7 t! O使用丢弃规则意味着将不存在响应。
! F0 R0 Y# P0 [.3 V" b$ E8 p& R* L  F) b/ M, J. I/ U
阻塞区域(Block Zone)
, R; ^1 G" n; w阻塞区域会拒绝进入的网络连接,并返回icmp-host-prohibited。5 Z2 F1 q& O% m; j
只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。! W* w* P, w( K# W* o: C
.% n* E" k3 s% b7 `& d1 u
公共区域(Public Zone)
7 y: [% M! ?2 X  C! o# \只接受被选中的连接,默认只允许ssh和dhcpv6-client。' g% U8 g+ s- l: c
这个zone是缺省zone,即被默认使用的Zone。& o1 G; v: n. R. G. R
.
5 W+ l1 P7 l6 J% D5 h外部区域(External Zone)
. Z/ b2 D, X  E3 [( `只有指定的连接会被接受,即ssh,而其它的连接将被丢弃或不被接受。
, A# [  Q4 u5 L) P7 B这个区域类似于路由器的启用伪装(masquerading)选项。4 I1 F, d7 A/ m; I1 H+ R
.
, O6 x3 |6 y* L6 E+ k& k5 \/ E隔离区域(DMZ Zone)
% w8 b1 q) ^% d. r$ {2 `0 v- O6 b该区域只允许被选中的连接通行。% E: V  \+ Z% J+ ~' q) n& o. m& L
如果只允许部分服务能被外部访问,可以在DMZ区域中定义。
) T% N# }2 T6 ]( d7 c, d+ z6 F9 J.
( J0 h- Q  H! J9 O工作区域(Work Zone)
( P- n* t" n) T. g( E  f* s在这个区域,我们只能定义内部网络连接。
6 ]' f3 m) e* t$ y7 }' W5 ]  b比如私有网络通信才被允许,只允许ssh, ipp-client和dhcpv6-client。9 Q" Q7 i: P- _" L3 I
.
& `6 E: N/ p1 _家庭区域(Home Zone)- G4 d" j3 g) j; D1 y' M
这个区域专用于家庭环境。
* ]6 u4 B4 u" j2 f4 z9 C( h& L4 a: ^它同样只允许被选中的连接,即ssh,ipp-client,mdns,samba-client和dhcpv6-client。
' M" c9 i5 r5 M3 R.0 R8 c) }/ }+ K0 n; A2 z
内部区域(Internal Zone)
+ Y3 P) J3 I3 f3 D7 {这个区域和工作区域类似,只有被选中的连接才可通行,和家庭区域一样。$ o/ I, ~1 g0 I
.$ u" W( u: U: l( W. k1 H5 @9 k) I1 k
信任区域(Trusted Zone)* k( B: _! g- X+ r1 _
信任区域允许所有网络连接通行。6 [! [5 U$ ]# q, k1 X+ d
切记:trusted区域是最被信任的区域,使用该区域时,在不做任何配置的情况下允许所有连接通行。
" i/ k: x0 }8 w--------------------------------------始
$ M' z0 F8 ^5 F# Z.
2 s- d" y* R$ h8 L以上是系统定义的所有的zone,但这些zone并不是都在使用,只有活跃的zone才有实际操作意义。! B7 J1 n1 a; Y; k
* O6 N, q/ }3 d# V. b: f. c) z
Firewalld 原则# q# h1 F# v5 a
.
+ ~" b+ o' a4 P) D8 R当一个客户端访问服务器时,服务器将根据以下原则决定使用哪个zone的策略去匹配。
; ^& Z' @7 e. x* m+ U.
2 h) `0 u) b3 H  G1
: G( D9 s+ \  }& I如果这个客户端数据包的源IP地址匹配zone的sources(来源),那么该zone的规则就适用这个客户端。
/ F, E( a' ]; }' E8 @' q7 Y& i注意:一个源只能属于一个zone,不能同时属于多个zone。& ?% r1 v. ]7 ]( c8 D2 e
.
2 Q4 \1 N' i4 `2
4 n$ v9 f. I8 x% l- ?如果这个客户端数据包进入服务器的某一个接口(如eth0)区配zone的interfaces, 则么该zone的规则就适用这个客户端。
, k) K( W. |  d一个接口只能属于一个zone,不能同时属于多个zone。5 d9 u5 j: H1 Y) F
.
$ z) `7 @/ z6 v( i: p" ~0 {34 s( s# C, P" I! J- v
如果上述两个原则都不满足,那么缺省的zone将被应用,即使用public区域。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 10:24:43 | 显示全部楼层
实现过程
( N- k, R3 s6 B  W: a1 n- `
" X: f" R+ S7 o9 F4 U) Z" J( i0 h! s下面的命令将配置192.168.1.0/24整个网段的IP允许访问服务器的22端口
0 d+ L6 I' X/ S; F+ e" G6 {5 G: k9 u- B% f. X
( a  R1 [* f# o! S, L
// 先移除默认开启的没有访问限制的ssh服务
8 A& w$ r1 ^4 d# o4 r% C) c# firewall-cmd --permanent --remove-service=ssh
2 g4 b- J9 l" `: \, H+ V- K// 添加复杂规则,只允许指定IP段访问22端口: x- D' ]9 N+ v. D( T
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'& ^! }8 ~% A, D+ C
// 使上面配置生效1 e  c" Z1 D9 h, }# u
# firewall-cmd --reload* M( L* J2 n8 b' {( \! a
// 查看当前配置信息
# i3 e6 N( Q& W; `. y# firewall-cmd --list-all: A8 C3 m, k3 H- z" M$ _

2 B4 D( l" v1 w9 ~2 H0 s0 V备注:
4 j. a' E3 a4 o7 A: g source address也可以设置为单个IP地址,例如192.168.1.1/ J: e7 ]3 ]/ \& D& A% R8 K
port可以为单个端口或端口范围,例如1-10000
; I5 k- d$ U2 x9 g" G, I& c) y" w0 Z. p1 Y5 V+ Z7 k

0 J* ]' x2 L. C3 s: ~! S( Q
# t+ q+ r$ J! A* f其他常用命令
" C3 o9 \: b0 u$ ]% j4 Z- q( p  @   L8 ^7 t, s0 U2 }4 Q
删除之前的复杂规则,这里的内容需要与之前添加时的rule内容完全一致,可以复制粘贴过来0 ?: D  C2 G, O# z9 ?6 U3 l

7 P5 @, V0 g# Zfirewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
2 ]" J6 j7 i' Q
* E9 @* ^/ N3 }& u3 W- H8 s  u手动开放指定端口
+ d* F6 {; h& q' E
+ E1 K- r: n% h( l+ bfirewall-cmd --permanent --add-port=3306/tcp- J* p0 H& [0 N

* I: W2 u5 N' h) d( `( I5 Y/ y删除开放的端口6 ]' S5 f! p! I: b1 @% w& x' M
9 _( ]% P5 g0 ~; Z
firewall-cmd --permanent --remove-port=3306/tcp
3 A$ ?( e5 k" u( c2 H, T9 c
# u0 B, S4 [' J) Z开放指定服务(系统内置的)
& U1 \, P6 b- a- M) Y: k
0 ?2 S& Q9 \' P- Ofirewall-cmd --permanent --add-service=http
# r# I6 H$ ?5 h% c* j% A + O$ ?! `1 t: X4 M, u
删除服务$ k: i9 H: Z; |' g; O% G2 P

: F3 M0 \% _4 f, ^( J6 M6 _. t3 c3 kfirewall-cmd --permanent --remove-service=http
- ]1 @& N7 @% [ ' A# k9 o8 ~( O) j  Q: c/ w% A) Y" M
添加白名单地址(单IP)- b+ X0 u; F. O( d. e$ o

) ^- G# s6 F1 J; r8 S6 b7 ifirewall-cmd --permanent --add-source=192.168.1.100
: P& ?" k" A. K5 w" q: B5 W
9 @" ]: ]6 n2 v8 v) D4 P; e注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究# `. K) Z( E5 ^% Z' v; V: X3 V

* I, g$ n" {5 | 2 G6 ^0 D& r' Z! x* Y9 _3 G
添加白名单地址(指定网络段CIDR格式)& T2 G/ N7 R. K# E+ x8 o; L
6 [5 [2 v0 N+ @4 ?- q
firewall-cmd --permanent --add-source=192.168.1.0/24
' Y  }, J! U/ U/ K( x1 b , x- \8 z% H# }; }9 n
删除白名单地址
: d) u$ p  N, l% H( B, A
0 N3 A9 h3 U  q" ^6 T' d+ N2 q: I! Dfirewall-cmd --permanent --remove-source=192.168.1.100
- e7 t2 x! F$ E% w1 T) Y1 y; F* B; M
" F+ t" [  e* l3 r1 s3 o: H" b5 d3 O屏蔽指定IP地址) P" z& o, X+ M/ r& I. M) B' `
5 Y" {( m) ]7 S3 l( q- c; ^4 i) v
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"" t: ^8 m5 G" x$ t! z: J% Y# k
8 p4 P. }) _5 j5 V- E
屏蔽IP地址段
4 b9 a$ y, f5 r( k 0 P- [6 [$ D+ X( B8 n6 M; y9 F; c/ K
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
. X- v0 P: x9 a4 T1 N% q
+ ^% m% L8 Y1 D; z" I5 a手动编辑xml配置文件9 ?' X% e& Y% F# C

/ [# |6 S. }0 H! @9 a. G除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效)

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 10:26:05 | 显示全部楼层
1.firewalld的基本使用: @# Y0 B! r' z+ L
; i$ K& r7 x5 N# L+ e' u
启动:  systemctl start firewalld  D( K# l, d, [$ d

9 ^+ T3 {5 g$ [# W6 U查状态:systemctl status firewalld
- @* T  v* k: M- U$ g# D9 d2 [, V# c* G! P3 a! j0 Y
停止:  systemctl disable firewalld# r" N  Q. D& T  R  H5 Q* f

: K0 g& ~  u. x禁用:  systemctl stop firewalld; ?" i" r9 T+ [/ w/ ?

) t  L2 V1 U8 }在开机时启用一个服务:systemctl enable firewalld.service- s4 d9 I0 _0 I& m

) a8 G3 S/ J7 ?) X! M7 `在开机时禁用一个服务:systemctl disable firewalld.service; F( m, I, {2 r6 B
7 b& U, G$ U7 r$ f- ~6 O
查看服务是否开机启动:systemctl is-enabled firewalld.service" \5 U% q% i# x  _+ j2 i: u
5 B# w1 J) P' ]$ W2 }+ L4 S3 R" ~8 {
查看已启动的服务列表:systemctl list-unit-files|grep enabled
. W0 e9 N, A7 B- T" v$ O/ U' l. |4 Z4 E/ w, C+ x( M7 v8 ^# Q
查看启动失败的服务列表:systemctl --failed* P& T* O; L; ]

. A. C7 L# ?+ a0 t- Q2 `3 ]! n! F" A) g% p; n% f/ l" }. n
( E% d, r. E0 [% O9 @1 \% @
2.配置firewalld-cmd: y8 k: R% {( x% V& K
. `+ C! K* o7 i; _1 `
查看版本: firewall-cmd --version) o) e. O+ `$ I5 A

8 T1 K  h( Z3 J$ }4 ?查看帮助: firewall-cmd --help
( I! f* r$ f7 x% x" Z, u9 V- b: A- O5 e0 ?
显示状态: firewall-cmd --state
6 f# \9 a" R% x# f4 w; t, B& |. Q% f
查看所有打开的端口: firewall-cmd --zone=public --list-ports
: ^" W9 G' @* [9 X7 v' u3 e" [1 B" ~/ }' Y, |' b' ^! @
更新防火墙规则: firewall-cmd --reload
* F3 B, Q/ r2 q. D7 m
% J: F8 O5 P9 w% p4 ~: l查看区域信息:  firewall-cmd --get-active-zones
$ x4 d4 T6 U" i, P% N) d! V; R# [7 ^2 U/ B$ G8 V5 Z0 v
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
1 G$ t) v: E5 `; u0 J5 ^- a  A% ?* o
# y* t& K% \4 R5 X! c! G+ R) {4 C: |拒绝所有包:firewall-cmd --panic-on% d- K& {5 ^# M$ Q

$ T2 _# f& ~+ \0 ^1 q取消拒绝状态: firewall-cmd --panic-off
! l9 F2 U+ W/ V0 R  _( b: P/ U' r- g" @0 d
查看是否拒绝: firewall-cmd --query-panic
; ?5 I/ t* `: {1 t4 }* t; l0 `. h6 C1 R+ }7 @2 \

  f6 J" U( I) Y& ]+ S! j* Y1 v
. N5 U/ d# d8 u( w/ ~: H. V3.添加/删除  一条规则
5 J# q1 ?  t5 h: s2 A; a' v/ O2 w6 t/ k' A2 j, o2 u

! v# H- q" N( C2 m( N
3 v5 q+ K2 X2 F8 Y# g& x. \; ~添加3 Q; E7 E' P$ S" {! X/ b2 U

, {3 R7 W3 O& l, h) R+ j! rfirewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效), A) K0 s  F+ j) f% z. A. ?

  D0 n" ]( z) S7 Efirewall-cmd --zone=public --add-service=http --permanent
* d- a$ @! ]" n  W( W% f8 D0 p3 Z; {# P
firewall-cmd --reload    # 重新载入,更新防火墙规则1 x$ Y$ k+ Q- E
' v' t5 Y/ z6 @# b$ Z
firewall-cmd --zone= public --query-port=80/tcp  #查看
! `9 @2 L( F( }% L$ c7 [7 m2 F1 }/ A( L+ u( V2 R0 }

9 G* g: g8 |6 Y6 \$ u# k3 P- I
3 J; n0 Z) g2 L  M' ^$ R# u$ d删除2 u2 Z$ h  z+ }2 B7 s

( N% ~, o% L( r# D5 E5 c8 Bfirewall-cmd --zone= public --remove-port=80/tcp --permanent  # 删除
* E& A8 D( D1 O$ k9 a) U8 z, ?* X  @: |( W0 t5 O% s4 d

* U$ ^* \# p6 a
* E  o6 H3 T6 L  w/ @$ h9 w' M# e; D# Tfirewall-cmd --list-services
" Y0 J$ Z. W+ j/ y  y- o' O
' Z% j) `# y/ g* f. L/ kfirewall-cmd --get-services: C' ?/ G9 D4 y6 c
/ m/ f: L$ ?% h! ?$ y
firewall-cmd --add-service=<service>% A7 e4 z# @3 f8 [( l" ?
) Z* y; l4 B1 w1 l; P' `
firewall-cmd --delete-service=<service>9 v3 W/ W9 X3 D9 u& o: x  u
0 x6 i/ l4 g1 C8 R
在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载) F4 `: T3 h/ }" H1 ]+ y

0 ?! u2 R$ [! ^! G) k6 `使用命令实际也是在修改文件,需要重新加载(firewall-cmd --reload)才能生效。+ {7 W; z; B, M' m
9 Q3 N- U5 z5 i
/ {* Z) n# u0 [  W3 Z: E
. p2 i1 ]5 o2 @2 o! g
firewall-cmd --zone=public --query-port=80/tcp
# N- F- ~2 V5 r% G3 _5 D
1 E3 Y9 ~, ~" B# G5 xfirewall-cmd --zone=public --query-port=8080/tcp" o& D, P: v. D: Z" o
% t7 H8 F& b2 d1 \5 X) D$ a. e
firewall-cmd --zone=public --query-port=3306/tcp
$ W, t! h/ u* J# c- ?2 Z9 _4 I0 E( Q
firewall-cmd --zone=public --add-port=8080/tcp --permanent
& ?$ B3 Z/ m; |' S5 E% x
) ]% m  j% m" Hfirewall-cmd --zone=public --add-port=3306/tcp --permanent9 S$ h& C* |) N2 P; k( t

. C* u% t. I3 [# o. E7 A9 |firewall-cmd --zone=public --query-port=3306/tcp5 \/ K( a" u- w1 L$ {- |0 W
/ ~7 A  j' K) h! T
firewall-cmd --zone=public --query-port=8080/tcp
/ E% d9 }* Q4 C1 X5 g3 R9 b( j/ k6 _3 T% {; L8 P9 \1 I, I4 n' e
firewall-cmd --reload  # 重新加载后才能生效
4 U. u. S0 ~. i& N# e& Y/ z6 S) k. a) ]" K
firewall-cmd --zone=public --query-port=3306/tcp
- c1 t4 ]; J- I
8 u; o* c2 Y5 ^9 vfirewall-cmd --zone=public --query-port=8080/tcp
. [0 O4 s* l0 Y5 U$ s
4 z, z8 d+ f' y; a1 j4 f3 K; o+ g! j' D7 d8 k) K" \. `8 o
  I3 Z( P$ N- y, Z* W  H" U) `8 f" I
4.参数解释
1 W% o; s( [# l1 h4 c5 w5 X
* H* [2 c* |7 p# U5 l/ D' {/ x–add-service #添加的服务$ ]+ \/ i( ^, [6 |# F% X3 Y
8 }6 t" R1 W2 Q/ s! M
–zone #作用域
$ R+ A$ M' z/ F6 {" l1 p
# k; x+ @( e% V$ f7 [5 w–add-port=80/tcp #添加端口,格式为:端口/通讯协议1 I. U$ _( Q. C* e

* W: F9 J8 z0 h6 O( c# v. b* k–permanent #永久生效,没有此参数重启后失效
" k0 D+ @& y" f8 {, a; D9 v1 K& @/ Y  J+ [' F

0 Z3 s. s& B1 C$ c  n/ t: W; v1 r! K, q: T. C  g. a( v8 \% \
5.使用举例
% x5 j  X& s9 N5 g$ T% w% u( m: `; |0 S' j1 }8 U+ O
4 Y( `% k* g& W9 P; N0 q
# N+ y" c/ M8 x; m
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'    //设置某个ip访问某个服务0 r  T! {: W2 ~
! _; s/ T( ~# E; b9 ]
firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //删除配置
' D4 j9 I1 P4 ?6 Z5 y% [/ S6 [+ Q" V' U* u5 H4 X9 K' y1 w7 B
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //设置某个ip访问某个端口- i* `, F. v+ d2 m1 A3 r! [% d( e

# [1 O! z" b4 b4 i  @firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //删除配置7 |$ L! L& V, o' M# ^9 ~/ ^) f
( Q  r% d6 W$ I. j5 Y

9 ]3 W: ^3 W. z3 K8 x
$ R! T/ v6 K0 z# A% qfirewall-cmd --query-masquerade  # 检查是否允许伪装IP
3 y7 U. H) `& i" s  u6 ^/ o3 B% k3 v$ j1 h$ }* k# J
firewall-cmd --add-masquerade    # 允许防火墙伪装IP
* d8 l7 S8 Q6 Z0 b/ f8 ~1 c2 E& c3 D: ?7 I: R1 O6 l
firewall-cmd --remove-masquerade # 禁止防火墙伪装IP. J' H0 C8 O. M6 I! r' X, P
6 j- L' {$ K3 Q; p4 e" C

  _) K3 p8 q& F" G: I" K, D
# r1 H: g! y0 O/ v1 r1 Ofirewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080( d( M( H6 D7 X4 k5 ]  D

1 E2 L+ }) N( w- nfirewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1  V, J6 D! \5 }; x

  z3 l8 F; h( t( |7 I; ]firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口
) {% R6 B) v, B' h! n# z0 N- T1 ^$ |% |
! @5 x0 G2 c& w5 `& d$ Q9 g5 J( G

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-1-17 11:40:00 | 显示全部楼层
开放指定服务(系统内置的)0 u" M. z. ]6 V4 e
firewall-cmd --permanent --add-service=http$ E8 a% m5 H+ R  ^
1  y" S  m4 o# O
删除服务
6 k2 C9 s; ]% s$ h+ p, e1 efirewall-cmd --permanent --remove-service=http
0 }! M- e5 a0 J3 U4 o; C1) }+ M1 B8 D, ^, w- y( F
添加白名单地址(单IP)
9 g( z, {+ J; O) z, Lfirewall-cmd --permanent --add-source=192.168.1.100: J( v' |0 V9 v+ e' E* S: K
17 X$ @9 q7 j" e( ]: x/ _
注: 白名单中的IP可以任意访问所有服务器可用的端口 这个白名单的作用不是这样的,有待继续研究: o+ A7 `% M, B

4 A2 ~; z* A! Y! Y; b& u4 |. [添加白名单地址(指定网络段CIDR格式)) g, X" s9 U1 J" H  u4 G! A+ y& h
firewall-cmd --permanent --add-source=192.168.1.0/24
4 i9 o/ [7 S- t# i$ U7 J. ?: ~1# p) w  Y& B9 e
删除白名单地址
: o  N! D  O4 _8 \firewall-cmd --permanent --remove-source=192.168.1.100; n5 O# Y# Q& @  ?% L2 a
1
" _3 V) I( W- d屏蔽指定IP地址3 B7 {9 Z# z4 `7 F1 C: F
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' reject"! o  F% H3 p/ u1 D1 J
1
4 S9 _9 y1 \2 Z" S. V7 c屏蔽IP地址段
* Q' ^. _1 ~! K5 Z# p3 e, o: zfirewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' reject"
/ c$ S0 H8 H# ?3 i+ i1
+ ]2 z" k4 Y& o: }. S+ _( D手动编辑xml配置文件
4 @3 G% r/ E0 X1 m. X除了上面的命令添加规则外,还可以直接编辑/etc/firewalld/zones/public.xml文件(改完后记得执行firewall-cmd --reload生效)0 A- a1 {. F! L, [8 _
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 04:24 , Processed in 0.018869 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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