现在对安全的要求更严格了,对内网环境的特定服务器,现在只允许指定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 e4 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: Hfirewall-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 |