Neutron总结-security group
来源:互联网 发布:小说哪个软件好 编辑:程序博客网 时间:2024/05/22 02:01
Neutron 为 instance 提供了两种管理网络安全的方法:
安全组(Security Group)和虚拟防火墙。
安全组的原理是通过 iptables 对 instance 所在计算节点的网络流量进行过滤。
虚拟防火墙则由 Neutron Firewall as a Service(FWaaS)高级服务提供。其底层也是使用 iptables,在 Neutron Router 上对网络包进行过滤。
这里先介绍安全组。
默认安全组
每个 Project(项目)都有一个命名为 “default” 的默认安全组。
点击菜单 项目 -> 计算 -> 访问 & 安全,查看 Security Group 列表。
点击“管理规则”按钮,查看 “default” 安全组的规则。
“default” 安全组有四条规则,其作用是:允许所有外出(Egress)的流量,但禁止所有进入(Ingress)的流量。
当我们创建 instance 时,可以在 “访问 & 安全” 标签页中选择安全组。如果当前只有 “default” 这一个安全组,则会强制使用 “default” 。
当前在 compute2 上有 instance “test2”。
在 compute2上执行 iptables-save 命令查看相关规则。iptables 的规则较多,这里我们节选了 test2 相关的规则。
这些规则是 Neutron 根据安全组自动生成的。
test2 的 TAP interface 为 tap700eb1c9-8c,可以看到:
1. iptables 的规则是应用在 Neutron port 上的,port 在这里是 test2 的虚拟网卡 tap700eb1c9-8c。
2. ingress 规则集中定义在命名为 “neutron-openvswi-i700eb1c9-8” 的 chain 中。
3. egress 规则集中定义在命名为 “neutron-openvswi-o700eb1c9-8” 的 chain 中。
下面我们通过 dhcp namespace 对 test2 进行 ping 和 ssh 测试。
root@controller:~# ip netnsqrouter-d0945bdd-e860-4f17-b386-80d4ddbb9d3cqdhcp-838d7441-7c25-4b02-8698-18d76ef670beqdhcp-f66a4f50-6ce1-452f-a618-5ecf17f1f3e7
root@controller:~# ip netns exec qdhcp-f66a4f50-6ce1-452f-a618-5ecf17f1f3e7 ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever11: tap80b8cf90-b7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default link/ether fa:16:3e:d1:ca:2a brd ff:ff:ff:ff:ff:ff inet 172.16.100.10/24 brd 172.16.100.255 scope global tap80b8cf90-b7 valid_lft forever preferred_lft forever inet 169.254.169.254/16 brd 169.254.255.255 scope global tap80b8cf90-b7 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fed1:ca2a/64 scope link valid_lft forever preferred_lft forever
root@controller:~# ip netns exec qdhcp-f66a4f50-6ce1-452f-a618-5ecf17f1f3e7 ping 172.16.100.19PING 172.16.100.19 (172.16.100.19) 56(84) bytes of data.^C--- 172.16.100.19 ping statistics ---7 packets transmitted, 0 received, 100% packet loss, time 5999ms
root@controller:~# ip netns exec qdhcp-f66a4f50-6ce1-452f-a618-5ecf17f1f3e7 ssh 172.16.100.19^C
无法 ping 和 ssh test2 (172.16.100.19),可见当前的规则实现了 “default” 安全组,所有 ingress 流量都被禁止。
修改安全组规则
Neutron 默认的安全组规则会禁止掉所有从外面访问 instance 的流量。
下面我们修改安全组的配置,允许 ping 和 ssh instance。
有两种方法可以达到这个目的:
1. 修改“default” 安全组。
2. 为 test2 添加新的安全组。
这里我们采用第二种方法。
在安全组列表页面点击“ 创建安全组”按钮。
为安全组命名并点击 “创建安全组”。新的安全组 “allow ping & ssh” 创建成功。
点击“管理规则”按钮,查看 “allow ping & ssh” 的规则。
系统默认定义了两条规则,允许所有的外出流量。为清晰起见,可以点击按钮“删除规则”删除这两条规则。
点击“添加规则”按钮,添加允许 ping 的规则。
“规则” 选择 “所有 ICMP 协议”,“方向” 选择 “入口”,然后点击 “添加” 按钮。
同样的方式添加 ssh 规则。
在列表中查看添加成功的规则。
接下来设置 test2,使用新的安全组。进入 instance 列表页面,点击 test2 下拉操作列表中的 “编辑安全组”
可以看到 test2 当前使用的安全组为 “default”,可选安全组为 “allow ping & ssh”。
点击安全组 “allow ping & ssh” 后面的 “+” 按钮。
点击 “保存”。
iptables 会立即更新,下面通过 对比 查看 iptables 前后的变化。
“allow ping & ssh” 安全组引入了下面两条 iptables 规则。作用是运行 ingress 的 ssh 和 ping 流量。
-A neutron-openvswi-i700eb1c9-8 -p icmp -j RETURN-A neutron-openvswi-i700eb1c9-8 -p tcp -m tcp --dport 22 -j RETURN
测试一下,现在能够 ping 和 ssh test2 了。
root@controller:~# ip netns exec qdhcp-f66a4f50-6ce1-452f-a618-5ecf17f1f3e7 ping 172.16.100.19PING 172.16.100.19 (172.16.100.19) 56(84) bytes of data.64 bytes from 172.16.100.19: icmp_seq=1 ttl=64 time=1.45 ms64 bytes from 172.16.100.19: icmp_seq=2 ttl=64 time=0.631 ms64 bytes from 172.16.100.19: icmp_seq=3 ttl=64 time=0.642 ms64 bytes from 172.16.100.19: icmp_seq=4 ttl=64 time=0.641 ms^C--- 172.16.100.19 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 2999msrtt min/avg/max/mdev = 0.631/0.841/1.451/0.352 ms
root@controller:~# ip netns exec qdhcp-f66a4f50-6ce1-452f-a618-5ecf17f1f3e7 ssh cirros@172.16.100.19The authenticity of host '172.16.100.19 (172.16.100.19)' can't be established.RSA key fingerprint is 9a:b5:80:77:5d:46:d9:f7:ac:47:44:43:7d:e1:97:69.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '172.16.100.19' (RSA) to the list of known hosts.cirros@172.16.100.19's password: $ ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether fa:16:3e:eb:47:85 brd ff:ff:ff:ff:ff:ff inet 172.16.100.19/24 brd 172.16.100.255 scope global eth0 inet6 fe80::f816:3eff:feeb:4785/64 scope link valid_lft forever preferred_lft forever$
小结
安全组有以下特性:
1. 通过宿主机上 iptables 规则控制进出 instance 的流量。
2. 安全组作用在 instance 的 port 上。
3. 安全组的规则都是 allow,不能定义 deny 的规则。
4. instance 可应用多个安全组叠加使用这些安全组中的规则。
文章参考每天5分钟玩转OpenStack安全组相关内容,为学习笔记:
http://www.cnblogs.com/CloudMan6/p/6081430.html
http://www.cnblogs.com/CloudMan6/p/6089335.html
- Neutron总结-security group
- neutron security group
- Neutron 理解 (8): Neutron 是如何实现虚机防火墙的 [How Neutron Implements Security Group]
- Neutron 理解 (8): Neutron 是如何实现虚机防火墙的 [How Neutron Implements Security Group]
- openstack neutron Unauthorized: Authentication required和neutron security-group-list 404 not Found
- 云安全之Neutron 是如何实现虚机防火墙的 [How Neutron Implements Security Group]
- 云安全之 Neutron 网络 和 Nova虚机 防火墙的 [How Nova Implements Security Group and How Neutron Impleme
- Neutron 理解 (9): OpenStack 是如何实现 Neutron 网络 和 Nova虚机 防火墙的 [How Nova Implements Security Group and How
- Neutron Group Based Policy 印象 (by quqi99)
- Neutron之Iptables总结
- 两张图总结 Neutron 架构
- Neutron总结-iptables
- java.security.acl.Group翻译
- OpenStack中的Security Group实现
- OpenStack中的Security Group实现
- Neutron总结-linuxbridge+vlan网络
- Neutron总结-openvswitch+vlan网络
- Neutron总结-linuxbridge+flat网络
- 格式化字符串
- Spring入门实战之Profile详解
- scroller原理
- c++ 类型转换const_cast<type id>(num);
- 文件操作
- Neutron总结-security group
- 使用Java读取Mysql的DateTime类型数据
- 代码与编程题
- [cocos2d-x]TextureCache和spriteFramecache
- 如何用Eclipse在Resin中调试Web应用程序
- 关于别的电脑访问node.js建的服务器
- Dijkstra堆优化学习
- Session
- 剑指Offer算法题之已知两种遍历方式重建二叉树--面试题6:重建二叉树