代码编织梦想

Harbor: https://github.com/goharbor/harbor

# Operation System: CentOS 7
# Docker Version: 19.03.13
# Harbor Version: 1.10.6
# Docker-Compose Version: 1.27.4 

Harbor的安装与使用

Harbor离线与在线安装

Harbor官方安装文档:https://goharbor.io/docs/2.0.0/install-config/
推荐使用离线的安装模式,离线安装完成后会包含所需的漏洞库文件。

# 从GitHub下载对应版本的offline安装包并解压
tar -xf harbor-offline-installer-v1.10.6.tgz -C /opt/

# 修改配置文件
vim /opt/harbor/harbor.yml

# 修改主机名
hostname: 10.10.10.11

# 注释HTTPS
# https:
  # port: 443
  # certificate: /your/certificate/path
  # private_key: /your/private/key/path

# 执行安装
./install.sh

image-20201203154954217
执行完成以后,直接访问Harbor Web系统(admin/Harbor12345
image-20201203155346815

启用HTTPS

将Harbor部署在生产环境需要启用HTTPS协议,首先我们需要创建对应的HTTPS证书。官网提供了详细的过程(https://goharbor.io/docs/2.0.0/install-config/configure-https/),但是我在使用官网的配置中出现了错误,所以这里我记录一下我的配置过程,在我的配置过程中,我并没有使用域名,而是直接使用了IP。

生成证书颁发机构证书

# Generate a CA certificate private key
openssl genrsa -out ca.key 4096

# Generate the CA certificate
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=zero/OU=Personal/CN=10.10.10.11" -key ca.key -out ca.crt

生成服务器证书

# Generate a private key
openssl genrsa -out 10.10.10.11.key 4096

# Generate a certificate signing request (CSR)
openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=zero/OU=Personal/CN=10.10.10.11" -key 10.10.10.11.key -out 10.10.10.11.csr

# Generate an x509 v3 extension file
vim v3.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:10.10.10.11

# Use the v3.ext file to generate a certificate for your Harbor host
openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in 10.10.10.11.csr -out 10.10.10.11.crt

在Harbor中部署证书

vim harbor.yml

# https related config
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /opt/certificate/10.10.10.11.crt
  private_key: /opt/certificate/10.10.10.11.key

# 重新安装Harbor
./prepare
./install.sh

image-20201203160225699

Harbor身份鉴别与访问控制

创建用户

image-20201203162814517

创建项目

image-20201203162735564

为项目分配用户并配置角色

image-20201203162855139

上传镜像至Harbor

客户端配置信任自建证书

新增一个Docker客户端:10.10.10.13,客户端登录私有镜像仓库:docker login -u develop_administrator -p Admin@123 10.10.10.11

如果我们未配置HTTPS证书,报错如下:

Error response from daemon: Get https://10.10.10.11/v2/: dial tcp 10.10.10.11:443: connect: no route to host

image-20201203165458420
按照上述配置HTTPS证书后,直接进行登录会报错如下:

Error response from daemon: Get https://10.10.10.11/v2/: x509: cannot validate certificate for 10.10.10.11 because it doesn't contain any IP SANs

image-20201211214038388
我们需要将服务器的证书下发至客户端

# 客户端创建目录
mkdir -p /etc/docker/certs.d/10.10.10.11

# 在服务端将证书文件发送给客户端
openssl x509 -inform PEM -in 10.10.10.11.crt -out 10.10.10.11.cert
scp 10.10.10.11.cert root@10.10.10.13:/etc/docker/certs.d/10.10.10.11/
scp 10.10.10.11.key root@10.10.10.13:/etc/docker/certs.d/10.10.10.11/
scp ca.crt root@10.10.10.13:/etc/docker/certs.d/10.10.10.11/

# 在客户端重启docker
systemctl restart docker.service

如果希望在测试环境不考虑使用https,可以在客户端配置insecure-registries,该参数默认依旧使用https,在https不可用时使用http。

# 在客户端创建daemon.json文件
vim /etc/docker/daemon.json

{
  "insecure-registries": [
    "10.10.10.11"
  ]
}

# 在客户端重启docker
systemctl restart docker.service

此时我们登录私有镜像仓库:
image-20201211221904576

上传镜像至私有仓库

# 基于原始镜像构建基础容器
docker run -it -d --name centos -p 80:80 centos:centos6.6 /bin/bash

# 在容器中安装所需的环境软件

# 基于基础容器创建镜像
docker commit -m "add nginx web server" -a "zero.zhang" 943c9e589ce3 10.10.10.11/develop/nginx_server:v1.0

# 上传基础镜像至私有仓库,在上传之前,必须登录私有镜像仓库
docker push 10.10.10.11/develop/nginx_server:v1.0

image-20201211223456794

集成容器镜像扫描Clair

# 重新安装harbor
./prepare
./install.sh --with-clair

image-20201203184238414
上传一个CentOS 6.6的镜像执行扫描,点击Tag就可以查看漏洞详情:
image-20201204094006302

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/bloodzero_new/article/details/111055044

前端安全(3):跨站请求伪造 CSRF(Cross-site request forgery)-爱代码爱编程

一、什么是CSRF CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。 一个典型的CSRF攻击有着如下的流程: 受害者登录a.com,并保留了

vulhub漏洞复现系列之struts2(s2-048、s2-052、S2-053、s2-057、s2-059)-爱代码爱编程

本来想把struts2剩下的靶场全部打完然后写博客分享给大家,但是vulhub搭建实在是太慢了!!!无奈只能先把复现好的这几个分享出来了。 (CVE-2017-9791)s2-048 一、漏洞简介 当实用了Struts2 Struts1 插件时,可能导致不受信任的输入传入到ActionMessage类种导致命令执行二、影响范围 2.3.x三、漏洞复现:

常见漏洞原理、利用方式及修复方式----SQL注入及XSS-爱代码爱编程

SQL注入 A、原理: (1)将SQL语句插入或添加到应用(用户)的输入参数中,再将这些参数传递给后台的SQL服务器加以解析并执行。 (2)刚开始接触sqli,首先我们得明白常见的web架构是怎么样的,通俗点来说,也就是所有的浏览器通过表示层来访问一个网站,其具体的工作流程是什么样的?流程:浏览器发起一个请求,并将请求交给服务器,服务器当中运行着Apa

ActiveMQ 任意文件写入漏洞(CVE-2016-3088)复现-爱代码爱编程

ActiveMQ 任意文件写入漏洞(CVE-2016-3088)复现 导语 ActiveMQ的web控制台分三个应用:admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口。admin和api都需要登录后才能使用,fileserver无需登录。 fileserver是一个RES

Linux安全基线Centos7-爱代码爱编程

安全基线检查 扫描用户和时间: user_id=whoami echo “当前扫描用户:${user_id}” scanner_time=date '+%Y-%m-%d %H:%M:%S' echo “当前扫描时间:${scanner_time}” echo “***************************” echo “账号策略检查中…” ec

渗透测试之信息收集-爱代码爱编程

信息收集 在安全测试中,信息收集是非常重要的一个环节,此环节的信息将影响到后续的成功几率,掌握信息的多少将决定发现漏洞机会大小和攻击面的多少,换言之信息收集决定着你是否能完成目标的测试任务。也可以很直接的说:渗透测试的思路就是从信息收集这里开始,你与大牛的差距也是从这里开始的! 我把信息收集大致分为两种情况,有CDN和没有CDN,初学者大都还不明白CD

如何构建nginx 基础镜像-爱代码爱编程

构建nginx 基础镜像 Nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性: 1、作为Web服务器。 2、作为负载均衡服务器。 3、作为邮件代理服务器。 4、安装及配置简单。 接下来我们介绍在docker构建nginx镜像: 文章目录 构建nginx 基础镜像前言一、前期工作准备二、docker构建实例1.下载 un

ubuntu、storm、zookeeper、kafka、docker等软件的客户端命令-爱代码爱编程

COMMANDS 记录道上遇到的命令获取最新版本:Commandskafka-windows 在kafka主目录下: .\bin\windows\kafka-server-start.bat .\config\server.properties启动zookeeper: zkserverzookeeper 启动zookeeper: ./zkServer

docker 安装 Redis 主从复制+哨兵集群-爱代码爱编程

前置说明 现有三台虚拟机,IP地址如下 192.168.1.71 192.168.1.72 192.168.1.73 ##这里71服务器为默认的 master节点,其余的为 replication 节点 单机安装请参考上一篇文章,下面的redis镜像都是基于上次下载的 当前版本: redis-6.0.9 主从复制 哨兵使用都是基于主从复

2020年Kubernetes六大收购案及其原因-爱代码爱编程

Kubernetes是当今热门的企业技术。这样一个新兴市场上的大型供应商,很容易被规模更小、更灵活的初创公司所颠覆。与其与颠覆者竞争,更好的方法是收购。2020年有许多值得注意的收购,以下最重磅的6项收购及其背景。 Pure Storage收购数据服务平台Portworx 今年最大的交易是Pure Storage斥资3.7亿美元收购Portwor

最简单的 Go Dockerfile 编写姿势,没有之一!-爱代码爱编程

1. Dockerfile 一些额外注意点 选择最简单的镜像比如 alpine,整个镜像 5M 左右 设置镜像时区RUN apk add --no-cache tzdata ENV TZ Asia/Shanghai 2. 多阶段构建 第一阶段构建出可执行文件,确保构建过程独立于宿主机第二阶段将第一阶段的输出作为输入,构建出最终的极简镜像3.

重磅!Kubernetes决定弃用Docker-爱代码爱编程

Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者 | Kohei Ota 译者 | 核子可乐 策划 | 万佳 来源丨架构头条(ID:ArchFront) 什么?Kubernetes 决定弃用 Doc