|
|
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"/ N. ^# w. V/ F& I3 o
+ j4 |- i& [+ g& t6 N+ l) `7 N& S& }9 M$ q0 B
下面的是对特定ip允许访问8080端口(你也可以自己改)
1 ~% N; m( j. i' [firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept"
- A8 h7 X' O" ~- P+ h* G
8 g5 X; I) |. m
9 c4 w+ v- l" x9 o1.drop禁止特定ip连接ssh/22服务3 q: t/ ?! ?- e- z+ d- e
8 ^ S; t+ @/ v8 w3 p& F( v7 S
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ service name=‘ssh‘ drop"
# {# a5 i; O/ c( m: Jfirewall-cmd --reload! f0 E0 t6 `3 I8 c( \2 B) C
##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则! o; S# E( [) c
7 _4 x: T. z0 T K' S
: M4 e. G/ r7 B+ R2.reject禁止特定ip连接ssh/22服务
# b2 @: ^9 l2 A! B" Q9 c& F
- f/ G! ?/ {7 M, }firewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ service name=‘ssh‘ reject"
' ^1 X! H d2 v" X% F- @! k$ qfirewall-cmd --permanent --zone=public --add-rich-rule="rule family=‘ipv4‘ source address=‘x.x.x.x/24‘ port port=22 protocol=tcp reject"
/ v6 O+ ]" |7 Sfirewall-cmd --reload
{3 w" f8 T- N ##重新加载防火墙配置,不然firewall-cmd --list-all-zones不会显示刚加上的规则$ b. V5 b; T, Y+ i$ o
3 U+ V+ t' [1 A4 F9 P- m( t. p( m* u6 g, I8 x. K) h9 r4 d4 C
3.accept运行特定ip连接ssh/22服务
3 i' H, }1 Y, \* ~9 R9 t: `! p8 H9 S; W
firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=‘x.x.x.x/24‘ port port=22 procotol=tcp accept". t+ k y u w5 J" y: U7 L* v- a
firewall-cmd --reload# x: _5 i; t) p3 `: |2 ]9 J
* `+ a8 @0 @- ~1 S$ y) Q5 v% n8 g- B: k- c( D" l6 G
防火墙内的策略动作有DROP和REJECT两种,区别如下:
% Z5 F/ G2 A/ Y/ L0 y8 \( N1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。
5 m/ R7 i2 u; N/ C. ]! {2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
3 Y. c) A) R1 J+ l3 B2 j7 c0 W Z* {5 A" ~
至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。2 i, T) C* n+ I. c
3 G: s H# f5 t0 |& y( c$ A4 c一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓黑客攻击的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。
' T" `( J/ C) i$ x9 ~: Q- T$ W2 c3 u s( C* E p$ s1 Z- _! H
|
|