|
|
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"( F2 i4 ]. [' q7 `) n* U- B3 u
# E& [$ {4 D) E- S- s* |
% f2 X% P5 t, D7 T下面的是对特定ip允许访问8080端口(你也可以自己改)# K, }- m: V, ]+ U: Y! S4 f2 J
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"
0 ~# {0 c/ |# r0 c; p+ s9 h. p" ?% e( F3 K( T
( u+ y# ]% [ g- ^% i: `0 J
1.drop禁止特定ip连接ssh/22服务
; U3 l1 S: V$ x7 ^- o8 s2 d! G1 v9 }/ H* p9 w
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop". |9 P0 J1 k' v( M" x
firewall-cmd --reload
: _2 Z* d3 f: B* I5 { ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
) c) \# i9 }, T, M% O$ j" H2 \1 `! C, ^( t2 \2 d! z- X
: r4 `. m4 f! X% N I: |4 q
2.reject禁止特定ip连接ssh/22服务
# w* r0 | d2 j8 g( t9 \3 P1 c! @0 e* W7 O* l2 l, z
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"; S9 P% x) v% g6 }2 {
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"; m3 t2 Z+ v' f$ a
firewall-cmd --reload$ o3 o: a& n4 ?4 J6 i6 F
##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则% T' [; n8 E8 G' i
q9 j2 x& }3 z- J8 @2 a# x, z6 \2 p
3.accept运行特定ip连接ssh/22服务; a( p' }' ~, g& R
% V; q1 [7 Z% l9 l8 Hfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept"
- y# _: Z+ m) s5 Ufirewall-cmd --reload
3 r/ l$ T( c! J9 ~; B( a3 m- d
7 |) Y; ^8 M) p" i( b5 `4 ?! }+ O N2 |! _0 [' l9 L+ m; Z
防火墙内的策略动作有DROP和REJECT两种,区别如下:
7 L- L- A4 c# \* Y/ W# R K. ~; G$ z1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。$ L: q8 y4 C6 I
2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。8 K3 M; T {$ ~
3 h) {5 R; _7 V) f; u P至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。
. A$ q6 j) M) u/ r7 z# c, `9 j: J: t1 ~
一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。
+ @- V! s* d8 D# a; |! U) A$ I/ b7 K2 J: Z% ?6 B& |* O; x2 n
|
|