生成安全计算模式的命令行工具

cerber的Python项目详细描述


https://travis-ci.org/gr0und-s3ct0r/cerber.svg?branch=develhttps://badge.fury.io/py/cerber.svg

用于生成seccomp json配置文件的简单命令行工具

概述

seccomp(secure computing mode的缩写)是一种计算机安全性 Linux内核中的功能。 seccomp允许进程单向转换为“安全” 无法进行系统调用的状态, sigReturn()、read()和write()到已打开的文件描述符。 如果它尝试任何其他系统调用,内核将终止 使用sigkill或sigsys的进程。 从这个意义上说,它不是虚拟化系统的资源,而是隔离 完全是他们的过程。

seccomp profile用于许多应用程序,如:

  • 码头工人
  • 火狐
  • 系统d
  • openssh
  • 还有更多…

Cerber帮助您生成您可以 与Docker一起使用。

先决条件

  • Linux
  • Python3.5+
  • 斯特拉斯

安装

$ pip install cerber

用法

在当前目录中生成seccomp_profile.json:

$ cerber docker run hello-world
$ ls
seccomp_profile.json
$ cat seccomp_profile.json
{"defaultAction": "SCMP_ACT_ERRNO",
    "architecture": ["SCMP_ARCH_X86_64",
        "SCMP_ARCH_X86",
        "SCMP_ARCH_X32"],
    "syscalls": [{"action": "SCMP_ACT_ALLOW",
            "args": [],
            "name": "read"},
        ...
        {"action": "SCMP_ACT_ALLOW",
            "args": [],
            "name": "execve"},
        {"action": "SCMP_ACT_ALLOW",
            "args": [],
            "name": "arch_prctl"}]}

现在您可以在运行时将此seccomp配置文件分配给容器:

$ docker run \
--rm \
--security-opt="no-new-privileges"\
--security-opt seccomp=seccomp_profile.json \
hello-world # you can get the following output for docker hello world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
...
For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

注意在同一个cpu架构上用cerber生成seccomp配置文件 您的生产环境(您希望在其中运行容器)。

功能

  • 检测系统调用
  • 从检测到的系统调用生成seccomp配置文件

贡献

$ git clone https://github.com/gr0und-s3ct0r/cerber
$ cd cerber
$ pipenv install pbr
$ pipenv shell # generate a virtual environment
$ python setup.py develop # install cerber in development mode
$ pip install -e .[test]# install testing dependencies
$ # make your changes
$ tox

更改

0.2.0

  • 从pypi安装
  • 修复许可证分类器
  • 更新更改日志

0.1.0

  • 添加构建徽章
  • 修复PEP8错误
  • 忽略PYC
  • 修复PEP8错误
  • 添加有关seccomp的概述
  • 添加更多读数
  • 如何使用security profil的示例
  • 在文档中修复文件名输出
  • 修复安装
  • 修复贡献指南
  • 使用生成的seccomp.json文件更新用法
  • 对自述文件使用structuredtext而不是markdown
  • 包装+tu+ci
  • 介绍ci
  • 保持strace统计
  • 添加gitignore
  • 重命名tmpfile并在文件中创建seccomp配置文件
  • 执行时不要触摸stdout和stderr使其透明
  • 进一步阅读和投稿
  • 使用命令更新文档
  • 将要执行的命令传递给保镖
  • 提高使用率
  • 重命名工具
  • 初始化存储库

hervéberaud,herveberaud.pro@gmail.com>; 塞巴斯蒂安·博伊隆sebastien@boyron.eu>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么只为字符数组重载println方法,而不为字符串、整数等其他数组重载?   java将快速线程返回到池中,而不是等待慢速线程   创建jar文件时java SwingWorker不工作   java如何将依赖注入RabbitListener   java如何在gradle任务中通过scp复制目录?   java在MySql数据库中创建表时,遇到NullPointerException   java HTTP Status 500 Servlet执行引发异常   在JAVA中对arraylist使用继承时出错   java PowerMockito未完成存根异常   如果没有错误/警告增加到某个极限,java是否停止在eclipse中构建项目或使用maven?   java Robolectric如何测试DateFormat。getBestDateTimePattern()   google云平台GCP数据存储Java API,构建一个空值实体   VerifyListener和FocusListener之间的java冲突   安卓是否可以在Java中的另一个方法内部强制调用一个方法?   JavaWindows7、JDK1.8、SpringBoot应用程序JAR在方法安全性方面占用了大量时间。getProviders()返回   Bean提供程序的java错误消息   java Slick动画每帧必须有一个持续时间   java无法在Trie中设置isLeaf标志   java为什么JVM不能创建包含main方法的类的对象,以便从该类访问main方法,如果它具有该类的名称?   java Apache Camel+CXF端点身份验证