我想用overlayroot来保护一个系统,所以所做的一切 – 即使是具有root权限的用户 – 都不会在重新启动后存活下来。 我find了几个指导如何做,但没有一个告诉我它是多么安全,是否有技巧来克服保护。 我的做法:GRUB被locking,只提供没有密码的overlayroot选项。 但是,这很可能不足以保护系统,因为某人(呃,有root用户权限的人)可以dd if=/dev/zero of=/dev/sda执行dd if=/dev/zero of=/dev/sda ,我假设系统在重新启动之后拒绝启动。 根据我的研究,限制root直接访问/dev/sda , /dev/sda1等的唯一方法是SELinux。 SELinux似乎是非常复杂和完全矫枉过正,只是为了限制访问一些文件,但似乎是限制root的唯一方法。 所以我的问题是: 有没有其他的可能性,以root用户权限来克服overlayroot比访问/dev/sda(X) ? 是否有其他选项来防止访问/dev/sda(X) ,如果没有,是否有一个SELinux策略的简单示例/指南,只阻止访问某些文件? 补充2016-09-12: 我发现这个: https : //github.com/msuhanov/Linux-write-blocker/ 这是一个非常小的代码(7行代码)和简单的内核补丁,使得Linux内核实际上尊重块设备的只读标志(否则该标志对于fs驱动程序来说是更多的信息)。 这是一个很好的起点,但是一个问题是:root可以很容易地改变只读标志。 我现在的想法是: 使用其他选项forcero=/dev/sda forcero=/dev/sda1引导内核 在某些情况下,这将被parsing,并且现有的块设备列表被扩展为只读标志,或者创build一个新的只读块设备列表。 该补丁的代码被扩展来检查该标志 我知道这不是完全安全的,因为一些定制的内核模块可以重置该标志(除非您签署所有模块,并且只允许签名的模块)。 我从来没有写过内核代码,我遇到的第一个问题是:我无法findstruct block_device或函数bdevname 。 我用http://lxr.free-electrons.com/identfind它,但没有运气。 我的第二个想法是:如果在某个地方有一个清单,它是稳定的还是可以重新扫描设备清除它? 有一个函数name_to_dev_t将/dev/sda1这样的名字翻译成dev_ttypes,它只是一个整数,这与block_device什么关系? 有人可以给我一些提示如何编写内核补丁? 我也对其他想法仍然开放。
我正在尝试在centos7上读取/var/log/audit/audit.log文件。 我带着命令来 sealert -a /var/log/audit/audit.log 在一台机器上工作正常,初始扫描需要花费一秒左右的时间,但是在另一个扫描上进行了大约30分钟,仍然是40%。 它不能被ctrl – c停止。 我也试图删除audit.log所以它几乎是空的,但没有加速。 这两台机器都是虚拟的,并在同一主机上运行 我发现许多警报是由我的apache生成的,所以我禁用了selinux setenforce 0 并删除旧的audit.log.X文件,但它仍然是缓慢的(并保持减速,所以它可能永远不会完成) sealert进程是使用一个核心永久在25%的CPU和1G的RAM。 有没有其他办法可以从cli分析selinux日志文件?
我试图debugging一个问题,我想知道这是否会给任何人敲响钟声:我的日志被淹没了 audit: type=1107 audit(1479418315.344:1053): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:kernel_t:s0 msg='Unknown class service exe="/usr/lib64/systemd/systemd" sauid=0 hostname=? addr=? terminal=?'; 这似乎发生在SSH连接启动(我们有很多,服务器互相通话和维护隧道等) 我做了auditctl -D清除所有审计规则(只是为了testing哪个规则产生的),但它没有效果… 我对SELinux的使用经验有限,所以我甚至不知道要找什么。 谢谢!
我用Centos 7.3获得了一个新的vServer。 和SELinux 2.5。*。 我想让SELinux活跃起来,以便对我的服务器进行更好的访问控制,但没有任何效果。 如果我检查SELinux模式并进入 getenforce: disabled 要么 SELinux status: disabled 另外我用shutdown -r重新启动服务器,现在仍然是同样的问题。 检查你的CentOS上安装了哪些SELinux软件包 rpm -qa | grep selinux libselinux-python-2.5-6.el7.x86_64 libselinux-utils-2.5-6.el7.x86_64 libselinux-2.5-6.el7.x86_64 selinux-policy-3.13.1-102.el7_3.7.noarch 我已经安装了更多的SELinux包,以便在日志中捕获更多的错误消息,但是所有的日志文件都是空的。 cat /var/log/messages | grep "SELinux is preventing" empty feedback also with | grep "SELinux" 如果使用cat命令查看SELINUXconfiguration文件,我会看到SELINUX已经设置为强制未禁用。 这是一个错误还是什么? 我知道Centos 7.3的版本是新的,但我得到与该操作系统的vServer。 我已经用7.1服务器试过了,一切正常。 是的,我已经多次重新启动服务器。
所以在过去的几天里,我一直在努力尝试在Red Hat 7.3上build立一个基于ftft的chroot实例。 目的是让外部用户只login到他们各自的目录下载文件。 将有大约50个ftp用户。 vsftpd version 3.0.2, Red-Hat 7.3 从这里开始是我的vsftpd conf: # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT […]
注意:看起来像将selinux设置为Permissive模式不会阻止此文件权限问题。 我们有一个运行CentOs 7.2.1511的开发虚拟机。 文件通过NFS(通过vagrant(virtualbox))与我们的主机(Mac)共享。 NFS共享是我们可以在主机上使用PHPStorm编辑代码。 如果我们使用SMB共享,这个问题不会突然出现,但是文件共享r / w性能会慢得令人不快。 stream浪者的分享设置是: config.vm.synced_folder "code", "/srv/client/code" , :nfs=>true, :mount_options => ['rw,noatime,nolock,vers=3,udp,fsc,actimeo=2,resvport,rsize=32768,wsize=32768'] 当运行git checkout x或者git clean -df ,我们会收到权限被拒绝的消息。 $ git clean -df warning: failed to remove modules/node_modules/acorn/bin/acorn warning: failed to remove modules/node_modules/acorn/bin/generate-identifier-regex.js … 运行ls -Z modules/node_modules/acorn/bin/acorn $ ls -Z modules/node_modules/acorn/bin/acorn -rwxr-xr-x. 503 games system_u:object_r:nfs_t:s0 modules/node_modules/acorn/bin/acorn 哪个是共享的正确用户/组以及正确的文件上下文,与可移动文件完全相同。 例如 $ ls -Z […]
我在CentOS 7上运行MySQL,似乎无法远程连接MySQL。 我有: bind-address=0.0.0.0 当然不是#skip-networking但是如果我绑定到实际的公共/本地IP地址,则无关紧要。 我禁用了SELinux: [root@hostname ~]# sestatus SELinux status: disabled 并输出为iptables -L -v : Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 103K 21M ACCEPT all — any any anywhere anywhere ctstate RELATED,ESTABLISHED 13 880 ACCEPT all — lo any anywhere anywhere 21423 3952K […]
我的系统: Debian 9 Stretch Docker版本17.06.0-ce,build 02c1d87 SELinux的 这只是运行良好。 但是,如果我也激活命名空间重映射(默认,使用dockremap用户),我不能运行或启动我的任何容器。 # docker run hello-world nsenter: failed to unshare namespaces: Operation not permitted container_linux.go:262: starting container process caused "process_linux.go:247: running exec setns process for init caused \"exit status 34\"" docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "process_linux.go:247: running exec setns process […]
我正在研究一个必须用SELinux保护的新项目。 我们有一个用C编写的自定义二进制文件(为了这个问题,它将被称为“testprog”),需要切换到它自己的上下文,以便我们可以限制它的操作,而不是让它运行在非限制域。 我已经创build了一个简单的示例策略文件,基于迄今为止所做的学习,但bash未能执行二进制文件。 以下是目前存在的策略文件: policy_module(testprog, 0.1.6) require { type unconfined_t; class file { ioctl getattr setattr create read write unlink open relabelto }; class process transition; type fs_t; class filesystem getattr; } type testprog_t; type testprog_exec_t; allow testprog_t fs_t:filesystem getattr; allow testprog_t testprog_exec_t : file { ioctl read getattr lock execute execute_no_trans entrypoint open } […]
我试图得到一个Django + mod_fcgid设置工作(mod_wsgi是棘手的,因为我有一个静态链接的Python。不要问)。虽然这是在我的Mac OS X开发框上微不足道,让它在服务器上运行迄今为止,certificate是不可能的。 有了这个configuration LoadModule fcgid_module modules/mod_fcgid.so FCGIDSocketPath run/mod_fcgid FCGIDSharememPath run/mod_fcgid/fcgid_shm ScriptAliasMatch /apps/([^/]+)(/.*)? /var/www/apps/$1/apache/dispatch.fcgi$2 <DirectoryMatch ^/var/www/apps/([^/]+)/apache> SetHandler fcgid-script Order allow,deny Allow from all Options +ExecCGI </DirectoryMatch> 和这个例子dispatch.fcgi : #!/usr/bin/python import sys sys.path.insert(0, '/var/www/lib/python2.5/site-packages/flup-1.0.2.egg') def myapp(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) return ['This is my hello world test!\n'] if __name__ == '__main__': from flup.server.fcgi […]