找回密码
 注册
查看: 4792|回复: 5

CentOS7使用firewalld打开关闭防火墙与端口

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-6-22 11:15:44 | 显示全部楼层 |阅读模式
1、firewalld的基本使用
0 z" Z4 l3 S+ V启动: systemctl start firewalld9 Z5 F1 |8 M% F
查看状态: systemctl status firewalld
2 u1 x5 C0 D/ ]' y0 d' l1 E6 Q: l停止: systemctl disable firewalld2 v, k$ y; M9 @6 A
禁用: systemctl stop firewalld( w2 m- @1 j2 K
( U( V) m2 e9 Z& E5 v; E# F
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
1 l  K2 f: b+ S6 e启动一个服务:systemctl start firewalld.service
$ ?# ?4 P- _: P" P6 a6 B关闭一个服务:systemctl stop firewalld.service
4 Q6 U" P& t$ ~7 A) d重启一个服务:systemctl restart firewalld.service* `& ?- B6 S9 `7 d
显示一个服务的状态:systemctl status firewalld.service
* L9 D" e6 o7 k0 r) `2 Q8 S在开机时启用一个服务:systemctl enable firewalld.service6 b* J: M9 A0 x* j
在开机时禁用一个服务:systemctl disable firewalld.service
% {2 N1 B( c2 I: c查看服务是否开机启动:systemctl is-enabled firewalld.service( A: K! n) F9 g9 u' {1 Z! v
查看已启动的服务列表:systemctl list-unit-files|grep enabled
, [$ T3 R6 I" s$ f  c1 f$ r% y- M查看启动失败的服务列表:systemctl --failed. L# u. b* s# j8 G/ \- f3 V
/ d. q" z+ Y) q
3.配置firewalld-cmd: ~7 x2 G- r- N( o
  Y& V7 F" V5 a/ p. Z
查看版本: firewall-cmd --version
( N" ~$ V% w0 g5 {查看帮助: firewall-cmd --help
( ~* |* O6 ^6 _. d. Y* e显示状态: firewall-cmd --state
; p( l. N* o) |% f* x# _查看所有打开的端口: firewall-cmd --zone=public --list-ports
2 q  W% }' ^: a# P# O1 r: {更新防火墙规则: firewall-cmd --reload1 u0 P; C& f2 K, L0 ~! v% T
查看区域信息:  firewall-cmd --get-active-zones
8 C+ ]6 l. V% F) ~9 T5 q查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 ,  firewall-cmd --get-zone-of-interface=eno16777736
( P3 {" G- L6 X% |) q3 f& L& [4 N拒绝所有包:firewall-cmd --panic-on
7 B4 n( ~: r# |8 V0 I! d  G) v取消拒绝状态: firewall-cmd --panic-off% }3 e0 E6 y$ H: `- `4 f% b# ~% ~7 F
查看是否拒绝: firewall-cmd --query-panic* |9 v0 [, c7 k" U- s
  g4 D. e( J/ F3 B! e% t1 O
那怎么开启一个端口呢( n0 t3 k; _1 O
添加8 \" j9 l. |1 k, \
firewall-cmd --zone=public --add-port=80/tcp --permanent   ,  firewall-cmd --zone=public --add-port=22/tcp --permanent(--permanent永久生效,没有此参数重启后失效)
% Q( ?6 V. S& `; ^7 u重新载入3 @- Z, P# W7 \; u' P
firewall-cmd --reload4 [1 h- Q. n3 D0 f+ p3 x. r
查看
7 t5 U. d/ g+ {) W/ Afirewall-cmd --zone= public --query-port=80/tcp
- [0 A2 D: M9 |( e- d删除6 N/ x9 d  k5 g8 O! |* X: c
firewall-cmd --zone= public --remove-port=80/tcp --permanent

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-6-22 11:16:39 | 显示全部楼层
查看firewall是否运行,下面两个命令都可以
% L+ j0 f4 V( x1 C  U0 T. m: G. x- i; c* c: X+ d
systemctl status firewalld.service
: _1 P7 x7 @3 Z8 F- e; b8 q. C' ]* S
firewall-cmd --state& F* H+ [4 K9 U0 A; n2 i& }$ a

- U, e1 L3 j, E: G  S
3 E8 K' n1 \- w
2 o: _- J; Z+ Q/ ~& P) s% a查看当前开了哪些端口
: y1 o5 [3 r- R7 }$ f3 O
# U% b( ~  F8 n2 u其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。$ L( S2 r) ?/ W$ H" m3 F. F4 a

# ?2 C) R# @1 c3 Ofirewall-cmd --list-services
! I1 l6 ^. T1 L: S, R$ i( i4 p
* F: j4 c0 N% m
( H+ w4 e: w) R5 o4 }4 ?, a- S
- ~7 m1 I9 p! H5 }- ^  \6 W% i) c5 w6 I! W* a
5 }6 T. G0 }2 P3 Y* X" }' R, h
查看还有哪些服务可以打开7 j+ l  e% ?) t& m! T1 P0 C
* q) [3 e" @  t1 W: G
firewall-cmd --get-services2 P3 W  @5 c- e' s/ f+ D. W' k
: w  _" l4 {2 L* b0 n! J

* V" p) V  V* P( i4 }9 Z3 \4 a
' T: S( A- O% s4 e, T! b& T0 V, r
+ Z) D$ @7 T( |, f+ x* x1 C; c
7 _- E' f4 H" N. o查看所有打开的端口:   D9 R$ q# A. |) i

7 h9 M5 {7 A' [* [+ H4 [) k0 qfirewall-cmd --zone=public --list-ports
) a& c; j: m8 m" [3 ?* O: N5 Y5 p8 X+ q# t

) }* I, E4 ^; M5 Z0 v8 D
& s4 `+ w, _' o  F! C) r3 `2 ~
/ n4 E1 W4 t  U+ c! F; p6 V0 ], C) g7 ?$ ]

: c" E5 D* {# V( k8 g" K* x  C7 `
. m* x) W) `/ ~8 \" i更新防火墙规则: 2 _; d' z/ g0 k+ W3 `

5 t/ P. k& F  `  \- P* ]firewall-cmd --reload

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-6-22 13:39:59 | 显示全部楼层
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports
6 y+ A! f3 C) q3 [7 m22/tcp
$ v# e: s! [3 E  q" ~0 g5 l7 J6 g  _2 q+ d: x2 o4 ?
[root@dockerserver ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
- U& u+ s! O7 \; q  xsuccess( i# K$ b9 l3 b! m! E7 ~
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports / c+ G5 H5 V* e9 `
22/tcp
. o9 x0 ]# j) G, ^% a[root@dockerserver ~]# firewall-cmd --reload
! z6 E9 [' Z$ Z0 }success2 R5 m1 L2 @7 c4 S" t
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports , k( w; F! ~% ~2 m8 Y9 S
80/tcp 22/tcp  u% q, T! K; }

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-7-6 14:37:08 | 显示全部楼层
下面的是对特定ip允许访问8080端口(你也可以自己改)$ N" x6 Q5 t8 s, i% o" [" j% P
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-7-6 14:39:12 | 显示全部楼层
1.drop禁止特定ip连接ssh/22服务' ^! E8 L# ~% \/ ~$ W# d1 q2 o) ~" F

0 M  ~- Z2 |# G4 p* dfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop"
4 G' F7 n; ?0 z0 L" p4 Y7 b8 x2 v) l/ A4 Ufirewall-cmd --reload
( k0 t. `  m2 D8 e    ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
  ?0 u0 Y) E3 q1 T/ o# a" E- O$ v4 M& m: C
9 ~1 o* p) h' @$ H8 O* D  c1 ^9 A
2.reject禁止特定ip连接ssh/22服务; S% N9 J/ V9 D3 C* [/ [( Q7 M
8 O) t* o3 t$ ]; C- F
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"2 {2 T" k; m: b" o
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"& Q* D3 ^% T- `
firewall-cmd --reload
5 G$ L3 q" C2 ?4 v2 o1 X    ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
  k1 A$ W1 X! p7 @+ d3 a) L/ d
6 e; y  b; [7 A, o7 p
( L& L" {; {$ D% Y5 o* w/ p" v+ s( ~3.accept运行特定ip连接ssh/22服务
# n; n* N/ y+ Q' |, ?8 y. G' Q5 o# f& u& }$ h; v- Z+ U
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept"
5 @) ]' R  y6 r. x; m9 Ofirewall-cmd --reload/ q2 l0 [# A  v) Z+ O) A7 u

0 x' F$ ?% c" d' K9 S! h3 n5 y+ H
, [' T7 c& {. \* R* ^9 L防火墙内的策略动作有DROP和REJECT两种,区别如下:$ p/ L. u: J5 _, q9 l' L5 X* L
1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。
0 Z1 V1 z2 t4 m% p2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
) t6 _8 E( y, N4 g9 G* g5 r4 m ( b/ Y- P% g4 P+ M" _% T7 K
至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。9 E/ [9 L, ~5 m6 I! Q8 W, f

# @: t+ _* `1 o/ F1 U一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。
9 t6 h5 d& M9 J4 O! o

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-7-6 14:46:27 | 显示全部楼层
查看firewalld的状态:/ c$ D# G) m; q6 |) M3 U
[root@lockey Desktop]# firewall-cmd --state- D# k( s+ e1 R/ o0 W/ k- F0 B
查看当前活动的区域,并附带一个目前分配给它们的接口列表:
) A9 Y1 k2 c* y* A( O+ u! `/ D$ t" }$ @[root@lockey Desktop]# firewall-cmd --get-active-zones; i, Q; Q" U3 {
查看默认区域:
! M2 J, ^; \$ F[root@lockey Desktop]# firewall-cmd --get-default-zone! p' Y/ h2 R' {" B$ ]
查看所有可用区域:# u( i! Y) \0 c2 r* W% ?# I
[root@lockey Desktop]# firewall-cmd --get-zones
0 N  {! |+ b6 \. V* C( z列出指定域的所有设置:
. f0 H4 l+ o5 v[root@lockey Desktop]# firewall-cmd --zone=public --list-all5 d. f8 Z4 E) G( W3 z6 x+ F
列出所有预设服务:8 B. ]* S9 I0 r& j: K# A. c" J3 j
[root@lockey Desktop]# firewall-cmd --get-services7 `8 X- X: T; ~  d
(这样将列出 /usr/lib/firewalld/services/ 中的服务器名称。注意:配置文件是以服务本身命名的service-name. xml): Y" I+ l# G4 X1 p2 ^% h
列出所有区域的设置:/ u4 N/ r0 {9 E# D! N2 E
[root@lockey Desktop]# firewall-cmd --list-all-zones  z( }+ j( n' D) `3 \6 [
设置默认区域:
* p* p4 m3 \! P0 S/ i  N: K! w[root@lockey Desktop]# firewall-cmd --set-default-zone=dmz
- ]$ {, D4 F  H" E; P' d. ~" w; S7 X设置网络地址到指定的区域:! K3 q! c% }/ K' I  G! f* S5 s
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --add-source=172.25.254.0/24+ C. s. F3 n3 ]
(--permanent参数表示永久生效设置,如果没有指定--zone参数,那么会加入默认区域)  [7 ~, h. e- u5 d: p
删除指定区域中的网路地址:8 h- h3 x7 \% Z8 c/ U3 G' A7 y2 x
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --remove-source=172.25.254.0/24
% j+ n" U8 z: j# I+ B添加、改变、删除网络接口:
5 \! u  M' C0 {1 b! |6 x[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --add-interface=eth0, [7 y* {+ z" n3 q. |6 d; h
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --change-interface=eth0
. z+ n) B4 F5 U( x[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --remove-interface=eth0& O  h6 u( _8 S5 p" d/ a
添加、删除服务:
9 |2 F2 e: i+ k3 e8 ?( i[root@lockey Desktop]# firewall-cmd --permanent --zone=public --add-service=smtp) ^/ I/ T% i( W/ w; B6 S
[root@lockey Desktop]# firewall-cmd --permanent --zone=public --remove-service=smtp
1 T' m6 M5 z' r  M  g列出、添加、删除端口:
1 L5 \+ @# w' h  j[root@lockey Desktop]# firewall-cmd --zone=public --list-ports
2 E* |) D; a1 k* L[root@lockey Desktop]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
# e/ W' N+ N$ L& N) x[root@lockey Desktop]# firewall-cmd --permanent --zone=public --remove-port=8080/tcp% M9 b. q# V( A1 p
重载防火墙:3 `6 v/ d! j9 T) }& b0 B% e
[root@lockey Desktop]# firewall-cmd --reload
0 S5 W; |) }) B3 o* T* N(注意:这并不会中断已经建立的连接,如果打算中断,可以使用 --complete-reload选项)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-11 23:20 , Processed in 0.020569 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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