- 积分
- 16844
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 2022-12-20 16:11:18
|
显示全部楼层
1、查询、禁用、删除、自定义 firewalld 服务的 ping 响应:
; v; j4 f6 Q# J! `4 E/ ?2 ]9 q! i( f9 J
[root@centos-test ~]# firewall-cmd --zone=public --query-rich-rule="rule protocol value='icmp' drop"3 z; W1 R! [- m& X+ `
# \# [$ q$ \% O e7 ?$ c
[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule protocol value='icmp' drop"
, X/ Y1 e. J7 N- s f6 U0 T- |! p/ X1 a3 R' A5 O% A
[root@centos-test ~]# firewall-cmd --permanent --zone=public --remove-rich-rule="rule protocol value='icmp' drop"
6 V7 K0 B; \) T5 `: _' V6 P% F
* s' f" E1 ^( a: _, p[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' protocol value='icmp' accept"
# {/ ]- N4 b9 i/ u) F2 f0 ]6 A& \" ~7 J
# 允许172.16.1.10主机ping。2 n3 p/ X* T- U* S% e- V
( o ^5 c3 y3 K5 g: y+ F, M1 S ?
- y7 G: z: I3 U
( l7 G n. h e7 q
2、添加或拒绝某个IP访问ssh端口:6 m1 }7 c/ N5 g6 h# q) z5 r4 s
# d: K4 _, U A' F" I[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='ssh' accept"
7 ^7 P! |7 v" A( O c/ b) \/ D& M" u
[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.0/24' port protocol='tcp' port='22' accept"
3 H* ]% z" s: G0 @) z: Y3 t( e6 {# R- S z, S# P3 J' f
# 允许172.16.1.0/24网段的主机访问22端口。
7 ^+ _% _, u* |* X6 t& I6 X" ?) F4 ]- [8 d: l
[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='ssh' reject"
6 T" w' h- l6 S# T' X& }4 j( V: I3 {1 G: h
[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='ssh' drop": b% p/ P9 _1 f
) X$ U. v# R& T% B: Y0 |
# reject 和 drop 的效果是一样的。7 e4 ]5 T5 e; U2 l- H
4 ], ^' i3 K& T ~7 L4 C3 m; Z* E
+ I& q: g, m1 g1 G# b. g9 w) ^6 B2 g! c( V' o$ m+ G, d
3、列出所有多语言规则:% ^$ _- z# \" O5 t2 n
4 K7 F/ t; T, a0 n* E8 s1 pfirewall-cmd --zone=public --list-rich-rules
/ C( n* z1 ]1 r1 d8 R' k
6 k: \3 r$ b5 \! T9 N
+ E) ?2 ?' D+ X9 x
& ^; O2 c* l4 k7 U4、允许172.16.1.10主机所有连接:8 F" S) I1 v7 T1 A. Y
" a6 R& z& P9 C- z3 ~* y
firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' accept"+ a) l( T- V, k4 Q9 X* `! F
7 R, a; a$ u; C# X
5 b" j* q0 f) B5 o* h; `
$ M: @1 j( z# d( R7 P& r9 G! f0 U6 d5、每分钟允许2个新连接访问ftp服务:( u" U1 S& f8 q3 T" z, m
0 p3 s) v; h% i4 n: z. W1 ~firewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' limit value='2/m' accept"
* V; Q2 c% W- q2 X9 w/ m
5 b' ?' d. o" r0 [, a
) L5 u8 g- x+ ^3 M/ k- K6 X, s4 C, z
6、同意新的 IPv4 和 IPv6 连接 FTP,并使用审核每分钟登录一次:+ X' q S/ g P
% [+ B7 D p; }0 Dfirewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' log limit value='1/m' audit accept"
& P6 O! K6 s7 m
9 K3 x. y) ]2 |! {; G( E( ?5 r
3 _% Q/ _% D$ J: l, M/ j0 @8 c4 ?4 v; ]6 c0 D" Q6 g
7、允许172.16.1.0网段中的主机访问ftp服务:
+ ]1 `( g/ v7 X: }, U; E2 b) }
0 F+ F" j" |9 |; p8 C3 Mfirewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.0/24' service name='ftp' accept"
/ h( d( Z6 V5 L" i% q; N: Y
7 l& F( L$ t! b# Z' |9 m6 \, [
* y# n+ _2 o6 t& R: P m4 ?0 X" S; |: S" m9 w
8、将来自172.16.1.0/24网段访问本地8080端口的流量转发到172.16.1.208主机的80端口(源地址转换):
/ C4 W8 x8 [- v3 p5 ~) L
) U+ b. E( }8 y# R3 F2 U6 Q5 n' [firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.0/24' forward-port port='8080' protocol='tcp' to-port='80' to-addr='172.16.1.208'"
) S. r1 I6 W* t, O7 {& X
6 s5 L6 B; V4 J8 n# 伪装(需要开启masquerade),将来自局域网172.16.1.0/24网段访问外网的流量映射为网络出口公网IP,即修改源IP地址。
# s) r4 a& M" A5 d5 I
& a* t" @$ x2 |
4 e" @4 y& ?' ]) W; N
3 y* u# _3 I5 Q! t9、禁止172.16.1.10访问https服务,并返回错误信息:9 g/ A$ A# B" i* f+ d
- J. h& O. ]5 c/ N6 Z
firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='https' reject"
' B0 G8 Q% Z" }, b( y+ b
4 [8 p8 n9 h5 h# 如果是drop的话是直接丢弃,会返回timeout(连接超时)。
- g/ S# K! @( a. S" g2 z4 |4 u, V6 Q6 |; R# V6 R
0 H. L, k2 e$ D# C& p4 V
- ?$ C5 U. A; C6 b" m10、每分钟允许2个新连接访问ftp服务:
, Z$ Z9 R6 s! ?8 `) e6 J* [
* x" ^; j3 Y- q, V. K' A+ Yfirewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' limit value='2/m' accept"
/ D8 W8 p( [, R8 Y% V! ` ^' e
0 d0 ]6 x o5 k, ^' s% C
! l+ e' j, U8 z' P! L5 `2 o- U R- v
11、允许新的ipv4和ipv6连接ftp,并使用日志和审核,每分钟允许访问一次:+ H3 Y/ {) S, o" n' j
" q. Z7 H9 I! c& D/ H. E
firewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' log limit value='1/m' audit accept"+ X$ `2 D/ J' y: t9 Y3 D" D& Z6 L
. P( u, z) X0 S# I# Z2 t& }! y: B1 s: O4 F& X6 m' [+ {0 J1 [$ r
, K2 O6 \0 f6 T* W7 L
12、将来自172.16.1.0/24网段访问本机8080端口的流量转发到本机的80端口:) E( X( d- q9 B$ U
( ?1 E/ @) \0 V8 k; Ufirewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.0/24' forward-port port='8080' protocol=tcp to-port=80"
! F2 d, m1 A" N' F5 y# }7 C
K0 h2 _% l& }8 a) ~; q6 a- P' U1 j- I6 `+ t$ }, P! m
- g3 x) X5 \6 q/ ^( G13、允许一个IP(172.16.1.10)仅能通过指定端口(8080-8090)访问到目标(172.16.1.12):
$ N- i1 r1 A# D/ J2 T5 i
: Y9 }( l) C1 R# l* @, w, M* \8 C2 yfirewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' destination address='172.16.1.12/32' port port='8080-8090' protocol='tcp' accept"
: H6 g( L' P( X5 V3 K, b, s, C- b9 m" L
& @1 I" k% K- U' t* n9 U$ `1 G( L+ A! o+ I0 \1 G
14、添加、删除 firewalld 服务可以访问的IP地址:( J" p8 B* n8 [2 _, P# H# M
$ C/ u- R p* D* P2 Z- mfirewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' port port='80' protocol='tcp' accept"
, T" v+ m( Q0 t. ~( `* N6 E9 J" m2 B- A3 W% W( X6 @ u: h( H7 p
# 允许172.16.1.10主机访问80端口。
5 B+ F- m- ~. z% L- z$ ~7 k
/ l; M/ t: P# n' G# Wfirewall-cmd --permanent --zone=public --remove-rich-rule="rule family='ipv4' source address='172.16.1.10' port port='80' protocol='tcp' accept"& V1 ^& `" {" c/ `3 F, i$ t
2 B: J. g1 r7 o [8 B9 s3 v# 移除172.16.1.10主机访问80端口的策略。
0 M/ ], i0 |" K& o
9 z. _2 r( e0 c# n1 g
: R9 A, p$ S! o% @% I. U& b; v- [, v1 z. A5 [* a
2.5、补充:
2 @0 J% f( S. J' u( L
3 G4 a! B; P K: i1、地址转换问题:
0 V' @- Q) q+ _0 U0 I9 M2 f% ?# t
(1)源地址转换,就是我们平常说的代理上网,应用场景就是代理内网用户上网。
2 C+ K, m/ a. e m+ W* Z4 [9 I. D7 u# G! _
(2)目的地址转换,就是我们常说的端口映射,应用场景是发布服务到外网。8 T" g0 j8 G( w& @. u$ z* r/ y
$ N2 A# d: y6 \/ o- s3 z
(3)双向地址转换,就是先将数据包的目的地址转换后再转换源地址,应用场景是内网以公网ip访问内网的业务系统。4 p+ X. W5 w& x8 h( H# i! _
- ], |( [7 n Z6 M
8 W2 Z" y; x6 S
* w" q1 H8 t5 K4 C) F1 m' |; B
2、如何清除 firewalld 服务规则:
' B2 r6 P' k+ J& u9 z& E% Y
0 r4 ]: ~: }" O6 y* D. z(1)如果防火墙配置了规则很多如果清空规则呢,firewalld默认没有命令来清空规则。但是我们可以通过编辑配置文件来清除规则。
. c* o, V1 _5 ]: E! W& S c' _
$ i4 L! Z$ m8 c/etc/firewalld/zones/ 此处为配置生效后保存的配置文件,当用命令每次将新的配置写入到配置文件之中后,系统会自动的备份以
$ {& C* N) l6 R1 M+ C8 A; X: i0 R5 E+ D
前的文件。如果是手动修改需要先对配置文件进行备份。
9 ], j2 L+ D3 n) |7 n$ [' o' L# {' J
[root@centos-test ~]# ls /etc/firewalld/zones! c9 W. t; u: s* ?# N9 Q
# y' o/ {& b/ E
public.xml public.xml.old
. O, u! `0 t" c6 Y- T
, L: H: g g4 ^3 j9 p% \, u3 X$ y" B6 J
" |- R6 y( [( x* r: o
3、使用默认模板的形式添加服务(用于定制服务端口):" m$ D4 [7 `- F0 J
3 i) T( R) ]+ M% H1 y
(1)所有的默认规则都可以在 /usr/lib/firewalld/ 中找到:' A$ J6 I7 [3 A
+ y& I' Z1 K! l6 k8 _: ][root@centos-test ~]# ls /usr/lib/firewalld/0 b Q! @- o3 a; @3 c
$ ~9 S+ L' q# h) r6 Ghelpers icmptypes ipsets services xmlschema zones
1 [1 D: X3 S" L9 V6 p- Y
- @# h6 s0 O, r7 A' g, i, e& ~, R7 T. m$ S/ b, I* z- a
, m' H9 a: [$ n; @* H
(2)复制默认目录下的规则到配置目录下:+ M+ s$ ^, Z1 p3 J0 }8 r4 D
) V/ ]5 r2 ]- Z: }: M/ v l& l[root@centos-test ~]# cp -a /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/
( V9 M8 P) h( [- i) _5 N0 m$ l/ m5 L$ q, G; f, {( Z6 K3 s! \4 V
3 |/ Y& @4 n1 }
$ i5 y7 r9 j) o! E. g; Q
(3)配置文件中包含了服务名,端口,还有服务的相关说明:- N6 Q6 C% s9 h/ G3 N7 L! ?
/ S. ]; M+ ?# M, y& m[root@centos-test ~]# cat /etc/firewalld/services/ftp.xml
+ g; `4 ]& Y+ ]# R$ p j0 q4 u) A# W7 G" ~& K! G0 Z
<?xml version="1.0" encoding="utf-8"?>/ R# j9 p- t3 z7 x- ]9 @
# [) \; E" I3 e; T0 ^& Q5 n4 E<service>
7 r' i7 b4 L5 e: Q
7 P9 [2 F/ r3 I<short>FTP</short>
# i/ t/ @0 k n* V( }$ h/ K% z/ ?
<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You0 i( b1 F2 F4 r6 z8 r
, R$ t3 j6 |4 S; [( t
need the vsftpd package installed for this option to be useful.</description> <port protocol="tcp" port="21"/>$ B' h& d" {8 j# b: g
( }$ L+ M1 S+ R) R4 Y S& e/ B<module name="nf_conntrack_ftp"/>
* r* B6 O: t' m% {: {/ m+ E2 L1 T9 L' T$ t$ Q& w
</service>/ y: A# z% f+ b5 U2 {
6 U( i U1 |3 X$ ?" x4 p& A1 j- l
0 u; ~7 _, y1 C0 {- r2 A& x @% |
(4)在 /etc/firewalld/zones/public.xml 中增加一行 <service name="ftp"/>:& {* F' y9 I1 S) ~# v
9 w8 Z1 b" Z2 t. x$ c( p( W
[root@centos-test ~]# vim /etc/firewalld/zones/public.xml* `( p3 ~6 m% O& B( O
1 y2 Q$ e6 I/ O6 ] a
<?xml version="1.0" encoding="utf-8"?>5 Z/ ?* y v m
6 P3 Y$ Z9 c6 F& m<zone>3 i1 ?6 D) l% ?' F8 d5 ~, p; y' a
$ H. L+ U# A6 L, {
<short>Public</short>
6 @' B, a6 l) R' v7 @
+ k* ^" }; x5 x<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming conn
2 N- f( u) y0 p1 U5 p& C3 C6 {$ q
ections are accepted.</description>' q& J& ^+ m% l
' D# u2 h9 x2 _0 c
<service name="ssh"/>+ i/ U. t& |: j
7 k1 ]' O1 d- R: |<service name="dhcpv6-client"/>7 d: t7 ^! W9 {( M: u# H
* L! Y5 l- |9 P- l% N
<service name="ftp"/>
. x! J- D( X# U0 y2 D* ~; o& ^9 P5 a9 }/ n" ^* Q( m
</zone>
3 K5 ^! y/ h# @! n! \# D: T6 S2 g" Q# q/ |. J# p
7 V( Q" E& s0 `7 S- k7 N! d4 p2 v' {/ J! T$ ?
(5)重载firewalld:
1 l* m; H0 L8 D6 l; Z9 E4 l/ h e4 q. u, N6 P4 B; v
[root@centos-test ~]# firewall-cmd --reload
) } y- G7 E! U' A n; [! r- ~
8 m0 l3 J8 m; a9 b
) P4 Q6 W+ H, N% N2 V0 d( S- n4 Y$ [; t- [! l S. D% |$ }' C: b. R+ [/ s
(6)查看服务:/ V" { j2 @+ K- m- j
( F9 D8 p9 A) W. s: S[root@centos-test ~]# firewall-cmd --zone=public --list-service T N! u% Q7 |5 I
4 V5 N) P' z5 ^
ssh dhcpv6-client ftp) |0 o x3 t, w: A6 A
- e& D% {" H; T$ u& \ A: { |
|