Articles of selinux

在Docker中运行nginx时,我应该如何configurationSELinux

Docker的文档中有一篇关于Docker安全性的好文章: https : //docs.docker.com/articles/security/ 但是,我并不清楚容器中的根特权进程是如何在主机系统中运行的,以及我应该如何configurationSELinux来处理进程在容器外“泄漏”的风险。 例如,我在一个容器中运行nginx,当我在容器外部执行“ps”时,我可以看到所有的nginx进程。 根7281 4078 0 01:36? 00:00:00 nginx:主进程nginx www-data 7309 7281 0 01:36? 00:00:00 nginx:工作进程 www-data 7310 7281 0 01:36? 00:00:00 nginx:工作进程 www-data 7311 7281 0 01:36? 00:00:00 nginx:工作进程 www-data 7312 7281 0 01:36? 00:00:00 nginx:工作进程 这并不奇怪,因为这是Docker工作的方式 – 这不是虚拟化,虚拟机之外什么都不显示。 使用Docker,容器的进程在名称空间和有限权限内的主机操作系统上运行。 他们直接与主机内核通话。 在这种情况下,我相信我应该configurationSELinux来保护nginx进程而不是docker的进程,就像在没有docker的情况下运行一样。 那是对的吗? 另外,是否有任何特定的Dockerconfiguration更适合运行像nginx这样的web服务器?

httpd_read_user_content和httpd_enable_homedirs有什么区别?

SELinux的apache模块有两个相似的布尔参数: httpd_read_user_content和httpd_enable_homedirs 。 手册页说,前者允许httpd读取用户内容 ,后者允许httpd读取主目录 。 他们有什么区别? 如果我想允许httpd读取/home/foo目录中的文件,我应该设置哪个参数为true?

CentOS忽略了我的公钥

我正尝试使用SSH连接到我自己的CentOS服务器; 我可以很好地连接密码; 我试图连接我的公钥,但服务器不会尝试公钥authentication。 我在CentOS维基上按照这个页面上的所有说明,并validation了以下几点: 我正在运行CentOS 6.0或更高版本 我的sshd_config有以下几点: PermitRootLogin no PubkeyAuthentication Yes RSAAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 我在客户端的主目录中的.ssh /文件夹中创build了一个私钥 公钥的完整文本(由ssh-keygen生成)在服务器的主目录中的.ssh / authorized_keys文件中占用一行。 我在客户端和服务器上设置了以下权限模式: chmod 700 .ssh chmod 600 .ssh/*

一次写入,使用Linux文件系统读取多个(WORM)

我有要求将文件写入Linux文件系统,不能随后覆盖,附加到,以任何方式更新或删除。 不是由一个sudo-er,根,或任何人。 我试图满足FINRA 17A-4的金融服务条例的要求,FINRA 17A-4基本上要求电子文件写入WORM(写入一次,读取很多)设备。 我非常想避免使用DVD或昂贵的EMC Centera设备。 是否有Linux文件系统,或者SELinux是否支持在写入之后立即(或至less很快)使文件完整不变的要求? 或者有人知道我可以使用Linux权限等现有的文件系统上执行此方法? 我明白,我可以设置只读权限和不可变属性。 但是我当然希望root用户能够取消这些设置。 我考虑将数据存储到未安装的小卷,然后以只读方式重新挂载,但是我认为root仍然可以卸载并重新挂载为可写入。 我正在寻找任何聪明的想法,最坏的情况下,我愿意做一点编码来“提升”现有的文件系统来提供这个。 假设有一个文件系统是一个很好的起点。 并且放置一个精心configuration的Linux服务器来充当这种types的networking存储设备,除此之外别无其他。 毕竟,文件上的encryption也是有用的!

如何使用SELinux在CentOS上运行PhantomJS?

我试图在CentOS 5机器上使用PhantomJS制作屏幕截图,但是我无法将其与SELinux一起使用。 它在SELinux禁用的同一台机器上工作,所以我真的怀疑SELinux是负责这个的。 这是我试过的(所有命令都以root身份运行)以及我得到的错误: $ ls -Z /usr/local/phantomjs/phantomjs-1.6.2-linux-x86_64-dynamic/bin -rwxr-xr-x myusername myusername system_u:object_r:bin_t phantomjs 尝试截图 – 失败 $ cat /var/log/messages | grep avc Sep 13 12:21:18 myserver kernel: type=1400 audit(1347531678.014:398): avc: denied { getattr } for pid=6842 comm="sh" path="/sbin/ldconfig" dev=dm-0 ino=3097762 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:ldconfig_exec_t:s0 tclass=file Sep 13 12:21:18 myserver kernel: type=1400 audit(1347531678.014:399): avc: denied { getattr } […]

CentOS 7 – 通过VSFTPD创build的目录不会inheritanceSELinux上下文

我们公司有一个CentOS 7的networking服务器,我们的客户通过FTP(vsftpd)pipe理他们的网站。 SELinux处于强制模式。 问题是通过VSFTPD创build/ uploadad的数据不会inheritance相应的SELinux上下文。 让我解释。 例如,对于WordPress网站,服务器已经有了一些可以使用semanage fcontext -l |grep '/var/www' ,它们是: /var/www/html(/.*)?/uploads(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html(/.*)?/wp-content(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0 所以,当我复制一个WordPress站点,让我们说从另一个服务器通过SSH在/var/www/html/的目录,文件夹wp-content/和wp-content/uploads/具有适当的httpd_sys_rw_content_t安全上下文。 但是,当这些文件夹是通过FTP创build的,他们得到的上下文是httpd_sys_content_t (no rw )。 这意味着我们的客户上传到服务器的网站不能写入这些目录,即使他们给apache用户/组写入权限,所以WordPresspipe理不起作用。 所以,当他们上传一个网站时,他们不得不要求我们的支持来解决这个问题,这对所有参与者来说都是浪费时间。 假设客户上传他们的网站到httpdocs ,如果通过SSH我做的mv httpdocs/ httpdocs.2/ && cp -pr httpdocs.2/ httpdocs/ && rm httpdocs.2/ -fr问题解决了,所以没有任何问题数据。 我也可以做restorecon -Rv httpdocs/来解决这个问题。 所以,问题是:如何通过VSFTPD创build/上传的目录inheritance正确的SELinux上下文,就像在通过SSH创build/上传目录时inheritance它们一样?

.autorelabel文件在Linux中做什么?

.autorelabel文件位于Linux的文件根目录/ ? 我知道它与SELinux有关,但我无法find任何有关它的实际信息。 我正在运行CentOS 6。 提前致谢。

SELinux是否使Redhat更安全?

SELinux是否使Redhat更安全? 我不记得当我禁用SELinux的次数,因为它一直让我无法运行。 很多时候,没有明显的原因,为什么东西不工作,我不得不谷歌发现为什么。 考虑到大多数临时用户会阻碍或削弱安全性,因为排除严重的企业级Redhat用户,SELinux真的很有用吗? PS。 是否有一些工具可以帮助您在所有应用程序中logging,跟踪和pipe理SELinux问题?

Linux – CentOS6 – semanage – 命令未find

我正在尝试解决HTTPD被拒绝访问绑定自定义端口的问题,我相信这与SELinux有关。 虽然做了一些Googlesearch,但是我遇到了一些用户inputsemanagepost,然后用标志和命令查看某些数据。 在追踪这些post时,我也input了semanage ,但它不在我的系统中。 yum list *semanage* : Installed Packages libsemanage.x86_64 | 2.0.43-4.el6 | @anaconda-CentOS-201106060106.x86_64/6.0 Available Packages libsemanage-devel.x86_64 | 2.0.43-4.el6 | base libsemanage-python.x86_64 | 2.0.43-4.el6 | base libsemanage-static.x86_64 | 2.0.43-4.el6 | base 这些二进制文件是否可用于其他软件包之一?

如何在CentOS Docker容器中启用SELinux?

我正在尝试在一个Docker容器中安装SELinux,以便在内部分发一个使用SELinux的应用程序。 默认的CentOS镜像没有安装SELinux: $ docker run -it centos:latest /bin/bash [root@38ae5a98273d /]# sestatus bash: sestatus: command not found 在我从yum安装之后,SELinux还没有启用。 [root@38ae5a98273d /]# yum install policycoreutils selinux-policy-targeted … [root@38ae5a98273d /]# sestatus SELinux status: disabled 我发现所有的文件说,你需要发出一个系统重新启动,以便安装它。 但是,我不知道在Docker容器中模拟系统重启的方法。 如何安装和启用容器内的SELinux?