|
|
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"- J- m# p2 V$ F4 q
- i9 Z1 I. d* e! H6 f7 a2 `
3 v! ]7 B2 O* ]下面的是对特定ip允许访问8080端口(你也可以自己改)
, F3 S: D3 I2 j; ~& n( }$ Mfirewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"& K* u( U" ~$ x7 C3 P
6 M# ^5 }! o' Y# Y9 N8 h1 \. O. }% M
1.drop禁止特定ip连接ssh/22服务! X8 t2 E. c9 H! e" i- K7 k
( {2 h* v7 U# U2 S, H3 A7 E4 C. A( tfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop"
1 }/ n( T! `; Wfirewall-cmd --reload
- X0 t! y' @9 v$ b" Y: N9 l( k9 T; o) ^: ~ ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
: @1 z4 ?. p4 y! _5 i0 f) V( h
! d) X4 o1 l$ G2 z* O$ L& i5 s' T! }% g5 N. s4 l- w
2.reject禁止特定ip连接ssh/22服务
/ D7 ?& E" w( }/ |. R1 ^( J' q% C9 l' s3 @6 [( i
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"
/ C+ H d/ q, }0 qfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"
# T* l6 ~: F* \! c6 h3 r& b# x* {firewall-cmd --reload
- C) M/ M; [" N1 L! Z ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则2 \7 {: C0 W& S) b. Z+ ^4 l( R
* W; _, B, X- {/ s, f) w5 i; x% j- I/ c) u' y
3.accept运行特定ip连接ssh/22服务
+ e* e5 x, v# r9 r- C' l, ~4 A+ c- r/ @* Q* m6 K+ [9 M& q. _
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept"
' F: ^1 N' K3 b2 s. Y( Lfirewall-cmd --reload
4 N7 n" O% @( G9 B" M: ?6 b" b; b a2 J/ k( o
. L* U3 n5 G" ` D3 Y R) q防火墙内的策略动作有DROP和REJECT两种,区别如下:5 G* J# \' c2 U H% u, r" G3 G# R
1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。- @3 c$ _3 E" ^* J* S- u
2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。6 x% O" i- e D$ b- s/ Y
% C. l+ G$ Z! B3 W9 P8 E2 r: X
至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。8 [6 n+ V9 i* f, ]
) [# ?% S( T0 h7 T z9 n7 z一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。
) T& z' F9 w" \# O. \$ `; g
. W, q/ \* X: m- Z$ x, u4 [ @+ p) @5 ] |
|