Articles of selinux

在我的selinux模块文件里面设置一个端口号

我试图把一个小的selinux模块放在一起,以进一步理解selinux。 我用自己的port_type定义了一个小的守护进程类应用程序types。 以下代码是精简版本,用httpd_treplace我自己的应用程序types: module mymodule 1.0; require { type httpd_t; attribute port_type; class tcp_socket name_bind; } #============= my_port_t ============== type my_port_t, port_type; allow httpd_t my_port_t:tcp_socket name_bind; 现在我想将my_port_t的实际端口号放入模块(或生成的包)中。 目的是为了避免这样的显式semanage调用: semanage port -a -t my_port_t -p tcp 9011 我知道semanage使得端口号是永久性的,但我更喜欢有一个文件来处理所有事情。 这样,模块分配到许多系统会容易得多。 我怎样才能做到这一点? 到目前为止我还没有find解决scheme。 我以错误的方式接近了吗?

SELinux策略.fc文件

我在selinux中为nginx创build了一个策略,我对于一个特定的问题有一个问题: 我的网站数据位于/websites/websitename.com/alldatahere。 我有超过150个网站,所以我不想为每个网站手动添加规则。 在我的nginx.fc文件中,我想把/websites/anywebsite.com/*中的所有文件都放到php文件的nginx_websites_ttypes中。 然后我会给nginx_t(nginx运行的受限进程)读取nginx_websites_t的权限。 所以最后我会有两种types: nginx_websites_t – for all files except php php_websites_t – for php files 我尝试了以下所有文件: /websites/*.*(/.*)? gen_context(system_u:object_r:nginx_websites_t,s0) 但似乎并没有工作。 我真的没有太多的正则expression式的经验,但是当我在nginx中导入每个网站的configuration文件时,我可以把它放在我的nginx conf中: include /websites/configuration/*.*/*.conf 我在我的fc文件中尝试了相同的方法,但是正如你所看到的那样,这是行不通的。 这是我的整个FC文件: /websites/*.*(/.*)? gen_context(system_u:object_r:nginx_websites_t,s0) /websites/selinux/nginx/(/.*)? gen_context(system_u:object_r:nginx_rw_t,s0) /etc/init.d/nginx — gen_context(system_u:object_r:nginx_exec_t,s0) /usr/sbin/nginx — gen_context(system_u:object_r:nginx_exec_t,s0) /var/lib/nginx(/.*)? gen_context(system_u:object_r:nginx_var_lib_t,s0) /var/log/nginx(/.*)? gen_context(system_u:object_r:nginx_log_t,s0) /usr/share/nginx(/.*)? gen_context(system_u:object_r:nginx_usr_t,s0) /etc/nginx(/.*)? gen_context(system_u:object_r:nginx_etc_t,s0) /run/nginx — gen_context(system_u:object_r:nginx_pid_t,s0) 我不认为你需要我的整个te文件,但这里是添加文件types的行: type nginx_websites_t; files_type(nginx_websites_t);

为什么创build逻辑卷(LVM)之后有SELinux问题?

默认的后缀队列目录om RHEL 7.3是/ var / spool / postfix。 权限为755,所有者root,组root和SELinux上下文system_u:object_r:postfix_spool_t:s0。 我可以删除这个目录中的所有目录和文件。 在“systemctl restart postfix”之后,重新创build目录/文件。 然后,我在/ var / spool / postfix上挂载了一个逻辑卷,拥有相同的权限,所有者,组和SELinux上下文。 在“systemctl restart postfix”之后,我得到了各种SELinux问题。 那为什么会有差异? 什么是解决这个问题的正确方法? 目前我有这个自定义的SELinux模块,但仍然不完整: module postfix_queue 1.0; require { type postfix_master_t; type postfix_spool_t; type postfix_pickup_t; class capability { fowner fsetid }; class fifo_file { create open read write unlink getattr setattr }; class sock_file […]

SELinux阻止NRPE在RHEL 6.8中正常运行:无法完成SSL握手

我下载了nrpe-3.2.0.tar.gz和nagios-plugins-2.2.1.tar.gz ,解压缩,编译并安装在一个RHEL 6.8 64位盒子中。 它在SELinux状态为Permissive时运行良好,但在强制模式下不起作用。 我跑了很多次 grep -e nrpe -e nagios /var/log/audit/audit.log | audit2allow -M nrpe semodule -i nrpe.pp 但是我总是从Nagios服务器得到相同的错误信息: check_nrpe -H 10.252.1.212 CHECK_NRPE: Error – Could not complete SSL handshake. 并在节点的nrpe.log中: [1505198565] is_an_allowed_host (AF_INET): host is in allowed host list! [1505198565] Host address is in allowed_hosts [1505198565] Error: (!log_opts) Could not complete SSL handshake […]

centos 7无法更改ssh端口 – selinux策略30失踪

我正在用LAMP运行centos 7.3在/ etc / ssh / sshd_config中更改我的ssh端口后,我已经运行 semanage port -a -t ssh_port_t -p tcp <my port> 但它踢出了以下错误 SELinux: Could not downgrade policy file /etc/selinux/targeted/policy/policy.30, searching for an older version. SELinux: Could not open policy file <= /etc/selinux/targeted/policy/policy.30: No such file or directory libsemanage.semanage_reload_policy: load_policy returned error code 2. (No such file or directory). SELinux: Could […]

TCP源端口增加2,即使curl / wget也是如此

当使用curl和wget时,如果没有手动设置源端口(如curl中的–local-port),则源TCP端口将始终为偶数,并将递增2而不是1。 EG:在tcpdump中,当我build立连接时,我看到使用的源端口45080,然后下一个连接将使用45082,而不是45801.使用本地端口我可以强制它使用奇数端口,并确认tcpdump成功使用。 这是在networkingtesting床上引起我的问​​题,我不能在我的生活中找出什么是控制隐式的TCP端口select。 我可以改变范围,但我不能改变“增量”。 使用centos7和“3.10.0-514.el7.x86_64”内核。 在tcpdump中,我看到了使用wget和curl的相同行为,这导致我相信这不是一个curl特定的问题,而是正在用于select端口的机制。 另外,如果我看到使用端口45080curl,例如,我知道下一个端口将使用45082.如果我强制50000的本地端口,然后再curl没有 – 本地端口,它将是45082,就像一个单独的计数器递增它,不受任何“最后”使用的端口是什么影响。 或者,如果做同样的事情,而不是强制端口50000,而不是强制端口50000,我强迫它使用45082,它的端口,它可以挑选,然后我再次使用curl,而不强迫本地端口,它会select45083 ,那么如果再次select45084,那么45086 … 如果我将范围限制到奇数个端口,唯一的方法是自然地select一个奇数。 是否有一个系统调用,或者某种内核操作来拾取源端口,有没有办法改变它? 谢谢!

SELinux的“https_log_t策略”不生效

我试图在运行Fedora 26服务器的Digital Ocean Droplet上使用apache httpd来设置虚拟主机。 我遵循这个教程: 如何在CentOS 7上设置Apache虚拟主机 ,假设Fedora和CentOS有相似之处。 我已经按照教程来设置这个虚拟主机,如下所示: <VirtualHost *:80> ServerName www.mywebsite1.com ServerAlias mywebsite1.com DocumentRoot /var/www/html/mywebsite1.com/public_html ErrorLog /var/www/html/mywebsite1.com/log/error_log CustomLog /var/www/html/mywebsite1.com/log/requests_log combined </VirtualHost> 但是,设置后,我得到httpd无法启动。 事实certificate,这是造成这个错误,因为我追溯到httpd错误日志: (13)Permission denied: AH00091: httpd: could not open error log file /var/www/html/mywebsite1.com/log/error_log. AH00015: Unable to open logs 那么,我查找了解决scheme,发现这可能是由于SELinux政策。 使用ls -lZ /var/www/html/mywebsite1.com ,打印出当前策略如下: total 8 drwxr-xr-x. 2 apache apache unconfined_u:object_r:httpd_sys_content_t:s0 4096 […]

如何在Centos 7.4上禁用Selinux

我不想禁用Selinux,但是我遇到了问题。 我正在使用FFMPEG(位于/ var / www / tester / ffmpeg并由apache拥有) [root@betaX tester]# ls -Z /var/www/html/tester/ffmpeg/ -rwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 ffmpeg -rwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 ffmpeg-10bit -rwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 ffprobe -rwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 ffserver drwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 manpages drwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 model -rwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 qt-faststart 但每次我尝试运行ffmpeg {ffmpeg-cmd} -i {input} -vcodec libx264 […]

MailScanner和SELinux

我正在运行Centos 7.4 + Postfix + MailScanner(4.85.2)+ spamassassin + Pyzor + Razor2。 当我重新启动MailScanner服务或服务器时,MailScanner.pid创build与标签system_u:object_r: initrc_var_run_t :s0而不是system_u:object_r: mscan_var_run_t :s0。 如果我运行以下它说: $ audit2allow -a #!!!! The file '/run/MailScanner.pid' is mislabeled on your system. #!!!! Fix with $ restorecon -R -v /run/MailScanner.pid 所以我必须在重新启动MailScanner时运行restorecon: $ restorecon -R -v /run/MailScanner.pid restorecon reset /run/MailScanner.pid context system_u:object_r:initrc_var_run_t:s0->system_u:object_r:mscan_var_run_t:s0 问题是,我如何强制使用正确的标签创buildPID? 我知道我可以使用构build和安装自定义SELinux策略 **allow mscan_t initrc_var_run_t:file read;** 但它看起来不是一个好的解决scheme。

SELinux设置为执行后,httpd服务无法启动

还有其他几个这样的问题,但没有人能解决我的问题。 以下是详细信息: 设置SELinux =强制执行后,httpd服务无法启动。 在error.log中,我看到以下消息: /etc/httpd/modules/mod_jk.so: cannot open shared object file: Permission denied 我的RHEL版本是7.4,httpd版本是2.4.6 经过一番研究,我发现了 # genhomedircon # touch /.autorelabel –> reboot 但是这并没有帮助。 后来我发现这个问题是因为SELinux的上下文。 /etc/httpd/modules/mod_jk.so是符号链接到mod_jk-1.2.41-httpd-2.4.6.so 。 两者有不同的背景。 我试图改变使用semanage的符号链接的上下文,但无法改变。 我试图改变原始文件的上下文,但不能这样做。 /etc/selinux/targeted/contexts/files/file_contexts.local文件显示我所做的更改。 然而, restorecon没有做任何事情,上下文保持不变。 另外matchpathcon不显示任何更改。 以下是来自audit.log的日志 type = CWD msg = audit(1509988597.679:106585):cwd =“/”type = PATH msg = audit(1509988597.679:106585):item = 0 name =“/ etc / httpd / modules […]