现在对安全的要求更严格了,对内网环境的特定服务器,现在只允许指定IP或IP段进行访问,其他一律屏蔽,配置步骤如下:; ] n+ O3 Z- N, t* R% ~# v$ U9 H
检查防火墙是否启动:
) S/ b& k& v; V z [1 ~# F: Ysystemctl status firewalld.service, x% z7 j! H- d- F1 a( e$ C0 r4 P+ X
启动防火墙:/ h& j# S- C( D! y" |7 b
systemctl start firewalld.service, e6 P. @- q) @
7 U/ X- N! |: C6 i m
% N* S7 [4 r4 w% y开机启动防火墙:% a D2 g0 j. t( X& O+ B% K2 Y
systemctl enable firewalld.service/ J+ Q+ k3 H. w# r* G/ g
8 H' E0 j6 d* h4 f; j' G
+ p8 \( p3 v/ ^8 s# {8 ?$ w$ M修改防火墙acl规则:
5 ^: N+ f M% S, M6 y. b& E2 R通过编辑文件:6 T2 i, |* U8 H0 x
vim /etc/firewalld/zones/public.xml( x0 O1 r9 n3 k$ Z7 z$ v
4 B8 u8 U/ C; ^' }) m8 t& r0 f+ [
<?xml version="1.0" encoding="utf-8"?>& B) q5 b0 @7 Q: [9 D8 O0 p- x
<zone>
% F# p5 X0 j$ U8 R7 A1 \2 [+ W <short>Public</short>
9 Y$ b5 P7 [+ X* g) 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>& M' a& ` ^+ I3 r/ K
<service name="ssh"/>9 H: ]5 k+ ^1 N/ V
<service name="dhcpv6-client"/>9 p6 j; F3 U) t. U8 X, }2 B
</zone>- H4 q; n( d- l5 \- \4 \4 w: N$ b
~ 3 V$ u' [% B3 u
+ j) O0 i2 F" b' u* C& i' X3 T默认的防火墙规则2 D* a& L- ~6 T( y8 ~
- _* i; o" F5 ~. {; D& o' c第二种通过命令:& h7 V& N2 ^" _) t- y5 I
1 |. q6 k2 U% ^# n! m1 d手动开放指定端口
0 Y, i4 X1 e/ B( Z( j8 _7 t% n# y/ j8 w8 H( j8 i& p; ?
firewall-cmd --permanent --add-port=3306/tcp
. W. T3 t8 v* {/ a, L
: P% O' F' a; s3 [5 y/ ~' l改完配置文件后重载一下防火墙服务$ K: A) _0 U( q# p
firewall-cmd --reload
; F9 O* E7 {5 |- e% T% `, M
9 u/ A8 |7 w& r- p7 W1 M& H+ L0 \. ~3 U
基本应用firewall-cmd --state
5 A d: u" t5 m6 @获取firewalld状态) c1 }! i$ P/ k9 U+ t* ?2 E
.9 V4 m* M6 f/ O3 m# ]
firewall-cmd --reload
* y& P8 t& E8 F' k7 s/ |4 K在不改变状态的条件下重载防火墙
( v# ~% C, t9 w.! N( v6 }% j3 n2 G, o
firewall-cmd --complete-reload) h6 i: a7 J1 t
完全重启,状态信息将会丢失
) [ G, ?9 n0 ^.
' ], r- P- u0 t r: Lfirewall-cmd --get-zones# T, P% K: u' M3 H% `7 U
获取支持的区域% l$ U. Y7 w0 U0 z* t
.* M& T5 E n) c$ b- ^9 G% P) E$ Z
firewall-cmd --get-services0 y u* I4 k" a8 V$ ]
获取所有支持的服务,支持的服务存放在/usr/lib/firewalld/services目录下。# ^- [( H/ W8 P* {5 O' s% u
服务是firewalld所使用的有关端口和选项的规则集合。5 P9 }6 O" P& L* H
被启动的服务会在firewalld服务开启或运行是自动加载。
+ q8 T9 S1 F& @" D, B: i7 s我们还可以创建自己的服务,即添加端口和服务的对应关系,将在下面讲解。6 R C0 |# U" R: X1 {6 E
.1 V( o; Z! H E5 E3 G
firewall-cmd --get-icmptypes
. ?( T# k5 I. F3 G, ]' G获取所有支持的ICMP类型4 ~" P1 ~9 k; Y, n/ q
.- G! z4 P4 G t r, ^9 `2 h* |
firewall-cmd --list-all-zones
1 A# p$ y8 Z! F/ O9 F( f列出全部启用的区域的特性(即查询当前防火墙策略),特性是定义的防火墙策略。$ ~/ U/ B8 @/ }5 L6 L/ N' [
策略如:服务、端口和协议的组合、端口/数据报转发、伪装、ICMP拦截或自定义规则等。1 S0 w/ e5 j2 f W! g
该命令会列出所有区域的所有特性,包括详细规则(rich-rules)。6 |& F8 l% x! O# v: M" @) j& S0 B- L
.
. V& q5 {/ }# r. q ~! u( Efirewall-cmd [--zone=区域] --list-all
- ^/ K1 Q2 }, g2 y" v输出指定区域启用的全部特性,如果区域被省略,将显示默认区域的信息。* d! U1 g" W# @ l
.
+ ~" z3 Q$ c; t$ e+ P- Bfirewall-cmd --get-default-zone$ C9 f9 L! W1 Y* @/ ~0 Z
查默认区域,默认的默认区域为public# o v7 c) b, v$ {
.
4 \& n2 q. N$ g1 W. l) ofirewall-cmd --set-default-zone=区域0 z% I) X) n5 T# f2 j
设置默认区域,也可通过/etc/firewalld/firewalld.conf中的DefaultZone配置项定义默认区域。
. {4 D: V9 v# E* ^流入默认区域中配置的接口的新访问请求将被置入新的默认区域。当前活动的连接将不受影响。* j: ~0 u. B. X9 p, a% f
.
# H1 I7 X; `& \6 Q; F1 Z4 ]' C+ Ifirewall-cmd --get-active-zones2 B$ r1 I/ j& A6 I
获取活动的区域,同时会输出活动区域所包含的接口。
; L. | `) p# L- t# d.8 R" w* } [5 |) _( f
firewall-cmd --get-zone-of-interface=网卡名) y# r' {! m2 W W+ O
查指定接口属于哪个区域% i8 n5 X6 ?, @7 l; X. V
.$ c, M$ m: B1 h: `) i+ M
firewall-cmd [--zone=区域] --add-interface=接口名
0 S% S/ n0 y2 T$ C l" s将指定接口增加到指定区域,如果区域被省略了,将会被添加到默认区域。+ }2 Y3 l7 ^- k) w
一个接口同时只能属于一个区域,接口会在防火墙重新加载后重新应用。
4 m& n# N/ ], u* P& @7 }. l7 b.1 T4 N8 j) P5 W5 G) O, y
firewall-cmd [--zone=区域] --change-interface=接口名
/ x- `+ \+ t% e修改接口所属区域,这个选项与--add-interface选项相似。
" z; x. d/ X e( o& B但不同的是,当接口已经存在于另一个区域的时候,该接口将被重置到新的区域。 h4 X Q, K0 i% |/ b+ D2 x: b" g
.3 B* R8 d ]2 N( K
firewall-cmd [--zone=区域] --remove-interface=接口名1 ^$ K- } |. w$ S
从指定区域中删除指定接口,删除后,这个接口的所有数据包将使用默认区域的规则。2 P& g; @2 \1 l0 \
.7 L; |4 P" i/ e* i: @
firewall-cmd [--zone=区域] --query-interface=接口名6 f% {/ X9 ^9 l
查指定区域中是否包含指定接口,如果区域被省略了,将被指定为默认区域。
2 R. I" Z4 o/ z8 G9 k' s.7 [" s, t K9 o [& Y0 |
firewall-cmd [--zone=区域] --list-services) [, p7 A% `; z- Y
列举区域中启用的服务,如果区域被省略了,将使用默认区域。
; n# @0 u, c, v4 ~% P! n2 X.
" ]/ f+ H0 H0 X" b! y Xfirewall-cmd --query-masquerade 检查是否允许NAT转发0 f" M: s/ a# o
firewall-cmd --zone=public --add-masquerade --permanent 永久开启路由转发5 h1 }( A. x. z& w% p
firewall-cmd --remove-masquerade 禁止防火墙NAT转发
( }9 K" R% C% j.6 W0 S7 h8 {$ Q0 B
firewall-cmd --panic-on 启用应急模式,将阻断所有网络连接,以防出现紧急状况。. X+ Q) p7 |4 W x, W5 p
firewall-cmd --panic-off 禁用应急模式
# j% o) r! s' m" Gfirewall-cmd --query-panic 查应急模式状态
- h5 Z" N; a& r) Y." \2 ^. @) f5 |4 y
其它相关的配置可在手册页man firewall-cmd中查看。
2 }5 Z. y: @6 r8 o5 q$ g, {7 E/ x) @% W' H. i8 m" j, ~
|