|
|
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept", g6 D. r, y. A. K% A; ]
2 m) W( F; u2 D1 B; l% R
& }: `( z# L$ }. [0 K0 \/ G' I$ D下面的是对特定ip允许访问8080端口(你也可以自己改)9 n1 c+ p3 E2 V4 x G0 l3 }- b
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept" K/ y9 A7 i0 q2 l( y+ }
: i$ F" D% u Y% ]
/ t# F/ W T1 t/ Z1.drop禁止特定ip连接ssh/22服务, D B, n; ] U% ^1 |# m$ a+ w
c; B- C9 h7 q
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop"$ _0 [1 u1 Y: j) `( D% i4 ]
firewall-cmd --reload! t8 O' T5 E- c9 V9 O- c
##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
: a { A4 U: c _& [4 [; n- W; t( M% D# |" }* Z' X9 c% l: o$ s
9 {8 P) ^; @" X; @6 m' h. [& Q2.reject禁止特定ip连接ssh/22服务. D* [+ [) m# R3 q3 n9 z
2 u6 |3 O. Q# o
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"
8 b. F4 [( ]- bfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"
0 T L4 C7 \( H) e: s0 rfirewall-cmd --reload4 J* |. L: n6 Q" Q
##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
; T8 c8 K7 R) I" c; G7 |! K4 t
+ {7 x7 N3 A! r8 G1 k$ t0 O1 O, M6 ?4 M! z: v
3.accept运行特定ip连接ssh/22服务
% Y! Q. j2 u( x! T( U. _* C7 ]" i2 u
) p- @9 |" U+ q, hfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept"/ S7 Z# }4 K( r3 g/ [
firewall-cmd --reload, F7 {8 h4 R2 H- I" |. G
8 Y! A B1 V( J1 t# W
2 s, T4 [: s; P5 `
防火墙内的策略动作有DROP和REJECT两种,区别如下:. K6 ^ O( k, X% ]& g
1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。7 X/ Y7 P0 o" W& p* l
2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。) z; ]* g, ]# Y. f6 u) B8 }1 D
+ ^/ T9 R& Y! ?* E, G
至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。* B+ f: p% {" Q' O
% A4 E+ w. p2 W' D% _; }
一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。
. ^! Y, h1 g% H( v) d! ?
# Z# C! Q& U C$ k2 X. U- w6 v |
|