|
|
( e4 G* C4 G ^+ C# J
UFW(Uncomplicated Firewall)是 iptables 的一个前端接口,旨在提供一个简单易用的方式来管理 Linux 的网络防火墙。它允许用户通过更直观的命令来定义允许或拒绝特定端口、协议或 IP 地址的网络流量。
( y1 E' N2 l* |9 n7 J6 @
5 y7 n W# ]4 q3 j0 GUFW 的主要优势包括:
z. {3 l3 g! j& q* b4 Z易于使用: 相较于直接使用 iptables 命令,UFW 的语法更加简洁明了。6 b- T G4 K- J! n
默认策略: UFW 默认拒绝所有入站连接,只允许明确允许的连接,这提供了一个安全的起点。
+ C* F P+ S8 q$ U模块化: 支持预定义的应用程序配置文件,简化了常见服务的配置。 Q9 I' y) \2 Z8 Z8 ^+ u
IPv6 支持: UFW 同时支持 IPv4 和 IPv6。) B- }, ^$ a. A$ H" g* g h+ p4 K' a9 d
$ E2 e/ `: M4 G3 V安装ufw% X" L" G& u5 w' N" w
sudo apt-get install ufw
: E' S$ |" o3 t& }# x/ e" ^/ K4 B' M9 U, ~
阻止单个IP地址% R& J8 ]1 z- S9 i- ?
sudo ufw deny from 192.168.1.100 to any
1 t5 m1 X8 s. e j4 A7 @( w8 G& E' C- h# N5 r- O
阻止IP地址段- k2 A. k" K9 x2 i3 z& s( y
sudo ufw deny from 192.168.1.0/24 to any: n- |; z) W% r5 x5 _, f
" D8 {: L C9 \+ Z$ j0 L+ ]允许所有 IP 地址访问 22/tcp 端口
& S8 t1 x1 ^7 z) Tsudo ufw allow 22/tcp
# }. U: K$ L& U% U6 n! R4 l" @) o, d3 g [$ y3 [
允许特定 IP 地址访问 22/tcp 端口 (更安全)
) w: D B4 l. o5 z: @, Xsudo ufw allow from 192.168.1.100 to any port 22 proto tcp- K4 n* B' p1 `9 G2 n! Y' b
& o4 D6 I8 O d4 t" A
d6 e5 l: M q) @- v
解释:
; s/ o- B7 o6 Iallow:表示允许流量。, }9 v: Q& }; _& l
22/tcp:指定端口号(22)和协议(TCP)。! I" o" N2 m9 ?! a7 `" ]
from <IP地址>:指定允许的源 IP 地址。, I5 P0 O! g/ F2 S6 g% X
to any:表示目标地址是服务器上的任何接口。& Z3 z0 e- D, F( V( Y) u7 w4 W% \
proto tcp:指定协议为 TCP。1 _4 Z! C4 S6 D) t( C' d
$ j! @, V, ?8 ~+ {) _
允许特定子网访问 22/tcp 端口
. g) _3 F7 x5 ]. ^$ \$ Lsudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp9 b' X2 O7 |0 k, _
% m2 S9 A- _: [允许通过服务名称(推荐): d0 y" c! Z: E) f3 e3 N' F+ O
UFW 支持通过预定义的服务名称来配置规则,这比直接指定端口号更具可读性和维护性。SSH 的服务名称通常是 ssh。
/ ?" |5 y& N; x8 t6 o, V. x8 gsudo ufw allow ssh
2 z$ C9 w& P4 x" ]5 s; C& V- Q" u' P; l) ?0 H8 t
删除允许所有 IP 访问 80/tcp 端口的规则1 {0 u$ F2 i8 B( f; W
sudo ufw delete allow 80/tcp
7 z, ]' I6 Z5 t
4 A, L1 Z! W" j( S通过行号删除 (推荐)) }* K( l8 Z0 B. r8 P, o
( c: V5 _! B+ e0 S) E# o- c6 q6 r
使用 sudo ufw status numbered 查看带有行号的规则,然后使用 sudo ufw delete <行号> 来删除。2 A! L/ D" J% @+ a1 g& |6 n
假设您想删除行号为 2 的规则:sudo ufw delete 25 W4 }$ C5 m% R2 A- [
& w, Y$ d3 N; d7 k+ ?
2 T/ I% o& C5 w; z2 B0 D. h
如果您需要临时禁用防火墙,可以执行:sudo ufw disable7 T+ F/ h- K2 [+ ~# z
4 N: W) t' [# N
如果您想删除所有已配置的规则,并恢复到初始的禁用状态(包括默认策略),可以使用:sudo ufw reset
' f% j+ k, ~4 Z' b5 e
1 I) n6 J4 t. |; \( J+ L允许特定端口范围, h% q6 a. P" F6 q+ ]
sudo ufw allow 60000:61000/tcp
0 X% b! D' T2 j- u7 xsudo ufw allow 60000:61000/udp& H& q( d& ^/ T# f* v' V& ^
( s( f& u0 O- p0 u0 T
拒绝来自特定 IP 的所有连接! i, U! d, S S: {# a" H
sudo ufw deny from 192.168.1.1009 ?2 X( z8 O* {% c; T7 I% i
7 ~% E, ~: S5 Y. T
拒绝来自特定 IP 的特定端口连接# A9 N% i+ k% B6 D5 s
sudo ufw deny from 192.168.1.100 to any port 22 proto tcp! k% V3 Z9 T4 ^8 o: @
. f& n% j D; ~查看可用应用程序配置文件
- @& U- s/ \0 Y+ f: p6 fsudo ufw app list
) O) R1 H5 ]7 s) Z2 G& D: f) ~$ Q$ G( [- }( \" x7 I0 I9 i
启用ufw并查看状态
1 o/ z2 X0 S4 a6 }& O- |sudo ufw enable: ^% a9 {- U( _7 s6 F; E( C
sudo ufw status
$ L+ B3 h: J6 G8 w2 s! ^
3 ~3 O$ Q. w: f: \) y b2 D6 t
" W: i( Y& h4 L# }& C4 f' u核心命令回顾:
6 C6 ?5 |# ~0 u' y( f3 K, g3 h$ J, ^' K% ?; B9 W) e) N! t7 H4 D
sudo ufw enable - 启用防火墙
7 u8 E3 Q7 z5 J+ U) lsudo ufw disable - 禁用防火墙9 U& f3 T2 h% n$ \' D+ S8 u
sudo ufw status - 查看防火墙状态
" L4 |# ] w* T; o% T8 Ysudo ufw status numbered - 查看带行号的防火墙规则
( N* D) u* ]: Dsudo ufw allow <port>/<protocol> - 允许流量 A$ _# s0 `$ b
sudo ufw deny <port>/<protocol> - 拒绝流量* V6 c1 |. h3 J3 P( {% C; G
sudo ufw limit <port>/<protocol> - 限制连接频率# S3 J! b# A7 o- V& f. _
sudo ufw delete <rule> - 删除规则" e% K9 h9 o8 K1 E! ?/ U5 x* d7 J& G
sudo ufw reset - 重置防火墙
. s6 _: @! h8 N8 q! g5 V9 |" g4 K$ e( Y* L: Y% @
|
|