首页 文章 精选 留言 我的

精选列表

搜索[权益保护],共10002篇文章
优秀的个人博客,低调大师

如何在构建阶段保护镜像安全

首先,可以参考以下这篇文章,在构建命令的时候多加注意,避免触及安全边界:云原生时代下的容器镜像安全(上) 接下来,我们可以通过已有的镜像安全检测工具,对早已存在的镜像进行安全扫描,并对当前正在构建的镜像设置阻断规则,将安全防护前移至 CI/CD 阶段,当前市面上已知的镜像检测工具有:trivy、anchor、veinmind等,我只试用了veinmind,所以详细描述一下veinmind的试用过程: 首先 veinmind 支持检测镜像内的恶意文件、敏感信息、弱口令、后门、异常历史命令,支持镜像资产清点,支持集成到 CI/CD 进行检测,支持镜像阻断,支持使用 helm 安装部署。 详细记录一下 docker 镜像阻断功能: # first ./veinmind-runner authz -c config.toml # second dockerd --authorization-plugin=veinmind-broker 其中config.toml,包含如下字段 字段名 字段属性 含义 policy action string 需要监控的行为 enabled_plugins []string 使用哪些插件 plugin_params []string 各个插件的参数 risk_level_filter []string 风险等级 block bool 是否阻断 alert bool 是否报警 log report_log_path string 插件扫描日志 authz_log_path string 阻断服务日志 action 原则上支持 DockerAPI 所提供的操作接口 如下的配置表示:当 创建容器或推送镜像 时,使用 veinmind-weakpass 插件扫描ssh服务,如果发现有弱密码存在,并且风险等级为 High 则阻止此操作,并发出警告。最终将扫描结果存放至plugin.log,将风险结果存放至auth.log。 [log] plugin_log_path = "plugin.log" auth_log_path = "auth.log" [listener] listener_addr = "/run/docker/plugins/veinmind-broker.sock" [[policies]] action = "container_create" enabled_plugins = ["veinmind-weakpass"] plugin_paramas = ["veinmind-weakpass:scan.serviceName=ssh"] risk_level_filter = ["High"] block = true alert = true [[policies]] action = "image_push" enabled_plugins = ["veinmind-weakpass"] plugin_params = ["veinmind-weakpass:scan.serviceName=ssh"] risk_level_filter = ["High"] block = true alert = true 项目地址:https://github.com/chaitin/veinmind-tools 使用文档:https://veinmind.chaitin.com/docs/ 集成到 Jenkins: 集成到 Gitlab:

优秀的个人博客,低调大师

利用Defender for Identity保护企业身份安全

Microsoft Defender for Identity是一个基于云的安全解决方案,利用本地 Active Directory信号识别、检测并调查针对企业内部的高级威胁、身份盗用和恶意内部操作。Defender for Identity之前的名字Azure ATP为微软三大ATP之一,大家应该不陌生。ATP对应的本地部署版本为Advanced Threat Analytics(ATA 已于2021年1月12日结束主流支持。扩展支持将持续到2026年1月。)Microsoft Defender for Identity体系架构Defender for Identity需要在企业环境中安装传感器,在ATA体系中叫做ATA网关。传感器可以选择直接安装在域控服务器和ADFS服务器上,也可以独立安装(需要做域控的端口镜像)传感器会在本地收集相关事件和日志信息,并传输到Defender for Identity门户中,同时Defender云服务会连接到Microsoft Intelligent Security Graph通过机器学习分析安全威胁信号,达到防护、侦测、回应甚至反击的效果,传感器的主要功能如下: 捕获并检查域控制器网络流量(域控制器的本地流量) 直接从域控制器接收 Windows 事件(需要开启域控的高级审核日志,参考:审核 Windows 事件 8004)。 从 *** 提供商接收 RADIUS 记帐信息 从 Active Directory 域检索用户和计算机的数据 执行用户、组和计算机解析 将相关数据传输到 Defender for Identity 云服务管理员通过Denfender门户来监视和响应侦测到的可疑活动,针对安全事件来进行调查取证。通过***时间线,我们可以很容易的快速识别出威胁事件,深入了解可疑活动的详细过程。Defender for identity时间线 下面我们将通过一次内网的overpass-the-hash***的事件来介绍下Defender for identity如何来监视安全威胁事件的。 ***通过钓鱼等手段获取了企业内网用户权限和计算机,偷偷潜入开始侦查Domain情况,首先获取域用户和Domain Admin名单。 得知了管理员用户后,继续SMB会话枚举,收集管理员和用户的登录位置,为后续横向移动做准备。 接下来,抓取本地内存中的用户信息,成功收集到了内存中管理员的NTML Hash。 接下来,利用NTLM Hash来获取Domain Admins权限,把当前的Users用户添加为了Domain Admins。那么,***的这一次获权的***就成功完成。 那么这样一系列的***过程,Defender for Identity是如何来侦查的呢?我们回到Defender Portal,查看时间线,发现刚才的***行为已经产生了警报。如下图中的SMB侦测和overpass-the-hase***。从上图内容,我们发现了azure这个可疑用户,那么可以通过用户行为的时间线来分析***的动作,包括刚才执行的SMB枚举等动作。 我们再看看SCCM这台***发起的计算机时间线,这里可以看出sccmadmin这个用户的hash已经泄漏。 同时,Defender for identity也会标记出登录用户中的可疑用户。在警报控制台中我们还可以看到sccmadmin在sccm这台计算机中遭到泄露,并利用可疑的kerberos协议在DC进行了身份验证。 大多数安全工具无法检测何时使用合法凭据来访问合法资源。尤其在后续还会进行的***链过程,看起来都是合法的访问请求。Defender for Identity可以检测***者使用盗用票证访问的确切资源,提供关键信息和证据,以确定开始调查的确切位置以及要采取的补救措施。Defender for Identity 检测和警报信息对信息安全团队都具有重要意义。 不仅可以发现凭据被盗,还可以了解***者使用盗用票证访问和***的资源。

优秀的个人博客,低调大师

如何保护对外暴露的 Kubernetes 服务

有时候我们需要在 Kubernetes 中暴露一些没有任何安全验证机制的服务,比如没有安装 xpack 的 Kibana,没有开启登录认证的 Jenkins 服务之类的,我们也想通过域名来进行访问,比较域名比较方便,更主要的是对于 Kubernetes 里面的服务,通过 Ingress 暴露一个服务太方便了,而且还可以通过 cert-manager 来自动的完成HTTPS化。所以就非常有必要对这些服务进行一些安全验证了。 Basic Auth 认证 我们在前面升级 Dashboard 的文章中就给大家提到过两种方式来为我们的服务添加 Basic Auth 认证:haproxy/nginx 和 traefik/nginx-ingress。 使用 haproxy/nginx 的方式非常简单,就是直接添加 basic auth 认证,然后将请求转发到后面的服务;而 traefik/nginx-ingress 都直接提供了 basic auth 的支持,我们这里使用 nginx-ingress 来为 Jenkins 服务添加一个 basic auth 的认证服务。 首先,我们需要创建用于存储用户名和密码的htpasswd文件: $ htpasswd -bc auth admin admin321 Adding password for user admin 然后,创建一个基于上面 htpasswd 文件的 Secret 对象: $ kubectl create secret generic jenkins-basic-auth --from-file=auth -n kube-ops secret "jenkins-basic-auth" created 最后,我们需要在 Ingress 对象中添加auth-type:basic和auth-jenkins-basic-auth两个 annotations:(ingress.yaml) apiVersion: extensions/v1beta1 kind: Ingress metadata: name: jenkins namespace: kube-ops annotations: kubernetes.io/ingress.class: nginx # 认证类型 nginx.ingress.kubernetes.io/auth-type: basic # 包含 user/password 的 Secret 名称 nginx.ingress.kubernetes.io/auth-secret: jenkins-basic-auth # 当认证的时候显示一个合适的上下文信息 nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - admin' spec: rules: - host: jenkins.qikqiak.com http: paths: - backend: serviceName: jenkins servicePort: web 然后更新上面的资源对象: $ kubectl apply -f ingress.yaml ingress.extensions "jenkins" configured 更新完成后,现在我们去访问我们的 Jenkins 服务可以看到需要输入用户名和密码的提示信息了: OAuth 认证 除了上面的 Basic Auth 认证方式以为,我们还可以通过 Github、Google 等提供的 OAuth 服务来进行身份验证。我们可以通过名为OAuth2 Proxy的工具来代理请求,它通过提供一个外部身份验证的反向代理来实现,使用起来也相对简单。 安装 首先我们需要为我们的应用添加自动的 HTTPS,可以参考我们前面的文章使用 Let's Encrypt 实现 Kubernetes Ingress 自动化 HTTPS。 然后登录 Github,在https://github.com/settings/applications/new添加一个新的OAuth应用程序: 替换成你自己需要使用的域名,然后在回调 URL 上添加/oauth2/callback,点击注册后,记录下应用详细页面Client ID和Client Secret的值。然后还需要生成一个 cookie 密钥,当然如果我们系统中安装了 python 环境可以直接生成,没有的话用 Docker 容器运行当然也行: $ docker run -ti --rm python:3-alpine \ python -c 'import secrets,base64; print(base64.b64encode(base64.b64encode(secrets.token_bytes(16))));' b'<GENERATED_COOKIE_SECRET>' 然后部署OAuth2 Proxy应用,这里我们直接使用 Helm 来简化安装: $ helm install --name authproxy \ --namespace=kube-system \ --set config.clientID=<YOUR_CLIENT_ID> \ --set config.clientSecret=<YOUR_SECRET> \ --set config.cookieSecret=<GENERATED_COOKIE_SECRET> \ --set extraArgs.provider=github \ --set extraArgs.email-domain="*" \ stable/oauth2-proxy NAME: authproxy LAST DEPLOYED: Sun Apr 14 01:11:50 2019 NAMESPACE: kube-system STATUS: DEPLOYED RESOURCES: ==> v1/Secret NAME TYPE DATA AGE authproxy-oauth2-proxy Opaque 3 0s ==> v1/ConfigMap NAME DATA AGE authproxy-oauth2-proxy 1 0s ==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE authproxy-oauth2-proxy ClusterIP 10.109.110.219 <none> 80/TCP 0s ==> v1beta2/Deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE authproxy-oauth2-proxy 1 0 0 0 0s ==> v1/Pod(related) NAME READY STATUS RESTARTS AGE authproxy-oauth2-proxy-798cff85fc-pc8x5 0/1 ContainerCreating 0 0s NOTES: To verify that oauth2-proxy has started, run: kubectl --namespace=kube-system get pods -l "app=oauth2-proxy" $ # 执行下面的命令待编程 Running 状态证明安装成功了。 $ kubectl --namespace=kube-system get pods -l "app=oauth2-proxy" NAME READY STATUS RESTARTS AGE authproxy-oauth2-proxy-cdb4f675b-wvdg5 1/1 Running 0 1m 对于 GitHub,我们可以通过github-org和github-team来限制访问,一般设置email-doamin="*",我们可以通过OAuth2 Proxy的示例文档来查看更改 GitHub Provider 的配置。 测试 同样我们这里还是使用一个 Jenkins 服务,大家也可以使用任意的一个服务来验证,当然最好是没有身份验证功能的,比如没有安装 x-pack 的 Kibana。 要实现外部服务来进行认证的关键点在于 nginx-ingress-controller 在 annotations 中为我们提供了auth-url和auth-signin两个注解来允许配置外部身份验证的入口。 上面这两个 annotation 需要 nginx-ingress-controller 在 v0.9.0 版本或以上。 我们在 Jenkins 的核心 Ingress 对象中配置服务认证的 url:https://$host/oauth2/auth,然后通过创建一个同域的 Ingress 对象将oauth2路径代理到OAuth2 proxy应用去处理认证服务: nginx.ingress.kubernetes.io/auth-url: "https://$host/oauth2/auth" nginx.ingress.kubernetes.io/auth-signin: "https://$host/oauth2/start?rd=$escaped_request_uri" 然后按照上面的思路重新创建 Jenkins 的两个 Ingress 对象: $ cat <<EOF | kubectl apply -f - apiVersion: extensions/v1beta1 kind: Ingress metadata: name: jenkins namespace: kube-ops annotations: kubernetes.io/ingress.class: nginx kubernetes.io/tls-acme: "true" nginx.ingress.kubernetes.io/auth-url: "https://$host/oauth2/auth" nginx.ingress.kubernetes.io/auth-signin: "https://$host/oauth2/start?rd=$escaped_request_uri" spec: rules: - host: jenkins.qikqiak.com http: paths: - backend: serviceName: jenkins servicePort: web path: / tls: - hosts: - jenkins.qikqiak.com secretName: jenkins-tls --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: authproxy-oauth2-proxy namespace: kube-system annotations: kubernetes.io/ingress.class: nginx kubernetes.io/tls-acme: "true" spec: rules: - host: jenkins.qikqiak.com http: paths: - backend: serviceName: authproxy-oauth2-proxy servicePort: 80 path: /oauth2 tls: - hosts: - jenkins.qikqiak.com secretName: jenkins-tls EOF 我们这里通过cert-manager来自动为服务添加 HTTPS ,添加了kubernetes.io/tls-acme=true这个注解,然后我们在浏览器中打开我们的 Jenkins 服务,正常就会跳转到 GitHub 登录页面了: 然后认证通过后就可以跳转到我们的 Jenkins 服务了: 当然除了使用 GitHub 之外,还可以使用其他的 OAuth 认证服务,比如 Google,我们可以根据需要自行去添加即可。 相关链接 OAuth2 Proxy ingress-nginx oauth external auth exmaple Kubernetes Helm 初体验 使用 Let's Encrypt 实现 Kubernetes Ingress 自动化 HTTPS

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册