|
|
楼主 |
发表于 2022-12-20 16:11:18
|
显示全部楼层
1、查询、禁用、删除、自定义 firewalld 服务的 ping 响应:
9 T/ Y( A2 |% `# t7 A, U) N* F
) d2 M) a: e! q9 a[root@centos-test ~]# firewall-cmd --zone=public --query-rich-rule="rule protocol value='icmp' drop"
. q8 \: q; c5 ]6 S2 z% {! W+ J! j- O( j; K% E% E4 e
[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule protocol value='icmp' drop": S T; ?/ q8 H6 ?
; ]' ]$ `! f p( Y6 f6 ?4 c u[root@centos-test ~]# firewall-cmd --permanent --zone=public --remove-rich-rule="rule protocol value='icmp' drop"
8 k$ ]: k( g+ i( M( ^, V, s3 p. [" y5 Z+ v
[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' protocol value='icmp' accept"0 y8 V' t6 r! e* S: }
* r9 w& [$ L/ l& p" a6 b2 R; ?9 z# 允许172.16.1.10主机ping。/ X( o: [# z/ Y' k/ O
9 ^( I* C. @) S$ p" M) V
W5 c% z) |! k, j0 g) S8 R
( P: [4 k' U2 r* f$ V2、添加或拒绝某个IP访问ssh端口:% T! L5 X ?( J/ ^4 K
9 n( |6 Y- \, }* x; S
[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='ssh' accept"4 @ L8 a% H# X& i1 }
$ B+ x$ l/ `# t% t[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"( Z9 ]/ b6 V q) F; v+ P
% u* N' e% t5 s! ~) a
# 允许172.16.1.0/24网段的主机访问22端口。
5 N" n' N$ u( {; Z# X; p
1 V3 L) d7 i. X+ n% ^$ R: Q: ~9 n[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='ssh' reject"# |, q, O0 B% O3 ]# L5 R# L" \
- @5 M, s. x% W8 G, z[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='ssh' drop"
* T1 m9 a, y) m& I5 Z& ^- q8 m% c
# reject 和 drop 的效果是一样的。6 N! q- D+ s# v
# X* s& `" L1 W8 S. t* V4 ~- v6 ^7 ~. z! m0 v5 d- r, e' B0 m
8 T* U5 q {. ^% J) s! |
3、列出所有多语言规则:7 o/ L/ r6 [8 T0 g8 ^
# } [2 O/ F+ w" A) ]firewall-cmd --zone=public --list-rich-rules
1 K5 J* H2 k1 }
. S4 O! v! i: b; d, @' _
% D6 @* A2 T0 s& ^$ p) k; ^, o7 Q
3 E, e! u3 T7 X0 h4 k. |# j. E4、允许172.16.1.10主机所有连接:9 }8 F; `4 v" p" c. r! j
* [1 W" m% k# O) p9 x3 s5 T# W
firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' accept"
! v% }, t8 y2 A7 @, N. r' \& D V L0 | u$ B
8 @/ H2 J" a0 n9 s# d) w3 o& x! u h# x! X3 H# i, {
5、每分钟允许2个新连接访问ftp服务: m- f n* _9 r
; u7 [1 v1 X% v: M( w/ N* R# u. i
firewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' limit value='2/m' accept"
5 s( z8 C# \; }
: E# s7 d) l) m1 |, g' E/ j- O$ f/ G; x3 L; [/ d; D* x
5 b; w# S. G' H& t- C6、同意新的 IPv4 和 IPv6 连接 FTP,并使用审核每分钟登录一次:1 r4 n/ d% x2 }9 v$ N
+ G" u% I: W0 }% B
firewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' log limit value='1/m' audit accept"
" b. G$ o% j( s7 Z; Q% ?. k( B7 H+ B8 e8 ?% `
( R! M: @% p* H) g4 `) ]2 R+ c% a
6 b8 m; e# M6 z7、允许172.16.1.0网段中的主机访问ftp服务:( [( C' e& Z) U! w$ j) T% ~
% g) l6 c m5 _; j5 ]- w
firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.0/24' service name='ftp' accept"
$ T; b5 o" ?. ~! R& w
- {; B& s, T+ r I) ]9 P( |& V2 N! @* P
8 ~ R) a0 o# {1 z8 G9 i; b w3 [8、将来自172.16.1.0/24网段访问本地8080端口的流量转发到172.16.1.208主机的80端口(源地址转换):
. Z/ h8 [3 K5 m/ e: ?$ h' _
; A& s4 g2 t- c/ e b2 D# Mfirewall-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'" W. ~8 N( W0 Y, j/ G
! V6 a# f8 E z# 伪装(需要开启masquerade),将来自局域网172.16.1.0/24网段访问外网的流量映射为网络出口公网IP,即修改源IP地址。
U7 s( Y- L4 S$ u
8 w# p" j' Q! _( |& |; z' _
# F7 h6 p {4 r" u" `" v4 _' K% ~( v1 @1 i# L8 O) g
9、禁止172.16.1.10访问https服务,并返回错误信息:
7 y4 D# q: G% `/ K- b; z
. y Y' ]. P- a+ A2 E' Nfirewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='https' reject"
K* R! V$ z; C/ t, q4 O/ r
( b1 g9 d1 ~! B( E0 s# 如果是drop的话是直接丢弃,会返回timeout(连接超时)。
( \! }0 i' e! n; B: _ |1 q
6 h& A# o& O8 R5 v$ V9 G& P
( v* z6 ~9 M8 Z
5 [: \& C* L* q" H" z( @1 N10、每分钟允许2个新连接访问ftp服务:
6 w7 s" u/ E! p. u+ _5 h8 y" a: U" V# D+ u- W
firewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' limit value='2/m' accept"
( q$ c8 |- k1 p) M& p' ^: o! t/ e; I3 ^. \5 S* M# n
% n2 A! h$ `6 _7 q
, `9 N! o* X; U/ X; D& d; E
11、允许新的ipv4和ipv6连接ftp,并使用日志和审核,每分钟允许访问一次:
6 Y2 h8 Z1 O! W( d
* c0 |& W; z4 _6 afirewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' log limit value='1/m' audit accept"' b8 }1 m# E! H$ _5 y
1 B. D ^/ l' H4 T, `
, w4 L( U8 ~# W8 ^( A6 e% B( H' P. y, }. R5 R6 O& L# E; F
12、将来自172.16.1.0/24网段访问本机8080端口的流量转发到本机的80端口:% J+ w3 a" H3 `" a. A5 f* T
# P D$ {) Q( r7 b0 B
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"
$ G2 u% U' _4 d* E* k; I% V& n: j$ \6 M& Y
+ ]8 G5 b" }6 N5 z* l# e& Q3 Y! F5 S. b! S% V$ W+ e9 Q
13、允许一个IP(172.16.1.10)仅能通过指定端口(8080-8090)访问到目标(172.16.1.12):3 k$ d2 T# o5 O+ O' z- f
0 H. W2 H* q' {4 j1 R9 o
firewall-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"
7 N- Z1 ~* Z+ l6 P7 `
$ k( E: e/ K$ W& R& H, K" P; P: }( |. @* U, v2 R" w
8 `- k6 T. k, Q. u- l2 v% z% c
14、添加、删除 firewalld 服务可以访问的IP地址:( @' U. [1 Q& x
$ H" o1 J+ V6 a7 Qfirewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' port port='80' protocol='tcp' accept") a! m/ m) o3 d2 i! G0 A
3 S6 n3 w9 e# @7 q) N+ y/ A# 允许172.16.1.10主机访问80端口。
" N" @. D. p }+ O9 x, T ~ l- s2 u; D2 o1 ~: r
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family='ipv4' source address='172.16.1.10' port port='80' protocol='tcp' accept"0 G1 j2 | c/ {4 b; i) s
) ?' |7 p& n/ b, k# I8 q3 G
# 移除172.16.1.10主机访问80端口的策略。' p4 Z; k- n9 r5 p1 \
) F. P+ t2 M9 Y
# ?% ]2 `2 b* o$ \: Y* J6 |6 @" I' M! x7 u" f, a8 V) D
2.5、补充:
; F/ J+ K( a0 e& a k% q6 b
8 k8 K+ T Y/ Q1、地址转换问题:
7 |4 `( T- K d3 W' i7 v
- U& |7 `: n' ]- Y' a- C0 |" F(1)源地址转换,就是我们平常说的代理上网,应用场景就是代理内网用户上网。
* ~& E# e. H9 D9 |" h
' D" g3 O( }7 N! E& Z& z) _" }(2)目的地址转换,就是我们常说的端口映射,应用场景是发布服务到外网。
; S- Y" u% N6 f8 C0 t% P2 [# Q. z( s. Q" m M$ g
(3)双向地址转换,就是先将数据包的目的地址转换后再转换源地址,应用场景是内网以公网ip访问内网的业务系统。
5 F0 ^& Z f1 u: H4 K' u
- D- a/ c4 i% E) S B+ e2 {' ?( `' \9 W5 f
/ O* d3 P2 r7 X/ H2 R& ^2、如何清除 firewalld 服务规则:1 R8 X. C' [/ v! {# ?
2 A0 l* }! f e6 f; f
(1)如果防火墙配置了规则很多如果清空规则呢,firewalld默认没有命令来清空规则。但是我们可以通过编辑配置文件来清除规则。8 M |: x1 L# U) t z
9 a1 V# ?4 }8 }( g3 A9 ~3 e( n/etc/firewalld/zones/ 此处为配置生效后保存的配置文件,当用命令每次将新的配置写入到配置文件之中后,系统会自动的备份以5 v& ^; R+ b" i: K7 `- ?/ r
5 R- `, s n+ L! B
前的文件。如果是手动修改需要先对配置文件进行备份。
2 a' C' @! U; a" M% A: d7 Q2 R- P" `" c, m$ Y
[root@centos-test ~]# ls /etc/firewalld/zones
4 {: S, M8 @6 O+ @& W+ w w; E. b$ o6 ?) T ~& K
public.xml public.xml.old
, }7 \! x3 J6 y ~$ v
" Z, _8 h, B2 M9 T: }) T! J7 J$ Y# S
4 V) u5 r5 }( s' w+ t4 Z/ b3、使用默认模板的形式添加服务(用于定制服务端口):
0 s4 _+ [: U% L* h& _- d) `) d4 }$ J6 i3 s4 t
(1)所有的默认规则都可以在 /usr/lib/firewalld/ 中找到:0 \. A' j: ]) u) B. {. q* G* h
: }& k! P; C; s1 k
[root@centos-test ~]# ls /usr/lib/firewalld/
9 z- {1 I t$ @: \4 ~. i, g1 A W6 d# \0 |' L6 V4 L
helpers icmptypes ipsets services xmlschema zones
- k1 u! H9 e4 P0 r4 x7 ^! o0 O$ V4 {' ]7 S% e1 F
7 K d! j7 g& n+ E6 c5 j& |/ J
; O' l" P L6 t3 Y) \8 W(2)复制默认目录下的规则到配置目录下:. F- J) m$ U$ Z. Q
( D: _# x, j" P8 t9 o; _
[root@centos-test ~]# cp -a /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/. e! D- R0 B4 x# b+ x7 A4 ?: W2 _
$ N0 B& u7 a7 {2 H
, [" Q/ k% r# h# A
' Y; n) [$ ~1 g) o
(3)配置文件中包含了服务名,端口,还有服务的相关说明:
( j6 ?$ o+ q8 t: s6 X+ f" O' b7 [! X
' P, j/ z$ P0 O[root@centos-test ~]# cat /etc/firewalld/services/ftp.xml6 W+ H" K: { D6 B
6 G$ ^: s! }: H U( S<?xml version="1.0" encoding="utf-8"?>
! ^6 s) m+ i0 {% }
% D4 }& G- f$ Q<service>& s" N5 ]: i+ K/ `
- |# [, z% l8 V, Z0 U* t$ L6 B<short>FTP</short>
! Y% m/ p1 F3 K/ H2 N; w8 j j$ d( v7 q( i
<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You
' w% `2 x. [! g7 \; c8 o) v, Z1 i; e; T+ O- ^ p; R' V
need the vsftpd package installed for this option to be useful.</description> <port protocol="tcp" port="21"/>2 B' w& ]7 i2 _8 H
& y0 L- B% h7 G; z9 X<module name="nf_conntrack_ftp"/>% n: e" a# f; x2 K
% _. Q. m! y, M$ | d# \
</service>. I3 v% ? ?7 @ u! {4 ~& R: ~" b6 t3 @8 Z0 }
0 K$ C) a" m+ Y6 Z
4 H: r/ Y# U9 _- d. Y1 U. A' I
6 i+ j8 \' Q" q, N
(4)在 /etc/firewalld/zones/public.xml 中增加一行 <service name="ftp"/>:% d: f0 R8 W7 y, m$ t' P0 N
, R5 a. Y( d2 k! ?" u& |[root@centos-test ~]# vim /etc/firewalld/zones/public.xml
1 A/ a5 r4 n Q
5 D. {3 a! O" I4 k9 W% Q/ W<?xml version="1.0" encoding="utf-8"?>
2 @ `) |% H* h, U2 g
2 u: j9 k, f V! z* Y<zone>, |: U2 d- m6 M$ I9 k
, A4 }, g0 R8 M2 T3 k
<short>Public</short>0 }; T9 f; {. Z# t
/ X2 X( o+ b8 j& Z8 V) h<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming conn
' G; i% \* M: `- e, A# w" l# H% L5 w* ^0 {5 ~2 Y' W, b% R
ections are accepted.</description>
' ]- j' F K! D( M1 x
8 I% ^2 ?9 `( ]% T4 o<service name="ssh"/>3 o1 u) r' ?; `4 ~& t4 e
5 X9 D1 t/ ^) _, d' s<service name="dhcpv6-client"/>( ?, y% R4 L' O" _6 [4 X: |
- p0 {$ m) l, G2 E( O& D
<service name="ftp"/>
8 y+ F9 w$ Y/ ?! q! d6 I5 ]/ M+ e/ O' q0 |
</zone>
0 \) c$ @; U- C4 I8 L' k: z% Z q' w! m2 _$ J) @4 U. [. }3 {
( ?8 h% x. s% a) U: Y4 f; |- }
, M9 a: U. P9 \0 _ E5 p(5)重载firewalld:
, z8 C0 {6 m- t6 F5 X
5 g: @+ e, j( c7 G& Z, I# e2 `[root@centos-test ~]# firewall-cmd --reload
9 B, S' g7 N$ U, Y- X3 j$ h& t0 Y3 l! R! b
+ k5 R& [2 c2 N' O6 T) \4 T! m: ^* }+ x; w% t1 D5 |
(6)查看服务:' E7 t7 _" v2 l$ Q+ [- Y
4 G0 [9 U' [9 W[root@centos-test ~]# firewall-cmd --zone=public --list-service
6 c+ |6 M) F0 t$ g3 Q: A; O4 s
5 a! u' c' r \1 {ssh dhcpv6-client ftp
g% K* R# r* e& e+ x4 m
1 |. ]+ v! \' P, } |
|