加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

深入浅出分析 OpenStack 安全组实现原理

发布时间:2022-05-30 09:11:45 所属栏目:安全 来源:互联网
导读:在介绍OpenStack安全组前先简单介绍下iptables,其实iptables只是一个用户空间的程序,真正干活的其实是Linux内核netfilter,通过iptables创建新规则,其实就是在netfilter中插入一个hook,从而实现修改数据包、控制数据包流向等,对iptables使用方法不熟悉
         在介绍OpenStack安全组前先简单介绍下iptables,其实iptables只是一个用户空间的程序,真正干活的其实是Linux内核netfilter,通过iptables创建新规则,其实就是在netfilter中插入一个hook,从而实现修改数据包、控制数据包流向等,对iptables使用方法不熟悉的可以参考图文并茂理解iptables[1].
 
         简单地说,iptables就是通过一系列规则条件匹配执行指定的动作,因此一条规则就是由条件+动作构成,条件比如源IP地址、四层协议、端口等,动作如拒绝、通过、丢弃、修改包等,动作通常通过-j参数指定。
 
         比如拒绝192.168.1.2访问目标22端口,只需要添加如下iptables规则:
 
         除了以上的-s、-p、--dport等参数作为匹配条件外,iptables还支持如-d匹配目标IP地址,-i、-o分别指定从哪个网卡进入的以及从哪个网卡出去的。当然这些匹配条件还不够,甚至都不支持匹配MAC地址。iptables为了满足不同的需求,通过扩展模块支持更多的匹配条件,主要分为如下两类:
 
功能加强型:比如前面的--dport参数只能匹配单个port或者连续的port,如果需要匹配多个不连续的port,则不得不通过添加多条规则实现。mulport扩展模块允许同时指定多个port,通过逗号分隔。再比如ip-range模块,支持指定ip地址段。
新功能:比如mac模块支持匹配源MAC地址。time模块支持通过时间段作为匹配条件,比如实现每天0点到8点不允许外部SSH。
不同的扩展模块支持不同的参数,比如mac模块,支持--mac-source参数。
 
前面提到iptables通过-j指定执行的动作(target),iptables常见的target如下:
 
ACCEPT:接收包,直接放行,不需要在匹配该链上的其他规则,注意是该链,其他链的还是需要匹配的,即只是说明通了一关,后面几关能不能通过还不好说。
DROP:直接丢弃包,包都丢了,当然也不需要在匹配其他任何规则了。
REJECT:拒绝包。这个和DROP有什么区别呢?DROP是直接丢弃包,不做任何响应,客户端会一直在傻傻地等直到超时。而REJECT会响应拒绝消息,客户端能收到拒绝包并作出反应,不需要一直盲等。
LOG:仅仅记录下日志。
当然还有实现NAT的SNAT、MASQUERADE、DNAT,因为安全组实现涉及不到,因此不做详细介绍,另外还有RETURN以及指向另一个链的动作,等后面介绍了子链再讨论。
 
动作通常都是短路的,也就是说一旦匹配规则并执行动作,就不会继续往后去匹配该链的其他规则了,当然这并不是绝对的,比如LOG动作就是例外,执行该动作后会继续匹配下一条规则。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读