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