|
|
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"/ G. P0 ?; y" P7 H/ [
. B8 O3 \5 e1 G* V2 r- M
1 G8 |9 M& k4 e4 e& a
下面的是对特定ip允许访问8080端口(你也可以自己改)
* S6 ]* x3 b2 t, l: k) y+ Sfirewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept", T3 ~$ ?* O0 s& n7 @! h
5 l0 t- R! r+ Y' }6 Y, ]
; l. f/ u7 o+ p8 o @* c! Z( `$ L# `
1.drop禁止特定ip连接ssh/22服务
7 D$ F7 \2 V' c* T8 V5 s! h2 S" e
5 Q/ x2 w% O; R* @6 r& Kfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop"
) N7 u" q2 ~2 @: b; K' ]0 l; Rfirewall-cmd --reload2 h; Q. x0 b( C0 O
##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则0 @5 O4 s2 o2 v4 G6 A# y) x! f
1 ?3 [ g+ M. k9 A* o4 f
* G5 w1 \9 k& N; t2.reject禁止特定ip连接ssh/22服务- f: W$ V+ W; k; g* f' m
w% X) i1 X$ j2 J) Z
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"8 o* t) h) [: H0 e
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"9 n, } U s) D8 ~
firewall-cmd --reload$ J- E z, s* z/ a Z3 Z2 b
##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则; p' i* B" u) i7 a1 D
, p" ^8 q* p: d+ J
7 Y0 P& \+ n1 E6 ]6 X* D7 d3.accept运行特定ip连接ssh/22服务( C. R: e% Y/ d# L2 T% p n
; C4 O8 q+ T+ E( F2 m; ?3 v
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept"
" S! M" Q6 E' N- F) K. }# T. nfirewall-cmd --reload
7 W) r% G }. g7 [
4 W, a5 ^2 i7 [6 x
4 ?( u4 W" N' D防火墙内的策略动作有DROP和REJECT两种,区别如下:0 T& ]" |" o/ b' T* X
1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。
* p% L- g1 L$ \8 E8 U$ W6 {' Y2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。2 j4 p$ v2 @8 i2 v8 N
9 H6 I/ j( Y; e/ b% [* I) z) c2 s至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。. {8 W0 X' ?1 y0 i! v4 P
& E% ~% M$ Z0 z. I' A& C一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。
9 W2 z6 O7 Q1 y+ o: d7 f
- |4 w: R0 [4 D/ g, i( |" L' c |
|