Articles of 安全

如何在Linux上启动具有高度限制特权的进程?

我想(从代码)启动一个具有高度限制特权的进程。 可以保存文件,但只能在自己的文件夹中并限制为配额。 可以在配额内使用内存。 CPU时间(包括启动的任何subprocess)仅限于配额。 除了它自己的和通过stdin / out的我的控制器程序的接口之外,不能和其他任何进程通信。 无法与任何设备进行互动 在networking上看不到任何其他东西。 (我正在构build一个网格系统,推出的代码可能是敌对的)。 这是我到目前为止… – 提前,创build一些用户,grid00-grid99。 按configuration给每个磁盘/内存/ CPU配额。 要启动一个过程… select一个未使用的gridxx用户。 在用户的主文件夹内创build一个文件夹。 硬链接/ bin,/ usr等在该文件夹中。 在该文件夹中新build一个/ home / gridxx和/ tmp文件夹。 复制到程序文件中。 切换到gridxx用户。 chroot到新的文件夹。 启动新的过程。 我错过了什么? 非常感谢。

在Linux中存储秘密

对不起,如果这个问题已经被回答了,简单的search并没有给我太多的帮助。 随意更正标签,并提供问题的链接,如下面的问题或讨论的主题。 另外,我对Windows有所了解,Linux不是那么多,所以这些问题可能显得微不足道。 一些Windows应用程序使用registry和其他一些不起眼的地方在那里存储他们的激活数据,试用期剩下的日子,只是这个软件已经安装在这个操作系统上。 Linux中是否有类似的地方? 如果有的话,那里的数据是多么的可以被发现,因为你不仅拥有root权限,而且还拥有几乎所有的源代码,并且可以随时调整内核并强制执行。 如果在Linux中没有办法保护这些数据,那么所有其他的事情都是相同的,那么它对Linux的商业软件的可用性有多大影响呢?

在php中发送邮件时如何删除显示系统信息的头文件

我正在使用PHP的mail()函数。 我注意到当通过消息(获取发送)的属性,某些标题存在指定 发送电子邮件的文件名 我正在运行哪个版本的php 我的操作系统信息 我已经删除了域名,但是这基本上是包含的内容。 我怎么能阻止这个被包含,还是我只是安全偏执? 另外,我想继续使用phps邮件function,而不是设置别的东西。 谢谢。 X-PHP-Originating-Script: 1000:emailtest.php From: hidden@hidden.hh Reply-To: hidden@hidden.hh X-Mailer: PHP/5.3.10-1ubuntu3.10 Message-Id: <20140315193810.ADD43120489@hidden.hh>

如何在Linux中生成真正的随机数(不是伪)

什么是在Linux(C / C ++代码)中创build安全随机数的(最好的)方式,比一般的rand()结果更随机,而不是像OpenSSL BN_rand那样伪造? 在Windows中,我发现CryptGenRandom()是一个很好的select。 在Linux中有没有等价物? 先谢谢你。

共享内存中的单个生产者/消费者环形缓冲区

最近我一直在玩IPC的共享内存。 我一直试图实现的一个事情是一个简单的环形缓冲区,有1个进程生产和1个进程消耗。 每个进程都有自己的序列号来跟踪它的位置。 这些序列号使用primefaces操作来更新,以确保正确的值对其他进程是可见的。 一旦环形缓冲区满了,生产者将会阻塞。 代码是无锁的,因为没有使用信号量或互斥锁。 性能明智的,我在我的相当谦虚的虚拟机上每秒获得大约2000万条消息 – 很满意:) 我很好奇如何“正确”我的代码。 任何人都可以发现任何固有的问题/竞争条件 这是我的代码。 在此先感谢您的任何意见。 #include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <sys/mman.h> #include <sys/stat.h> #include <time.h> #include <unistd.h> #include <string.h> #define SHM_ID "/mmap-test" #define BUFFER_SIZE 4096 #define SLEEP_NANOS 1000 // 1 micro struct Message { long _id; char _data[128]; }; struct RingBuffer { size_t _rseq; char […]

将文件从一个用户主目录复制到Linux中的另一个用户主目录

我有两个linux用户(不是root)的login名和密码,例如user1和user2。 如何使用一个shell脚本(启动一个脚本,无需手动切换用户)将文件从/ home / user1 / folder1复制到/ home / user2 / folder2 。 我想我必须使用一个sudo命令,但没有发现如何。

这个用户名/密码生成器脚本的安全性可以提高吗?

描述 为了pipe理我的网站login数量巨大,我写了一个bash脚本 一个string,为我个人,确定一个特定的帐户。 例子是mylogin@stackoverflow.com或thisWebsiteIVistedLately ,但它可能是任何东西。 它不必遵循一定的模式,它应该帮助我区分我想要pipe理的不同帐户。 主密码。 输出是帐户的用户名和安全密码的组合。 我不想存储任何生成的用户名/密码,也不是主密码。 因此,类似于Honey Encryption ,我希望脚本为每个input生成一个合理的结果。 如果一个坏人input了一个错误的主密码,他只会得到一个不同的用户名/密码组合,不能区分“真实”密码。 这里是我到目前为止的bash脚本: #!/bin/bash # robust bash scripting set -o errexit set -o nounset set -o pipefail # external programs OPENSSL=$(which openssl) SED=$(which sed) CUT=$(which cut) # get identifier read -s -p "id = " ID echo "" # read password read -s -p […]

如何在Linux内核级别限制特权用户访问?

我在学习Linux内核编程的时候发现了这个答案,我的问题对于Linux内核的安全特性更具体。 我想知道如何限制特权用户或进程对其他进程和文件的访问权限,而不是完全访问root。 直到现在我发现: 自由访问控制(DAC)的用户和组 ,在用户,组和其他组的读,写和执行方面有所区别 用户root用于更高特权的任务 setuid和setgid来扩展用户的DAC并设置调用进程的组/用户ID,例如用户使用root权限运行ping来打开Linux套接字 细粒度权限的function,例如删除ping suid位并设置cap_net_raw 控制组( Cgroups )限制对资源(例如cpu,networking,io设备)的访问 命名空间可以在IPC,networking,文件系统,pid上分离进程的视图 安全计算( Seccomp )来限制系统调用 Linux安全模块( LSM )增加额外的安全function,如强制访问控制,如SELinux与types强制 列表是否完整? 在写这个问题的时候,我发现fanotify监视文件系统事件,比如反病毒扫描。 可能有更多的安全function可用。 是否还有更多的Linux安全function可以从文件或进程的内部或外部以可编程方式使用,以限制特权访问? 也许有一个完整的列表。

Amazon EC2实例之间进行通信的最佳实践是什么?

我已经为即将到来的项目设置了Amazon EC2实例。 他们都是微型实例,运行Ubuntu Server 64bit。 这是我迄今为止设置的: Web服务器 – Apache 数据库服务器 – MySQL 开发服务器 – Apache和MySQL 文件服务器 – SVN&Bacula(备份完成到S3桶) 目前,只有一个Web服务器,但最终会有更多。 我的第一个问题是,Amazon EC2实例彼此之间进行通信的最佳,最安全的方式是什么? 目前我使用SSH,是最好的方法吗? 根据亚马逊,使用其弹性IP地址进行通信的实例将收取数据传输费用。 但是,使用其私有IP地址进行通信的实例可以免费进行。 不幸的是,如果实例停止并重新启动,则显示私有IP更改。 那么这就是我的第二个问题,如果不是静态的,那么您如何利用Amazon实例的私有IP? 我知道这些实例很可能不会被停止并开始非常频繁的使用,但是如果IP地址在不同的configuration文件中,那么将不得不通过所有的configuration文件来改变它。 我主要关心Web服务器,它需要访问数据库服务器和文件服务器,在执行备份时需要访问所有的实例。 注意:我以前从未使用过Bacula,也没有安装它,但是我假设它需要客户端的IP地址来备份它们。 ServerFault会是一个更好的地方发布这个问题?

手动修补传统服务器上的Ghost漏洞

我有一个传统的Redhat ES 3.x服务器(由于在一个古老的,不受支持的应用程序中的限制,我不能把以后的发行版),我试图手动补丁glibc的Ghost漏洞。 基于Qualys的分析( http://www.openwall.com/lists/oss-security/2015/01/27/9 ),似乎应该很容易修改glib源来处理堆栈/堆溢出问题。 但是我想再看看我的程序,看看我是否错过了一些东西,等等。 这是我所做的。 首先,我从SRPM构build并准备好了glib源代码树: rpm -ivh glibc-2.3.2-95.50.src.rpm rpmbuild -bp /usr/src/redhat/SPECS/glibc.spec cd /usr/src/redhat/BUILD cp -av glibc-2.3.2-200309260658 glibc-org cd glibc-2.3.2-200309260658 接下来,我编辑了nss / digits_dots.c主要基于这个段落从上面的Qalys文章: 第121-125行准备用于在缓冲区中存储四(4)个不同实体的指针:host_addr,h_addr_ptrs,h_alias_ptr和hostname。 sizeof(* h_alias_ptr) – 一个char指针的大小 – 从size_needed的计算中缺less。 vi nss/digits_dots.c I edited these two statements: 105: size_needed = (sizeof (*host_addr) + sizeof (*h_addr_ptrs) + strlen (name) + 1); 277: size_needed […]