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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-6-22 11:15:44 | 显示全部楼层 |阅读模式
1、firewalld的基本使用/ k: S/ n$ x) O" Q
启动: systemctl start firewalld2 {- V$ W  M4 x  A: t+ O8 y0 {
查看状态: systemctl status firewalld - A0 G7 N, @8 p4 }) B% N
停止: systemctl disable firewalld
  ?/ u' ]) R) l- _. x: s& e9 i7 {! B* s禁用: systemctl stop firewalld. {0 J0 H* L* r% h' C7 r$ p0 v* k

1 D) p  E" |0 q$ g/ g' @4 W* E2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。8 i6 s  _/ w5 {4 D  d/ n
启动一个服务:systemctl start firewalld.service
5 o7 h3 f) E, {* A+ a+ F/ {关闭一个服务:systemctl stop firewalld.service+ y2 N) R- h8 a6 _5 T
重启一个服务:systemctl restart firewalld.service" K: k$ O/ H! D2 Q
显示一个服务的状态:systemctl status firewalld.service
3 i+ d8 N( S  o& e; M/ ?+ S在开机时启用一个服务:systemctl enable firewalld.service
% {. Y0 H0 _8 \. `7 H& m/ t在开机时禁用一个服务:systemctl disable firewalld.service" ]/ F- k2 a+ r3 k4 F9 T- q
查看服务是否开机启动:systemctl is-enabled firewalld.service
& Y! i& D% l2 m查看已启动的服务列表:systemctl list-unit-files|grep enabled
# t; O9 K' i$ ^  C7 p, C查看启动失败的服务列表:systemctl --failed
7 ?; v8 A* P/ o0 p( V+ F* R5 i0 w( ]
3.配置firewalld-cmd
, G! I; s2 ?9 [7 n( }$ |
% B' d8 y) {) w0 {查看版本: firewall-cmd --version
6 K( H3 g  E# e6 R查看帮助: firewall-cmd --help
2 Q3 x* ?% C1 Y! h) E) T4 W显示状态: firewall-cmd --state5 M' a" Y7 R& I9 A
查看所有打开的端口: firewall-cmd --zone=public --list-ports
* x+ P3 s$ f1 t5 x8 h$ i8 n& Z5 O更新防火墙规则: firewall-cmd --reload% t7 S2 E8 s% W# w/ i
查看区域信息:  firewall-cmd --get-active-zones% z! z' `- x3 e
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 ,  firewall-cmd --get-zone-of-interface=eno167777369 l9 y, `- |, ^- c! f) A
拒绝所有包:firewall-cmd --panic-on4 q4 a, [: i+ B& X- b2 C: Y
取消拒绝状态: firewall-cmd --panic-off
! |1 L4 F5 n8 o3 l8 X查看是否拒绝: firewall-cmd --query-panic
/ D0 {2 T0 c* {9 Z- ^7 `& \ 3 L+ o4 F" F# V2 `* x7 Z
那怎么开启一个端口呢3 [9 v4 c" Q; L% X9 t9 D
添加
( M) Q1 o( f) N3 ffirewall-cmd --zone=public --add-port=80/tcp --permanent   ,  firewall-cmd --zone=public --add-port=22/tcp --permanent(--permanent永久生效,没有此参数重启后失效)
! `6 d& o8 w$ [) Z1 R2 K3 M( c0 _# R重新载入
/ x& N# q- s% C5 e  |firewall-cmd --reload) c9 [# h! S: d5 O! s+ M
查看
# v# {) d" G: ]" q( i5 Z) O, G1 hfirewall-cmd --zone= public --query-port=80/tcp
4 l5 j( S; h5 B! L9 _, `) O# j5 W. Z删除0 p( Q+ p) G* c7 X/ K+ O# k
firewall-cmd --zone= public --remove-port=80/tcp --permanent

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-6-22 11:16:39 | 显示全部楼层
查看firewall是否运行,下面两个命令都可以' k! x% i% N% C7 e- U5 _

& g# r, `7 y- fsystemctl status firewalld.service
: k- m# B/ F. @5 @! n% n+ Y' Y. n; p- X4 g  I
firewall-cmd --state; o$ v6 v" d, A, \) A1 y1 r

0 }; Z9 e3 F( x
  Q  [, N. o9 @( A
& s, q* B2 v! ~) @$ W! {. o) C7 F查看当前开了哪些端口
3 p% m- X& A0 z) e
2 b) w/ `2 }: [7 O% `4 A$ j: M- X其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。8 X1 b6 l" s4 @7 c5 U
8 p4 h9 F& b' r
firewall-cmd --list-services
9 g7 q9 F. [" I+ z
' b+ {( A% ^) S! c& M, G# i% P
  p; ~! M' K$ b" o% ]: B+ D, m! f; j1 b: \; ]

" a' {% J9 W, p) [' Z! o5 q" o3 T; \3 C. O8 w( ?5 b7 v7 w1 m1 `9 V
查看还有哪些服务可以打开
& ^' I! v5 c8 E  x
8 Y% U! D1 E1 V9 Y/ n! @" b" hfirewall-cmd --get-services: g# T: m+ ]2 ~0 W( X5 ?  U

, L( F" z. p. [$ n, E$ g9 d8 e* c+ u! Q6 M' H" t3 K, P
0 J0 j% [+ x( e& C& @+ u

' V1 L- v9 G  l  A1 Q
3 D, Y$ {% m+ y+ a9 Q查看所有打开的端口:
  X- l. a/ c7 v) ]4 M( X7 G! ^& @. e5 _3 ^  }4 d/ u1 N
firewall-cmd --zone=public --list-ports& f6 H- X3 y' Z  K1 `+ ?. @. Y& |

5 K+ Y* U% X  G+ E+ b! |/ c
1 ^/ ]9 w: M9 Y; R" S* T4 W' L. Y: R- H) k6 N

: ~) s$ y6 K0 B1 x8 j! g1 |. V( i% c% I2 J5 ~# T9 K

8 ?3 k) `6 x$ A/ M' {. }( t3 h/ e* M/ @; m
更新防火墙规则: # c7 x! z; g  ?5 s5 C1 m
: c  n9 I+ V  t! m4 B6 \
firewall-cmd --reload

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-6-22 13:39:59 | 显示全部楼层
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports + z, ^6 A5 Q0 F6 L6 ?4 e
22/tcp
( l& t* A% D8 u: K
  K  J" R% N1 l  h+ {: P3 w[root@dockerserver ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
' }; w2 h' R6 }success
: C* X# ?; w0 H+ e  Q8 C/ F[root@dockerserver ~]# firewall-cmd --zone=public --list-ports
/ ]# r3 Z! H4 C% z' u22/tcp6 e* T6 O8 m2 |" Q
[root@dockerserver ~]# firewall-cmd --reload
, H3 k2 I- N7 s' T" V) e+ ssuccess" U- a3 L* V0 h/ z, l" |* p9 d
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports
, T; \3 z" m. m  m8 f7 a80/tcp 22/tcp. D6 f% D, _' L7 V7 W6 o

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-7-6 14:37:08 | 显示全部楼层
下面的是对特定ip允许访问8080端口(你也可以自己改)
/ F3 I) z6 d, k* lfirewall-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服务
" ?1 H+ J# H4 d+ o5 ^" F5 J' R: }! S6 A8 U5 ^/ @. k
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop"; U4 V9 n- B9 w
firewall-cmd --reload
9 N5 X& I. A9 X  T9 a" g3 I* y    ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
: [" I/ F* M# p" X+ Y- l
6 k& G) E+ a; h
) H% Y$ ?. p: A' w. ?2.reject禁止特定ip连接ssh/22服务
; X$ \1 P5 v7 a; t* S$ H1 @/ [. e( Z  `/ ~8 v1 M" X8 Q
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"
$ @; V6 h8 y+ `0 J' Rfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"- y; R& {: N. a+ w
firewall-cmd --reload4 q% v- O# n& w, z2 S# H4 t
    ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
+ [- y, Z' b+ K9 A* J+ |  b8 G! m* O5 O

( h, h4 z- N$ E6 Q1 W: s4 _3 L* k! C3.accept运行特定ip连接ssh/22服务
+ J7 c7 h. G7 X) q) w7 {  n
& t3 h! [7 k4 i) O3 S2 S- Dfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept"7 G* `! D  J) G" {: [6 Z" h( p! o
firewall-cmd --reload& g% t7 @: n9 d2 C9 R
' W5 L; g# d& a0 B1 Z" o
$ {6 |& E( ]5 ]; f
防火墙内的策略动作有DROP和REJECT两种,区别如下:8 R2 c0 [/ {  L7 o
1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。
( K3 ?* U( d9 t2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。7 ?( G7 j; r, W$ ^' ?( G
6 \$ f) _7 ^0 q: G3 L( t
至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。+ x) b8 H" J' u
/ Y9 g1 {' U4 D- y3 [( O
一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。
1 J4 q6 p$ n- X0 i& v) V2 V

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-7-6 14:46:27 | 显示全部楼层
查看firewalld的状态:" W( A- m# P" V$ {
[root@lockey Desktop]# firewall-cmd --state# m1 \" Y$ v- g$ M
查看当前活动的区域,并附带一个目前分配给它们的接口列表:
- b0 L0 l; @0 `9 z[root@lockey Desktop]# firewall-cmd --get-active-zones
6 I8 [! T# B, H# C查看默认区域:1 u6 }4 L0 V! U, b* P, ^! g
[root@lockey Desktop]# firewall-cmd --get-default-zone% C9 j8 m% U% N4 v* r& ?# I
查看所有可用区域:, G* N9 V5 e, @, a/ f
[root@lockey Desktop]# firewall-cmd --get-zones
$ i, a% _* C. ^2 I5 B+ H列出指定域的所有设置:
$ w& N7 V0 c) O[root@lockey Desktop]# firewall-cmd --zone=public --list-all
4 b, k' u; ?( ^! f1 O* P6 j列出所有预设服务:& {$ D4 S4 `/ W
[root@lockey Desktop]# firewall-cmd --get-services
3 k, t$ y* d, d4 ?) X0 N(这样将列出 /usr/lib/firewalld/services/ 中的服务器名称。注意:配置文件是以服务本身命名的service-name. xml), o" N; |( n1 u4 W9 Y
列出所有区域的设置:
5 p2 t. u) j) Z$ l$ H0 d4 V1 X# @, h[root@lockey Desktop]# firewall-cmd --list-all-zones% X) Z9 U2 S! o7 s2 L
设置默认区域:
; V2 H# W) c# A$ V9 I' L[root@lockey Desktop]# firewall-cmd --set-default-zone=dmz
8 C4 C  }, E9 @% `/ C, a! q设置网络地址到指定的区域:
9 i9 u. n9 \- m3 V[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --add-source=172.25.254.0/244 N$ d3 `6 p6 _! I
(--permanent参数表示永久生效设置,如果没有指定--zone参数,那么会加入默认区域)% P- {/ B% w# s: }
删除指定区域中的网路地址:
1 o# y7 X' a5 R3 m# D. I3 E[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --remove-source=172.25.254.0/248 s, L# I: {) y9 M) G' ~8 E
添加、改变、删除网络接口:$ k! ]" G; |/ d1 M- J; K; P6 f
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --add-interface=eth0
3 L( O& t/ s$ R) y$ b7 z7 e( m4 h$ t[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --change-interface=eth0
: L  g3 k; H' l$ @) R[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --remove-interface=eth0: \  `/ ?$ M1 i7 F$ d' H
添加、删除服务:
- c" D. i& l5 S, E% g[root@lockey Desktop]# firewall-cmd --permanent --zone=public --add-service=smtp
( j+ M; l. H" j, `" \9 w" c; M[root@lockey Desktop]# firewall-cmd --permanent --zone=public --remove-service=smtp
4 c7 O3 {* x1 q0 z' S: ^  v- C) E9 K列出、添加、删除端口:
6 n6 M8 t4 c0 o& q( X[root@lockey Desktop]# firewall-cmd --zone=public --list-ports( G1 Z" m8 |1 V; f: J5 W+ ^9 h/ W
[root@lockey Desktop]# firewall-cmd --permanent --zone=public --add-port=8080/tcp9 c8 w- W" ~1 r$ s
[root@lockey Desktop]# firewall-cmd --permanent --zone=public --remove-port=8080/tcp9 U* g$ n4 s" L1 s- u, A
重载防火墙:" I: S# P& D- R, S* z
[root@lockey Desktop]# firewall-cmd --reload
3 C: i' T) H" X8 G(注意:这并不会中断已经建立的连接,如果打算中断,可以使用 --complete-reload选项)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:12 , Processed in 0.019311 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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