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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-6-22 11:15:44 | 显示全部楼层 |阅读模式
1、firewalld的基本使用
- [% C3 m9 m5 t' F1 {" s1 X启动: systemctl start firewalld1 j* _1 o% R3 H, Y0 B% C; U, N: s
查看状态: systemctl status firewalld ( [0 ~$ ^3 |. c; M! y0 I3 j6 W
停止: systemctl disable firewalld: i& y, Z# r+ F2 _1 P2 p, Z" l
禁用: systemctl stop firewalld$ Q8 G$ `6 @& V9 O9 k6 r! k; T$ U
$ i. o7 N( Z! J
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
! ^& I1 Q2 _  q启动一个服务:systemctl start firewalld.service
* s2 x. ?* }; B4 D6 R$ r关闭一个服务:systemctl stop firewalld.service# R& a& c+ j' k. O* g
重启一个服务:systemctl restart firewalld.service' e( Z) z1 p. e! `) u# i" x
显示一个服务的状态:systemctl status firewalld.service9 O+ R; m! s; m# j; n
在开机时启用一个服务:systemctl enable firewalld.service
% q. e1 A. ]0 |1 R  V* D9 q$ k% m在开机时禁用一个服务:systemctl disable firewalld.service. v& ~* C! T6 }1 I
查看服务是否开机启动:systemctl is-enabled firewalld.service
3 s! D" f4 g9 ~查看已启动的服务列表:systemctl list-unit-files|grep enabled
# x& C* V" _6 O查看启动失败的服务列表:systemctl --failed
! f7 A- q3 a- e& S3 X# z& k' P* U6 J9 I( J' O2 Q* U
3.配置firewalld-cmd' ~) q0 u+ E6 @8 J3 f8 o

2 Y% ?  B) {7 @6 n/ @查看版本: firewall-cmd --version9 i  E4 m( Y, I% \
查看帮助: firewall-cmd --help/ ^  i2 F! P3 }6 v0 k3 x0 n
显示状态: firewall-cmd --state( G9 l; l# s7 H9 K( F" W
查看所有打开的端口: firewall-cmd --zone=public --list-ports
" e% V2 }6 ]. W  A, r/ x* F更新防火墙规则: firewall-cmd --reload
+ W5 v  [9 b) x( }) |查看区域信息:  firewall-cmd --get-active-zones8 P! G2 S& K. \7 b1 @
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 ,  firewall-cmd --get-zone-of-interface=eno16777736/ {1 _& O; z3 ~  k
拒绝所有包:firewall-cmd --panic-on: m! \2 u4 P$ k, {! B% Q$ Q
取消拒绝状态: firewall-cmd --panic-off+ v& b9 d" K: _# |
查看是否拒绝: firewall-cmd --query-panic- c: Y  _- v" q. [5 ~
) E& K$ z% b) u( ~+ I5 S
那怎么开启一个端口呢
) U* x9 c7 V; r添加
* a+ H3 g3 z- Rfirewall-cmd --zone=public --add-port=80/tcp --permanent   ,  firewall-cmd --zone=public --add-port=22/tcp --permanent(--permanent永久生效,没有此参数重启后失效)! z4 a: y# o- k
重新载入) b4 e) S  H4 @: F& j% H3 K
firewall-cmd --reload
5 P4 Y& R2 t3 r/ v/ w3 e! N6 t( ^查看
. {! ~& M  J+ J* Y/ R# yfirewall-cmd --zone= public --query-port=80/tcp. I$ N' O" j) O* N( J. [
删除$ R/ m% l1 v" T  \
firewall-cmd --zone= public --remove-port=80/tcp --permanent

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-6-22 11:16:39 | 显示全部楼层
查看firewall是否运行,下面两个命令都可以
+ A/ g9 N/ D3 `3 Y0 ^* C3 L7 y$ e: ?5 f4 i2 p. }" ^6 I+ h
systemctl status firewalld.service! ]+ l0 r7 y! t2 q
8 |; q$ X% c! l8 m( u5 g
firewall-cmd --state- ~; B* `3 K. G' [

& x+ P# g- f1 b  o! m1 \; e
- w' P' b4 l/ p$ x
; U/ ]" ?5 O' i" A+ p查看当前开了哪些端口# Y4 x& x! k3 H' F% T

9 }" f; g; M- N3 B其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。7 L  J% s: ]; C) V" x
* s6 ?+ t9 U. T/ v
firewall-cmd --list-services
" T3 p2 N2 L- C! w
+ }* R, `% ~; ^1 j3 R+ f9 e  @2 q$ n" L$ c% X8 Q
0 A7 F) _  D7 i( E' j
5 y% O6 ]1 _. g4 Q1 R
. y+ x6 o, f" Z: [! `3 T
查看还有哪些服务可以打开
" E* s3 v$ }! y+ r5 j; k8 H
/ `9 W7 |6 a6 D+ F+ P5 mfirewall-cmd --get-services: T0 D! \# u0 \" \

, _0 {7 h/ V1 D$ s+ x
( j  r+ ~7 e5 a* ~, ~4 ]9 [4 L. U
$ i7 T/ ~' k+ _  M8 x. r! l; g9 V* \) [8 z8 G, x+ a0 M
' O2 w( X% `" f6 n- k
查看所有打开的端口: # e" m9 B4 B9 t8 [3 d4 O1 N" V

* S  {' G* S$ \3 R/ ?! G2 ]firewall-cmd --zone=public --list-ports
' L# h* B/ a- J0 K& ]1 U2 `. {) r4 r: A9 q

& ~/ S: H' r+ u# D) X% `+ A
& w1 y3 G( g0 J9 _
% i" p# y# r+ F, |
1 M8 r6 R6 I. \& `+ |) T
  M8 O, k( p: S0 u& n" t' R7 x; V3 ~% v
更新防火墙规则:
+ |7 Q( \3 d6 ~4 c+ h0 }' X. y! t
5 A- n6 {, a1 o0 |& S3 P  r2 z8 Kfirewall-cmd --reload

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-6-22 13:39:59 | 显示全部楼层
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports
5 Z2 r0 b% x' u3 T9 W2 E: D22/tcp, r: p  {' F  l' [

0 ?# g8 Z1 \4 z! S3 Y[root@dockerserver ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
) B0 f# |8 Z# d+ J% ^success# H/ w' J+ N; V5 ]4 W- p& I& {& b$ Z
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports $ s' ^! T& O2 @
22/tcp3 M* R+ ^- r: Z4 D2 d0 a) M+ K
[root@dockerserver ~]# firewall-cmd --reload  j6 k4 g2 B, I" ~, k% Y: c
success0 [1 a% n% w& V$ g0 K! ?
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports + g7 B0 Z3 A# [; j
80/tcp 22/tcp
2 |0 Y& }' y4 {- X4 W# N

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-7-6 14:37:08 | 显示全部楼层
下面的是对特定ip允许访问8080端口(你也可以自己改)" ^( f. V" c7 S' V, _& h
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服务
! q+ B& {/ m! t. v0 o$ S, s5 I
& b+ V" _0 Q' Sfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop"
- R4 Z, [+ ^3 n' F0 K6 G) @firewall-cmd --reload$ q* ^  J" t5 D9 C
    ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
: k& `  _8 m) Y: k! Y( j0 R, x& l# P' @. w/ |

# g' p) {3 X& i& y. J- p6 A2.reject禁止特定ip连接ssh/22服务
( u8 A1 x! t+ n; ^4 I5 C! n
- f$ u" h4 Z6 A0 n: ^" Vfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"
& b- g1 f9 g* p1 C7 n. lfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"
4 q  v5 U/ X) d  s8 Yfirewall-cmd --reload
4 m# P! u# y( _  D' w7 K    ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
% W3 N" \6 f6 D& N4 K8 E3 [5 z* E0 o5 ~# s( m' s
) q( L/ `! M* Y2 g
3.accept运行特定ip连接ssh/22服务! n( M* D+ U+ @. j

4 a% J, b& A6 q- a1 Dfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept"
" q# d! l+ P, w- s; {, {* lfirewall-cmd --reload
' |( k2 [) L5 o/ L. e5 r
$ Y. _* w& u. I# N3 X2 g4 R4 |) ~9 C
防火墙内的策略动作有DROP和REJECT两种,区别如下:
) `; K6 M* Y- J& o1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。% S4 _# Q% R% T$ S) _: E
2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。0 n- i+ J6 m* z; C- G4 G
, m; ]( |, ^- m
至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。0 D4 y9 v2 q  ^; M/ `4 d3 m' m2 T
8 f( z) e8 ^, H  a, M" K* N$ d
一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。
9 }% x) H% r) P' V6 K

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-7-6 14:46:27 | 显示全部楼层
查看firewalld的状态:
3 {( ^9 b( `% n8 a% {8 X* n[root@lockey Desktop]# firewall-cmd --state3 j# W5 c3 a! ^* o) p. a3 O% S% w
查看当前活动的区域,并附带一个目前分配给它们的接口列表:+ K* P8 A2 D% [5 z1 f5 X
[root@lockey Desktop]# firewall-cmd --get-active-zones2 H& s0 c) Y) B- _, r0 I: A$ h
查看默认区域:
! j  ]$ ]/ O" n) M1 p2 t' a[root@lockey Desktop]# firewall-cmd --get-default-zone
4 m% M+ h3 k: K- L. s. Q8 s0 E, N查看所有可用区域:
; N6 b% y0 l+ `. K2 a. E% N' L[root@lockey Desktop]# firewall-cmd --get-zones
9 |; V! \% J* N列出指定域的所有设置:' m3 s( U0 s9 D9 A+ ~0 w$ s
[root@lockey Desktop]# firewall-cmd --zone=public --list-all0 w/ a6 V' w" Q+ ~. H
列出所有预设服务:
8 l  d8 Z  J6 N$ J; C2 u: [[root@lockey Desktop]# firewall-cmd --get-services% E$ W* Q0 X; P& ]; _- L
(这样将列出 /usr/lib/firewalld/services/ 中的服务器名称。注意:配置文件是以服务本身命名的service-name. xml)
  \0 H0 I& }/ V3 s$ z0 F列出所有区域的设置:
7 \0 v0 A3 u8 T; d, |+ O( ][root@lockey Desktop]# firewall-cmd --list-all-zones9 W) |4 N( v% c. g
设置默认区域:- z1 r; {& z/ o3 n* |+ H$ D
[root@lockey Desktop]# firewall-cmd --set-default-zone=dmz
/ v# V; C6 g0 h$ i# ~# {( F0 `设置网络地址到指定的区域:% G/ R, ?. N( G; S( j
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --add-source=172.25.254.0/248 }. Y. @! Y. p$ a7 l
(--permanent参数表示永久生效设置,如果没有指定--zone参数,那么会加入默认区域)- X4 r. U5 w$ K0 J7 B) Z. H
删除指定区域中的网路地址:
, Y, z1 ^+ V' @& _: c9 {6 O[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --remove-source=172.25.254.0/249 }& w; R6 P+ t
添加、改变、删除网络接口:6 }7 r, [/ s! Z: N8 P
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --add-interface=eth03 \" |4 _2 o) I1 p
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --change-interface=eth0% V+ o- P9 D" U; c
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --remove-interface=eth08 G! X1 y  A. E5 i1 a+ u% ^  j
添加、删除服务:
. |: d! d2 \; }% C2 I9 @[root@lockey Desktop]# firewall-cmd --permanent --zone=public --add-service=smtp
; S7 m3 _. S7 Y4 j* Z$ y! I[root@lockey Desktop]# firewall-cmd --permanent --zone=public --remove-service=smtp
; p6 y/ N6 r2 f( K) Q, j3 ~9 q# O列出、添加、删除端口:
/ h) K1 @, ]$ z1 g! {4 r7 w[root@lockey Desktop]# firewall-cmd --zone=public --list-ports5 c' x& H( A& k8 c/ z
[root@lockey Desktop]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
2 q3 P1 N; p5 L! u& u[root@lockey Desktop]# firewall-cmd --permanent --zone=public --remove-port=8080/tcp6 G# G! J/ Y( a4 U9 V2 u! G
重载防火墙:
0 m- b+ p+ b- m6 w( z% d& v[root@lockey Desktop]# firewall-cmd --reload
: _" ^/ u) s; N6 c(注意:这并不会中断已经建立的连接,如果打算中断,可以使用 --complete-reload选项)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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