基本市面国内的防火墙都是用iptables来做的。
掌握好几个主要选项:
-N --new 自定义链表 -X 删除一个自定义链表 -E --rename-chain 重命名链表 -j --jump [自定义链表] -A 后面总是接链名举一个openwrt里面iptables的实际配置:
-N delegate_input # 自定义一个链表 -N zone_wan_input # 自定义一个链表 -t filter -A INPUT -J delegate_input # 所有进filter表的流量去链delegate_input -A delegate_input -i eth1 -j zone_wan_input # eth1进来的流量去链zone_wan_input -A zone_wan_input -p tcp -m tcp --dport 80 -m comment --comment www -j ACCEPT -A zone_wan_input -p tcp -m tcp --dport 22 -m comment --comment ssh -j ACCEPT
链是可以循环嵌套的,这是一个很灵活的实现思路。
2. 防火墙与访问控制的区别
防火墙实际上与访问控制有很多不同的地方,防火墙的接口有几个与三层交换机接口不同的特性:
- 接口需要配置名称
- 每个接口都需要配置安全级别
- 级别高的接口可以访问级别低的接口
- 低级别不能直接访问高级别网络,但可以通过访问控制列表开放
与访问控制最大区别,你配置的过程中会发现防火墙的由低到高访问,只需要配置一个方向的ACL,而正常三层交换机做访问控制,需要做两个方向的ACL应用。
3. 阿里云安全组策略的特性
如果在aliyun上去对VPC网络做安全域划分与访问控制,我的最佳实践如下:
- 默认分组加入所有的ECS实例,注意RDS没办法加入,这步实现的是:让vpc内网的所有ECS可以互访。
- 根据相同的安全保护属性去创建安全组,注意RDS在默认是拒绝策略的时候,是没有办法与ECS直接通信的,需要额外开放
- 安全组规则与普通的防火墙规则,还是有很多不同之处的,安全组的规则没办法使用五元组,在两个方向中,其中的两个元组是锁定的,如下:
- 入方向可定义(三元组):协议号,端口号为本地端口,授权对象为远端的IP地址
- 入方向默认(二元组):安全组ECS的ip地址,对端任意端口号
- 出方向可定义(三元组):协议号端口号为远端端口,授权对象为远端的IP地址
- 出方向默认(二元组):安全组ECS的ip地址,本端任意端口号
关键特性:
而且出方向的话,是本端先去发起的连接,就不需要再入方向再重新添加一条了,因为会有状态监测
4. 安全域划分与网络访问控制 的细腻度与排错,代表着安全功力
其实访问控制做得越细致,出现业务故障的概率就越高,而且规则要做得周到齐全,必须要对整体的业务场景很熟悉,包括有多少个数据库主机,缓存主机、会话保持主机、多少第三方接口,第三方接口分别用了哪些TCP端口,针对地址跟协议号,端口号进行开放,实现最小授权的原则。
当然排错的难度也很大,这需要开发与测试人员配合较好的情况,才能较顺利的排除故障,而最常见的办法就是让开发人员去调试他们的应用程序,得到具体的错误日志去排除故障,这是较好的办法,如果没有这样的条件(在某种开发人员不配合或者经验不足的情况下),就只能靠自己去服务器看正常情况的网络连接(netstat -an)与配置了ACL的网络连接去做对比,看看那些连接被挡导致的故障。
不得不说google的beyondCorp计划:
目的:彻底打破内网之别
原因:
1)一旦内网边界被突破,攻击者就很容易访问到企业内部应用。
2)现在的企业越来越多采用移动和云技术,边界保护变得越来越难。所以干脆一视同仁,不外区分内外网,用一致的手段去对待。
如果内网环境的概念被抛弃,所有主机对于其他主机的访问态度,都要如同来自公网不可信任主机去对待,那么就没有网络安全边界之称,这样就可以最大限度的发挥木桶效应的原则。
没有评论:
发表评论