|
|
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"
7 D0 t, g! ~6 s( a8 m; q$ j3 D, H! C) v0 C; z; [9 a
9 f* L0 U3 V) a5 q下面的是对特定ip允许访问8080端口(你也可以自己改)/ [2 J6 ~0 j1 [4 L, c
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"
3 K. e9 B/ S% ~( B3 B }
( p- R# y# `+ j. |9 A& m- ?* X, ?
# U# }2 n) U/ M4 a5 N7 N7 O1.drop禁止特定ip连接ssh/22服务1 H; `& n8 e$ G# ?
n6 Q5 E$ U) ~( E0 }" W6 |3 b2 wfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop"
! o1 U5 k! V0 J9 Zfirewall-cmd --reload% z: o& e7 N: U: s: s( C
##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
$ F4 M7 p4 z% h0 {
0 d: y8 N4 |. `
/ @ c1 t2 u4 w8 | _* [' J6 c2 E$ S: n2.reject禁止特定ip连接ssh/22服务
5 z# D; x, A% z# u/ t) m& D9 _* H3 i* g9 p" _
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"
9 t# U, M8 C7 ?" x; E* Nfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"0 r. ]1 m; a i: c" Z3 W- \
firewall-cmd --reload
& N" W/ q9 _: C+ y) N3 W, g- G; g ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则
0 `( S2 K X9 ~0 d% }4 O! |# v0 u$ E& V8 l" f# |6 m
8 W. Y+ G# K) [8 k3.accept运行特定ip连接ssh/22服务
* h4 e- A/ b, L8 w( i I3 ^9 S
, H+ a9 `* O5 S% e5 g" yfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept"/ b3 @3 }, |2 s5 i3 X. L8 d
firewall-cmd --reload
7 Q5 K$ I8 f6 E! e! K \2 i, e1 c8 l
5 j. F5 T4 e9 [* W; \; A8 A% l1 F+ Z! Y
防火墙内的策略动作有DROP和REJECT两种,区别如下:
1 H6 j! Z% d9 K4 z1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。/ o. U8 b1 d( y I5 ?: [2 K' ^8 y
2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
2 b' j9 q/ [" V6 d) J6 m
3 t- L) D$ X1 u$ M至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。3 c9 l$ M' v0 q% a
, [& R& I% m% u# e0 S( `- X4 j! j一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。" _( c1 P+ j' b! g5 o
0 o! X- B( t( V) t. ?5 u |
|