|
|
楼主 |
发表于 2022-12-20 16:11:18
|
显示全部楼层
1、查询、禁用、删除、自定义 firewalld 服务的 ping 响应:2 n# t5 S$ P' f
! O5 y3 F# R! o
[root@centos-test ~]# firewall-cmd --zone=public --query-rich-rule="rule protocol value='icmp' drop"
. n; S: v& `5 m
" s7 S' H' R+ v2 W2 o7 W( _6 j[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule protocol value='icmp' drop"4 G8 `6 R6 D7 Z& a
% f8 t: J# \1 L4 @
[root@centos-test ~]# firewall-cmd --permanent --zone=public --remove-rich-rule="rule protocol value='icmp' drop"
; A6 A3 M& L; R4 u0 M! T4 u; ~* T- _* q; V; V0 o5 F0 G
[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' protocol value='icmp' accept"
( M1 E- C* L$ x f5 r. C! ~9 v# @2 X. {" P# v, X8 ?
# 允许172.16.1.10主机ping。
* u& s9 I, d7 ]
) y, v {9 i3 u" E
# z9 Q6 I. g u' H$ x8 ]1 E3 ?+ g% ~, ]9 s. G
2、添加或拒绝某个IP访问ssh端口:! m7 `; R4 R( d+ l
9 @: ?& h) u) s% u8 s- J2 U) F[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='ssh' accept"# {. [9 F$ L3 [* p) P2 `3 I+ K
$ }4 [) N. U* ~# O! e[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"
$ b2 |9 l! D" R. ~7 \& c
# Z4 h9 r) A" z. K# 允许172.16.1.0/24网段的主机访问22端口。
) r' y9 A0 N9 B" e* s
" k1 ?! L/ R$ ][root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='ssh' reject"" B/ `. C0 K( c
' k! \2 g4 Q0 X8 }[root@centos-test ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='ssh' drop"
8 V6 l" v' |/ _# S) r& i
9 [0 m9 C/ l/ c5 a# reject 和 drop 的效果是一样的。
( x* b4 I- C8 q4 A
& R( J W1 p/ r8 P( ]5 i. v4 ~! m& u) T2 N$ ]7 E9 Z. B
$ _' O* V! ?6 s2 F( \. r
3、列出所有多语言规则:, H8 K; r; k6 B5 Z7 \
- X# I% ^4 b6 _- Mfirewall-cmd --zone=public --list-rich-rules
% W. O6 m9 u- @8 L' e h: z4 J
4 K9 L1 `" N, f- q" C k# z6 o2 J4 ]: D Q, U" \. F3 \+ f" [
w" {! ]6 K. Y3 f2 J4、允许172.16.1.10主机所有连接:
) }% X) R! m2 l
1 y% s/ m* b3 o0 y$ Afirewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' accept"
' i7 X; @, K' C+ ~; e' [
- L; v, u1 Z9 |. v+ [7 b, ^: h# l0 G& V% W% D3 X+ H
1 L" \1 ^1 u" v. K$ G" r
5、每分钟允许2个新连接访问ftp服务:
6 ]) |; u6 S/ a( U/ V* z6 d! u# ]8 {/ C7 q- E2 y9 C8 ^# p; o
firewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' limit value='2/m' accept"
$ U) n3 V2 `2 A* X
" G' d! `7 {) t: X$ C0 x2 @% G
* f6 G% i* M" b: T& ]1 g, D( l7 A, m4 V) P1 G; @: m
6、同意新的 IPv4 和 IPv6 连接 FTP,并使用审核每分钟登录一次:& L p+ X; M7 t0 l* D
* j# y6 }; ?( |4 kfirewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' log limit value='1/m' audit accept"
! W. x5 J: N8 B9 L" m4 e4 v2 O( u* O% M( M
2 V9 H" A! E1 S; I& q
8 @$ ^" ]0 g( p; d. D2 N6 M7、允许172.16.1.0网段中的主机访问ftp服务:
. @; k' z2 s* o4 g4 T! Y# F1 F4 Z
" S$ ~' n/ k; G7 L) P/ R( i( Ofirewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.0/24' service name='ftp' accept" l- j0 c- H& L* M* A# J* }( H. u
7 a, l! ~2 G) R
# b+ G1 p; Z9 N5 w4 ]; D
$ d& |/ B* {; X* u+ Z' v/ Y1 l8、将来自172.16.1.0/24网段访问本地8080端口的流量转发到172.16.1.208主机的80端口(源地址转换):2 ~* ?7 A s* t, v; |
+ K, h0 t% a' Ifirewall-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'"* V* }& W3 \" T& R' d1 X9 [& h; t
* ~. L4 R) |( E. _
# 伪装(需要开启masquerade),将来自局域网172.16.1.0/24网段访问外网的流量映射为网络出口公网IP,即修改源IP地址。. c% B( h+ k" i& R
7 L' G" l2 Z8 T$ I8 D: v6 e1 b1 r- A% B! O- V7 j% Q
$ k" F! Z; o/ T' ?7 v
9、禁止172.16.1.10访问https服务,并返回错误信息:
' ~/ @& ~; {% N+ c4 `1 L/ n4 P! S( [/ a! j& C
firewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' service name='https' reject"" n7 O* K' P: z, K! }
S; e& Y$ [! {* ]$ \# 如果是drop的话是直接丢弃,会返回timeout(连接超时)。. F+ b) @; Y6 Y
6 W0 o8 ]* f* m' K) _1 u
, Y" t8 C2 I4 {. I
O, ^* N+ u: c0 w9 T' v+ {# L10、每分钟允许2个新连接访问ftp服务:, k' \2 n4 I& S/ O
" U }$ a/ F* \% A6 Q4 Q- Z$ P
firewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' limit value='2/m' accept" k& Y! X* e3 U( r) X! x
# k. O+ D. a8 P: Z6 [( U) F/ r7 @1 l
% D' } L, w! z/ r1 G' C5 D9 R
4 l8 y% S4 Q- G11、允许新的ipv4和ipv6连接ftp,并使用日志和审核,每分钟允许访问一次:
0 k% |$ T4 K. f- w3 i* P6 J- A
# V6 ]7 ^8 j) lfirewall-cmd --permanent --zone=public --add-rich-rule="rule service name='ftp' log limit value='1/m' audit accept"; G* K* W7 G: m6 v* Y9 v
' Q% z# _8 M( x! ?2 T& {9 s7 o, S) S4 G
( z+ F1 V9 p4 I! N A, M3 @3 n/ e. Y2 V12、将来自172.16.1.0/24网段访问本机8080端口的流量转发到本机的80端口: i0 N+ r9 x* b1 |1 h
% f3 u2 F9 [$ H0 sfirewall-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"
& f) Z9 F$ k5 ? R2 Z6 b" }2 \! i4 a* N( o
$ d4 E5 K6 ^3 t' u2 O
3 Q) l" P$ d/ r; n5 v13、允许一个IP(172.16.1.10)仅能通过指定端口(8080-8090)访问到目标(172.16.1.12):
& k! t1 Z5 Z+ v7 s2 j( ~1 y& n$ g M" Z v, T
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"( r/ J. m' W" v5 |9 \
1 b1 ]% R7 Y5 z) G$ D
$ }+ Q- H1 A4 F* A% E% {5 \% O
) e$ V, R& l. {( u* b- g+ t14、添加、删除 firewalld 服务可以访问的IP地址:
& o: h9 ?: F0 c# v0 f! ^
) W" K& x* G" Q; f2 J1 D3 E Lfirewall-cmd --permanent --zone=public --add-rich-rule="rule family='ipv4' source address='172.16.1.10' port port='80' protocol='tcp' accept"
' \) q2 e: s9 S% F) u. _$ d
" F$ h3 y; M6 s9 L1 K% Q$ ~- _$ x# 允许172.16.1.10主机访问80端口。' c3 o( R4 I: ]- f
$ ]* [% s: f! Z" b, H
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family='ipv4' source address='172.16.1.10' port port='80' protocol='tcp' accept"
, }7 F/ _4 \+ O5 @4 [& W" I8 z6 P3 k6 v
# 移除172.16.1.10主机访问80端口的策略。9 }2 l6 _3 s; z- m
; ~' }- G9 B3 j* ^3 g7 t2 v: V/ O- m/ f, U/ H: O
- V! N: p( F& z; Q& H. w/ h2.5、补充:) y, c1 P+ D% n% I. E1 [: B, g* G
B- e- R: Y) H: y5 q# Q% V: h
1、地址转换问题:
u7 H8 F$ T8 \/ K7 u
- U# W7 v+ b7 s3 j0 N4 B9 w(1)源地址转换,就是我们平常说的代理上网,应用场景就是代理内网用户上网。
0 c5 V; i1 S" v' v- U5 y5 f9 C4 A: E/ P
(2)目的地址转换,就是我们常说的端口映射,应用场景是发布服务到外网。' M% z, M" @+ T
. e, m" L# \- ]& R h
(3)双向地址转换,就是先将数据包的目的地址转换后再转换源地址,应用场景是内网以公网ip访问内网的业务系统。
' K* O0 w& } L2 k- m& P- I, x' O( q8 u$ M) U
$ P: N R+ W. B! r
2 Y2 P2 `" R- O1 L; F, S. c: V2、如何清除 firewalld 服务规则:
6 d+ X2 y4 a2 v
! d" s4 @4 C g+ f$ F" x! E(1)如果防火墙配置了规则很多如果清空规则呢,firewalld默认没有命令来清空规则。但是我们可以通过编辑配置文件来清除规则。$ O- c* e9 N7 P3 M
3 s5 w+ @0 a; ?# Y3 Z, b! U/etc/firewalld/zones/ 此处为配置生效后保存的配置文件,当用命令每次将新的配置写入到配置文件之中后,系统会自动的备份以: ?8 [/ C% {! }7 z
5 H. ^, A! [+ B# f! c前的文件。如果是手动修改需要先对配置文件进行备份。& n4 D/ O N6 z" V3 a
) S+ ]4 O. a; M W[root@centos-test ~]# ls /etc/firewalld/zones
# W/ c7 E0 d, V9 Q4 h: F
$ A3 U7 \) }: f" k$ B( c, Ipublic.xml public.xml.old
1 |! Y9 I6 l* v' v/ p, S3 s- n% x B) M' t, K) B3 V( p( x3 z5 \
, O2 r; k0 ~9 c5 s0 y( E/ ]
/ Q1 z0 {' |- x1 A3、使用默认模板的形式添加服务(用于定制服务端口):
/ }. S' n) M p$ O7 X6 c% z; L- O P, ?! d3 I7 z
(1)所有的默认规则都可以在 /usr/lib/firewalld/ 中找到:
% o# c" i0 o; B5 i' \# m# Q. Q- M
[root@centos-test ~]# ls /usr/lib/firewalld/ {. Q! s2 o7 d! s
/ M: C! B5 |( Z; k( Q. w% v+ @
helpers icmptypes ipsets services xmlschema zones* T+ c8 H1 g) R( n) o
3 `& c- z+ S5 q5 B
+ W6 v3 a4 |- g6 s0 h" x
1 @8 H+ W( l8 c i* t# B(2)复制默认目录下的规则到配置目录下:9 r( E. A) a) f0 o4 S
7 A: J8 ?' L, ?5 }+ D[root@centos-test ~]# cp -a /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/5 G2 ^4 O! _8 t
9 I' A+ e5 o9 c a
$ P& a7 L4 E8 y$ o& H1 f
5 e! T4 @( d$ d# G
(3)配置文件中包含了服务名,端口,还有服务的相关说明:
O& m/ Q* T/ ]
. a2 ]* t$ P1 E3 U" f c[root@centos-test ~]# cat /etc/firewalld/services/ftp.xml
1 \1 y2 H7 I, B0 j
3 ^, b9 y' V# G) S<?xml version="1.0" encoding="utf-8"?>) b3 e$ C, t) M8 n
- W- x( r8 ~/ e4 |% D
<service># W% B! z" g' l. Z
- D A- \ T% D6 e' M8 D<short>FTP</short>* n* S( O5 b+ Y+ p' c4 M' R. J
: F' j- c+ x% u5 f. g' i( {; ]: I
<description>FTP is a protocol used for remote file transfer. If you plan to make your FTP server publicly available, enable this option. You5 ^9 X& |" J, \& y" P* k: l5 J
& U0 t! i9 U8 K6 c9 H
need the vsftpd package installed for this option to be useful.</description> <port protocol="tcp" port="21"/>
5 w* [5 R# f/ K* K- k" l5 X: y4 X
<module name="nf_conntrack_ftp"/>
( U! E' I$ q7 J- _ L" ?" u
+ W2 j% z1 h' Z+ v+ g8 k</service>, Q) j! v1 e, l! `8 w! z& o
1 S/ U9 G, N0 W7 m' h! }5 V6 \9 G
9 J5 E y) X- @
" L. Q8 S6 ~8 t) ]* G7 o8 U- Y(4)在 /etc/firewalld/zones/public.xml 中增加一行 <service name="ftp"/>:
" E. ^( J) s% `5 ^! d( }+ `7 G O$ X* c" g3 t
[root@centos-test ~]# vim /etc/firewalld/zones/public.xml1 @' L% |1 T2 G2 \' k: B& ?* B
* x' w# d3 F* A
<?xml version="1.0" encoding="utf-8"?>
, S- H! V. ]3 v- M7 P2 v* U, t8 v3 \+ Q: Q3 l' N% G
<zone>! i7 ^: X/ v* G) n* P* W. d
) B1 V4 ]; i8 w x' N<short>Public</short>6 w4 [) D. b7 r2 F
% q3 r& T) X ~ p- Y2 \/ R
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming conn
Q$ E- X9 e; J* g" [
8 Z! u7 c9 w9 k9 R! n1 _. Y4 dections are accepted.</description>+ C# N$ Q. G* p. u( q( ]
* ` J, ?3 P' r& ]<service name="ssh"/>
- j4 ?7 M9 l7 |9 z- K L7 K7 k3 A
<service name="dhcpv6-client"/>+ I# o: S: U) L! d4 K
J, N$ A# U* _: M' `<service name="ftp"/>
3 j0 n0 F5 H; C/ W
7 X" t& b. g( A</zone>( w- s" p% _0 k; C
. ^: R0 a# Z& I8 e! X
4 j4 U9 h$ f; H1 a: i
% U7 Q9 z) D. Y* l" a6 ]8 O* C7 s(5)重载firewalld:
$ g, q q# @. ^( j: H( l/ ]3 ^& E
7 x2 _+ g, r1 D% j) K, z( ^. Q$ Q O[root@centos-test ~]# firewall-cmd --reload
& |* F6 ?2 [; {2 Z; D: @7 P4 B% z" o! H( {
, `% \; o/ n [
0 |+ H% u+ F0 }. m- P
(6)查看服务:9 z% @: K0 d/ M3 v) X
3 x; ], J/ V9 z6 O f' V) `, |
[root@centos-test ~]# firewall-cmd --zone=public --list-service
6 Y2 [" E0 P, H
* c |! U8 Q2 ^6 ?6 I+ xssh dhcpv6-client ftp/ z* ^; ^. T p$ k" L% ?( t1 @( y
8 w" W5 H8 q) j |
|