将设为首页浏览此站
开启辅助访问 天气与日历 收藏本站联系我们切换到窄版

易陆发现论坛

 找回密码
 开始注册
查看: 3656|回复: 5
收起左侧

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

[复制链接]
发表于 2018-6-22 11:15:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?开始注册

x
1、firewalld的基本使用
, N' _; B5 J2 D启动: systemctl start firewalld
, f% o, H! u% X9 Q8 a. q5 h查看状态: systemctl status firewalld
  a' H0 y2 _7 Q7 T1 W# c( T停止: systemctl disable firewalld- `9 n+ l4 b. @
禁用: systemctl stop firewalld
# h" n& q& D7 d4 f1 ?# _ 2 k+ g1 t  {, S. ~
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。0 K" N9 t# G) n0 X& m$ {
启动一个服务:systemctl start firewalld.service. M& k) d3 o3 \0 T: `
关闭一个服务:systemctl stop firewalld.service, N; o) ^/ W8 {$ \8 I  H; [3 _  z# Y
重启一个服务:systemctl restart firewalld.service
5 @9 w. S* e* [# N% x/ J7 p' a6 d显示一个服务的状态:systemctl status firewalld.service
% K& d9 ^: V/ `% s9 z在开机时启用一个服务:systemctl enable firewalld.service, y# b7 c1 W/ |
在开机时禁用一个服务:systemctl disable firewalld.service8 \# [! V! I- [
查看服务是否开机启动:systemctl is-enabled firewalld.service% q5 Z4 o1 C6 e, Y! h! C
查看已启动的服务列表:systemctl list-unit-files|grep enabled; Z. U. a; C" P3 L0 m
查看启动失败的服务列表:systemctl --failed% n) c6 r+ O0 w- I. S

, \9 J) Y, \; |3.配置firewalld-cmd
7 v+ k7 L5 W$ v4 I& }$ t2 M
: x% v" o( q; t+ z查看版本: firewall-cmd --version
2 n1 h/ w! d5 U1 b5 V8 l2 E7 l查看帮助: firewall-cmd --help3 ]5 Y' n/ _8 K; ]8 @; Z* d
显示状态: firewall-cmd --state
# E/ l1 K3 T  D/ \% ~- \+ s查看所有打开的端口: firewall-cmd --zone=public --list-ports
+ W0 C; _$ \$ Z0 w9 B7 @更新防火墙规则: firewall-cmd --reload
. F7 ~/ q9 }8 S' ?& N2 S3 z: p) j查看区域信息:  firewall-cmd --get-active-zones6 @; r9 i. F% p1 }+ r* z/ R
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 ,  firewall-cmd --get-zone-of-interface=eno16777736% J! p" `2 t- H1 y
拒绝所有包:firewall-cmd --panic-on: s9 ]' Y' K9 y+ Z! U- P! }; q) e! O
取消拒绝状态: firewall-cmd --panic-off
& `7 p2 U  b8 Y  g! j查看是否拒绝: firewall-cmd --query-panic
, L, R& o2 z1 t: X" K7 _, x
6 v% s4 ]# F; s. q3 k  D. `那怎么开启一个端口呢* [: N1 K  h7 J0 g- t2 A$ Z
添加
) m  ~* w& I9 q$ `! K  @0 `+ q& F4 Jfirewall-cmd --zone=public --add-port=80/tcp --permanent   ,  firewall-cmd --zone=public --add-port=22/tcp --permanent(--permanent永久生效,没有此参数重启后失效)
" c  f8 K" |. Q" D; A- y% B4 L重新载入
9 P0 r# T) g( M" |0 i6 o, {firewall-cmd --reload. a& o# S' s, g' \& _' D0 `
查看
! q4 L# f9 [! L5 k; p! sfirewall-cmd --zone= public --query-port=80/tcp
  _5 ^7 s2 M4 F2 q# {/ X# V删除
) _6 X. R8 O- d  j( Q+ C, {# b: i; Cfirewall-cmd --zone= public --remove-port=80/tcp --permanent
 楼主| 发表于 2018-6-22 11:16:39 | 显示全部楼层
查看firewall是否运行,下面两个命令都可以
+ I# m+ I& f) q# M1 K) \+ I9 F/ O! J& s5 }
systemctl status firewalld.service
) F5 K; L; [2 u! e  B/ A9 S
8 c$ [3 O6 t; e1 P+ B3 Y' _firewall-cmd --state; k- w! s" E( N  E% j2 C/ W

2 F! L1 U/ u: v( ?( m  Q! q, a: j6 Z4 g3 Q7 c7 `5 S
' I& a( W; q9 b4 K" |
查看当前开了哪些端口* A$ M- W% h! A- A, E0 ]

: O  u6 U7 q' C$ [5 ~7 s其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。2 C+ ]9 ]9 @4 [. x/ _
$ ^) O+ ^1 X; c
firewall-cmd --list-services& M6 h/ j/ ^5 h, ~
$ b5 k4 E' K" |1 o- V
$ ~9 d  X' G4 N
# I7 t3 V9 n, T$ ?8 o& d7 \  o2 k

; [% z1 _% A" Y, A
9 Z3 p  g7 y' r. D查看还有哪些服务可以打开. K9 \, n& t  R: h( }2 v8 M' t; ]

0 w! |4 Z9 i6 \3 Z/ Xfirewall-cmd --get-services
! W6 V9 }3 N& p: p' Q. F2 R; X) x( j! Q" B* z# ^/ i/ ?

9 R5 r; A7 I. `# n& p: Y2 z8 Q9 d1 {6 U

5 H% u( t  k/ O- h  G' i( i/ s/ ~0 }6 {
查看所有打开的端口: 3 n6 O. e/ t  U
: s' O. y: C9 {4 @
firewall-cmd --zone=public --list-ports# p3 \' V# p  S; V* U; G

& g( P1 z. v  c0 ?( B0 Y. s7 V9 o
. ~* Y5 n2 d- r- O2 t
+ k8 f' V0 a4 h$ r& j: R6 `% {  \4 p7 ?
5 r8 |1 b! H, p5 M% {. A. Y" @  C/ U+ I

/ h9 s$ ]( `! m+ I
7 i, T) x1 j; [( ^更新防火墙规则: ' g5 d/ a+ }- M1 Z# y3 N& m

, s; O  V3 J' c8 }firewall-cmd --reload
 楼主| 发表于 2018-6-22 13:39:59 | 显示全部楼层
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports
. r! N! j& i2 ^3 N+ F* n# P+ {$ o$ I, K22/tcp
+ t5 ]$ L. r' u/ V  _6 `
8 k' ]" T+ Q: M6 C8 {) T[root@dockerserver ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent8 T& ^0 S* F/ h$ K- ?1 [
success
% b$ J" |6 @$ C- e# z; \- t[root@dockerserver ~]# firewall-cmd --zone=public --list-ports , c% c6 u; `' i8 t
22/tcp& F* z( @& d! _5 I' b# R, c
[root@dockerserver ~]# firewall-cmd --reload
  W9 i  x- z3 E! p' {& m/ {success1 t& {4 W4 K$ d
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports . l+ q- ]. g: M$ T
80/tcp 22/tcp
  Y  P. [0 p' [
 楼主| 发表于 2018-7-6 14:37:08 | 显示全部楼层
下面的是对特定ip允许访问8080端口(你也可以自己改)
" O* l( K2 b0 G% ]- s$ ifirewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"
 楼主| 发表于 2018-7-6 14:39:12 | 显示全部楼层
1.drop禁止特定ip连接ssh/22服务4 p# a; x$ R3 e* A$ y. o

6 d% ^1 I" y; i' E3 k( lfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop"
' P5 f$ a9 D4 zfirewall-cmd --reload' \% o# Y4 t4 I! J9 K
    ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则1 F/ `2 K8 @; B& u/ X6 d

: G8 h' T. e% z) {7 x! e; E' t. Q, z# @3 g6 M4 H+ X
2.reject禁止特定ip连接ssh/22服务# m# W1 d' n/ H2 Q# z
' K. E2 z# p% W+ l1 {8 F1 w
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"
- P/ j& A1 I. p% h1 i$ dfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"+ P$ n+ l7 J. f1 C7 `$ K2 ^
firewall-cmd --reload
8 c# p+ j) M3 \* k" W) S    ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
7 S' X8 p& n, U7 M9 @& ~+ |& P3 y# w& P. d1 d4 a: p! E

) _, X; [( i1 t$ n3 a' Y3.accept运行特定ip连接ssh/22服务
- `$ O; O3 N- o9 g6 V
) z# ~& Z6 v' N; C5 G! Pfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept"
$ w0 |4 {+ f/ s1 yfirewall-cmd --reload
9 |1 O  ]3 h; z" F0 Z9 T7 r5 c8 ]7 B/ U3 \# Q' D$ v
4 L, R5 |! u7 ~0 @4 i& Y
防火墙内的策略动作有DROP和REJECT两种,区别如下:
6 n. W4 A5 R7 n, O* N1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。
1 n* v/ u3 J5 z. O) u2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。) m% N" ?* X: M5 E" R' V' f

; k. L# S( O" G" E/ ]+ w/ j; g至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。
; Y3 W( @" v+ h. ~, v; A( l( z4 I8 p3 h
一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。3 ?8 x5 x, B) h
 楼主| 发表于 2018-7-6 14:46:27 | 显示全部楼层
查看firewalld的状态:
& d% w% \5 J3 F9 q1 T$ p[root@lockey Desktop]# firewall-cmd --state: e, j; S1 q$ z
查看当前活动的区域,并附带一个目前分配给它们的接口列表:
1 R) v/ u1 w/ a# ]; H1 j" b9 f[root@lockey Desktop]# firewall-cmd --get-active-zones
" ]6 H; Q: n$ C查看默认区域:: ^6 \1 e3 @) Z( {9 u- ^  i, F4 S
[root@lockey Desktop]# firewall-cmd --get-default-zone7 H, }" C' _, j' w2 h$ B
查看所有可用区域:/ I  G* [6 ~" b. j' }" y. ?
[root@lockey Desktop]# firewall-cmd --get-zones8 ?, L4 H8 M. K9 \+ L2 b# c' B6 q
列出指定域的所有设置:
8 h' g$ |7 D& K, b8 V[root@lockey Desktop]# firewall-cmd --zone=public --list-all5 X2 x; Q, Y3 ^% i) [0 g3 _
列出所有预设服务:
! W% }( u  G  \" L" F7 s) p7 b3 `' {[root@lockey Desktop]# firewall-cmd --get-services: g5 D. o* }6 k0 y+ m* V
(这样将列出 /usr/lib/firewalld/services/ 中的服务器名称。注意:配置文件是以服务本身命名的service-name. xml)3 [2 A$ w4 U+ t- E$ E
列出所有区域的设置:! C1 i6 R* \# A2 E6 O' k
[root@lockey Desktop]# firewall-cmd --list-all-zones
0 C0 [8 }, Y: S, q设置默认区域:6 k8 h4 P4 E' O8 r0 M& S/ t
[root@lockey Desktop]# firewall-cmd --set-default-zone=dmz
$ }) k" M6 v  `* Y0 j设置网络地址到指定的区域:. Z; b9 B/ C# {' S8 h5 s8 x
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --add-source=172.25.254.0/249 g# n% x6 D$ n2 a; x
(--permanent参数表示永久生效设置,如果没有指定--zone参数,那么会加入默认区域)
# Q; G* [' K3 p- Y. F删除指定区域中的网路地址:
5 g8 V0 O& u% Y5 ][root@lockey Desktop]# firewall-cmd --permanent --zone=internal --remove-source=172.25.254.0/24
3 F  o0 w: Q1 S+ i$ c" i8 ]0 X8 l5 B- ]. I添加、改变、删除网络接口:# ]* q! j: \( W# p
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --add-interface=eth07 R$ G0 z8 U$ A% Q
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --change-interface=eth0  I/ v  e+ v' K% T
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --remove-interface=eth0. {! n" T0 w% b0 V, Q
添加、删除服务:
- t: d% V7 I/ Y[root@lockey Desktop]# firewall-cmd --permanent --zone=public --add-service=smtp
: X2 A) D  u/ t, t( K: o% @" Z[root@lockey Desktop]# firewall-cmd --permanent --zone=public --remove-service=smtp( i: r$ V3 o" h4 c$ i$ W4 {
列出、添加、删除端口:
4 @- o8 M) g9 h& Y# s$ v[root@lockey Desktop]# firewall-cmd --zone=public --list-ports% d% p$ {* e) V1 x+ w" |
[root@lockey Desktop]# firewall-cmd --permanent --zone=public --add-port=8080/tcp6 v3 U8 v; D/ H$ @& P/ e7 |
[root@lockey Desktop]# firewall-cmd --permanent --zone=public --remove-port=8080/tcp
' K) Q+ E2 X! D5 N8 b重载防火墙:
0 N+ w: t# y8 N+ a6 K2 R1 L& X; [[root@lockey Desktop]# firewall-cmd --reload
, O: B) H% K; \) N% g" U- r(注意:这并不会中断已经建立的连接,如果打算中断,可以使用 --complete-reload选项)
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2022-5-23 22:47 , Processed in 0.043205 second(s), 21 queries .

Powered by LR.LINUX.cloud bbs168x X3.2 Licensed

© 2012-2022 Comsenz Inc.

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