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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-6-22 11:15:44 | 显示全部楼层 |阅读模式
1、firewalld的基本使用. A, X8 E! }" M$ }4 t) G% |( P9 y
启动: systemctl start firewalld
0 K7 @" @9 u4 K, @* H5 z查看状态: systemctl status firewalld ) |6 Y) w( {4 h* D% V3 J8 y
停止: systemctl disable firewalld
, {7 P) V& p2 f' B禁用: systemctl stop firewalld
: r- x6 p& t5 I
/ w8 k4 j7 j9 L! O$ S9 X2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
2 r8 ?, k* O6 [$ Q( Y6 |  b/ j% X启动一个服务:systemctl start firewalld.service+ ~3 K% k2 o& {
关闭一个服务:systemctl stop firewalld.service
8 i8 p" p/ B: K4 X& a- t% }7 Q重启一个服务:systemctl restart firewalld.service
$ C: C" t. R& ^9 H5 \0 F显示一个服务的状态:systemctl status firewalld.service0 C# C# p8 v6 [; B
在开机时启用一个服务:systemctl enable firewalld.service
1 h2 a: J% H% F. [! V) R" x在开机时禁用一个服务:systemctl disable firewalld.service
5 Z& _# W6 m- l* c查看服务是否开机启动:systemctl is-enabled firewalld.service
: i$ r: r4 X, p6 t' \2 v查看已启动的服务列表:systemctl list-unit-files|grep enabled
, Q; z2 Q0 a; z/ @5 l2 f: w查看启动失败的服务列表:systemctl --failed
: N5 r+ N/ c# ~, \- Q4 I* Y; M8 R; \$ A9 x+ }
3.配置firewalld-cmd
# \5 N( H7 _& T* k$ O- T; _8 B4 A9 o! s: d, D  U) Z
查看版本: firewall-cmd --version
- k; K+ Q. C/ d* [$ J查看帮助: firewall-cmd --help5 v- ^' k* [3 v: u4 b
显示状态: firewall-cmd --state
, }% Y: t* z8 t9 p2 }+ C. H+ s) E0 O$ n查看所有打开的端口: firewall-cmd --zone=public --list-ports* h+ w, s% f- n6 S5 E4 b; B; e$ j
更新防火墙规则: firewall-cmd --reload
9 c/ L- K: l) z8 M9 o" G5 h! B查看区域信息:  firewall-cmd --get-active-zones& f! I  u' Z: n2 {$ D  t- L
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 ,  firewall-cmd --get-zone-of-interface=eno16777736) h2 Y2 t7 M1 B4 j; o
拒绝所有包:firewall-cmd --panic-on8 [4 x# v+ s) i$ }6 p
取消拒绝状态: firewall-cmd --panic-off
& U: ~1 x8 A) D4 P% f. X: d/ R( ]+ C4 ]查看是否拒绝: firewall-cmd --query-panic
" T' U( R" X6 W5 O
4 t/ F- [; X/ A3 E' X2 B那怎么开启一个端口呢
& x  p, R. r! W2 L添加
* l9 G# o4 _# t+ afirewall-cmd --zone=public --add-port=80/tcp --permanent   ,  firewall-cmd --zone=public --add-port=22/tcp --permanent(--permanent永久生效,没有此参数重启后失效)
+ e2 H' q- ^& d# ^重新载入
' f  U0 k' ?! y, j* rfirewall-cmd --reload
# U$ r7 k$ e0 i. a' I查看* U4 e" a. I' U& L' s( W
firewall-cmd --zone= public --query-port=80/tcp" L: d' o) ?# _; M1 W
删除
& S( l. R7 W- nfirewall-cmd --zone= public --remove-port=80/tcp --permanent

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-6-22 11:16:39 | 显示全部楼层
查看firewall是否运行,下面两个命令都可以
8 h, M7 s; f8 E3 W) o1 m
( L/ w: `# L' C. ?1 ]9 s( I% asystemctl status firewalld.service4 N* ~! n& a1 C2 a6 Q
# @0 F( Q  i8 ?# c5 b
firewall-cmd --state$ x2 b( |6 m7 u8 y) _# Y

# V5 q3 l" S* B. t5 z, [; N: X( F  |4 b  }$ x, I# |' U( c  F
8 r+ M$ ^$ U- v6 U6 }6 l) h
查看当前开了哪些端口* p3 h6 i% _- Z5 }) W8 @
( Y# G5 K$ i7 n
其实一个服务对应一个端口,每个服务对应/usr/lib/firewalld/services下面一个xml文件。
  H. V& z. S7 o$ T' ~3 T: M8 s3 u# \+ ~6 L
firewall-cmd --list-services
, w. G/ P4 l' A) M7 e! \$ H- A& [9 ^$ y( h

! `: Y9 C* |: l; q9 {* ^- }* n
+ }2 W6 E$ Y' K' o
# w/ y/ S8 E9 `/ J7 C8 Y3 Y' ~/ k. l; E7 Z  o* i
查看还有哪些服务可以打开2 j. X) I+ X- Y) z# o, V; L8 v
! G8 Z; w4 O  K$ K
firewall-cmd --get-services% o# R& x" \7 o+ L( E+ G5 s$ G! \
% K1 E0 \1 a0 ?

( z& ~- E+ b' B( _3 L" E) x$ S! ?% N- ~2 B% b. c

, ?& _# j7 t" w' \2 ^
; j9 a* u$ C* k6 \" K4 t: G查看所有打开的端口: & `& c3 m2 Z, o1 y- q7 a  x

9 J6 n/ Z( i  i5 Efirewall-cmd --zone=public --list-ports
, @, ^3 d* D, Z1 t& t- `' b! U8 o( M! u7 `! u4 L0 O4 `# X3 y

) A8 \0 w/ _' o: p; t/ K! R; M+ Q7 t" V5 T0 t! Z" r
+ X! ?/ g1 `6 l" `
  `3 n8 z% i9 S4 \! ?. E
5 {8 b% i6 v" N: ]& O/ y2 {. `

7 V; G2 P6 L; N8 |0 P更新防火墙规则: ' N$ i% {7 K! I9 x0 U" u2 ]8 c' p3 F

- m' Y8 s2 q3 Q) u8 vfirewall-cmd --reload

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-6-22 13:39:59 | 显示全部楼层
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports 3 i* C+ g7 D5 V. e) m3 i8 Y8 ^6 e
22/tcp7 _& I) T4 `3 p* E  v

5 z) H. F, v- }2 {- n: S[root@dockerserver ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
- n7 p: L) l+ q2 {success
: `3 _- j, L3 X% m/ ?- k[root@dockerserver ~]# firewall-cmd --zone=public --list-ports ; p; i! n) D  Z9 Y
22/tcp/ X& \1 A; t6 ~, ], F4 W+ L
[root@dockerserver ~]# firewall-cmd --reload7 O4 v/ [$ h" k  u% T
success! F0 C9 a$ F7 [9 P% T" a
[root@dockerserver ~]# firewall-cmd --zone=public --list-ports
9 s: _8 G0 C8 d80/tcp 22/tcp
" c7 ^% b7 f3 W1 ^! N

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-7-6 14:37:08 | 显示全部楼层
下面的是对特定ip允许访问8080端口(你也可以自己改)  g& }% G+ L4 Q
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服务
$ ]9 _8 w) {4 R( }- j/ J% C1 |. {$ h2 @8 C. Q9 M6 R
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop"
$ a8 O& M: [% bfirewall-cmd --reload3 C# T* d8 L0 K
    ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
% W7 T, W& N1 J/ k* \
. g  C, s9 F: [' V0 ?7 j% S7 j; g/ L* P- Z2 s
2.reject禁止特定ip连接ssh/22服务
0 Q4 M! Z. |4 ]/ ]6 a8 Y. U( _/ w/ u! t; k" G+ @
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"
$ a: I: J6 J# Mfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"- l0 D& U% c' R, L4 T
firewall-cmd --reload& c2 Z6 I4 i4 D; C) Z8 }+ g4 n. y% u7 U
    ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则  [% D  p$ ^( V
. U" G. c& l' z4 R) d/ ?
% O; j0 r# l# E0 f; u
3.accept运行特定ip连接ssh/22服务( W3 `# A0 Z. o; L

! h: q7 D0 ^! o& i9 n: @* gfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept"
+ F1 d5 h. W9 v3 y, f. x6 w! T) C% efirewall-cmd --reload, i3 {; y7 Y# u% f$ s

. U% s4 u7 ^- v" W* t* K* r1 y7 O0 h6 \( j
防火墙内的策略动作有DROP和REJECT两种,区别如下:8 e* w! j1 X  ?5 b% r
1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。. n( m: @2 i% x9 c: c8 u% ]
2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。/ s! U1 s! z' t9 E# c2 h- Y

: t2 _+ ~! e4 @' n; ?至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。/ ~3 D+ x( L& U7 }- q/ G; I

% S  I! ~6 g4 j一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。5 i" {, c. p1 k+ D

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-7-6 14:46:27 | 显示全部楼层
查看firewalld的状态:
' R4 y( B  {% D8 f3 P[root@lockey Desktop]# firewall-cmd --state
0 B8 Q/ r# l) E2 V2 M  h6 q* ]查看当前活动的区域,并附带一个目前分配给它们的接口列表:- @$ @! }$ j! k5 |/ o
[root@lockey Desktop]# firewall-cmd --get-active-zones; D) {/ |( i- `0 J8 F& S
查看默认区域:
7 m" \$ C# o( ~* @( w* `[root@lockey Desktop]# firewall-cmd --get-default-zone2 Q* g: c' V# w
查看所有可用区域:6 u0 K% A" h* H! @3 ]( ?
[root@lockey Desktop]# firewall-cmd --get-zones# i' h" G7 X+ w6 j3 h# R
列出指定域的所有设置:" L% m: G$ S% t5 x
[root@lockey Desktop]# firewall-cmd --zone=public --list-all6 C6 }; o. Y8 k8 C
列出所有预设服务:9 X3 G, t8 I5 r& f
[root@lockey Desktop]# firewall-cmd --get-services
' f& z! h8 t+ [(这样将列出 /usr/lib/firewalld/services/ 中的服务器名称。注意:配置文件是以服务本身命名的service-name. xml)
: c# J# j3 L$ P" j( T% D列出所有区域的设置:' ~" O" g5 Z. d' m
[root@lockey Desktop]# firewall-cmd --list-all-zones- G* P) M) a& L( j
设置默认区域:
. D7 h, P0 {) E; J! M/ X/ a[root@lockey Desktop]# firewall-cmd --set-default-zone=dmz# ?' j+ X" q( p7 o  ~' L
设置网络地址到指定的区域:
$ D$ O+ {% n7 b& y# f1 c[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --add-source=172.25.254.0/24
  S+ [6 c0 K6 {; _" U" t, i(--permanent参数表示永久生效设置,如果没有指定--zone参数,那么会加入默认区域)
1 `( m& ]( q/ ~1 p删除指定区域中的网路地址:
; w; _) P+ P0 I: x[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --remove-source=172.25.254.0/24
! @# G! V# j; S! r. B) a添加、改变、删除网络接口:7 p; c: k1 ]# ~/ S' }  [% s
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --add-interface=eth09 D6 F+ \& d  j
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --change-interface=eth0& L/ ^  B& [( v- N9 c
[root@lockey Desktop]# firewall-cmd --permanent --zone=internal --remove-interface=eth0
, _) z0 q, R1 N添加、删除服务:9 u, y: y- _1 U" a% p+ I
[root@lockey Desktop]# firewall-cmd --permanent --zone=public --add-service=smtp
9 y, q; |# G$ y3 q' j" p& y( o[root@lockey Desktop]# firewall-cmd --permanent --zone=public --remove-service=smtp
5 y: C8 [9 N: m+ r+ I) p列出、添加、删除端口:
8 k) {9 W0 v3 X  P& l! ~[root@lockey Desktop]# firewall-cmd --zone=public --list-ports
: b* [" d/ b" j. _2 N! T' z2 P[root@lockey Desktop]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
% @* e/ P7 O. U' h0 F  a[root@lockey Desktop]# firewall-cmd --permanent --zone=public --remove-port=8080/tcp
7 m: [, G* \0 ?* h重载防火墙:
) q+ C, ~; T* C8 N: |  }[root@lockey Desktop]# firewall-cmd --reload0 W. Y" D& w. j4 t. X6 b8 P9 a
(注意:这并不会中断已经建立的连接,如果打算中断,可以使用 --complete-reload选项)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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