我有一台安装了 SELinux 的 AlmaLinux 9 服务器,但目前已禁用,因为该服务器尚未投入生产使用。
我已准备好开始安装其他应用程序(例如 Apache、PHP、Postfix、Logwatch、Fail2ban 等),但我想知道是否应该在安装这些应用程序之前将 SELinux 设置为强制执行并重新标记文件系统,或者等待直到我安装完我需要的所有软件然后再做?有什么区别吗?
预先感谢您的任何建议/意见。
我有一台安装了 SELinux 的 AlmaLinux 9 服务器,但目前已禁用,因为该服务器尚未投入生产使用。
我已准备好开始安装其他应用程序(例如 Apache、PHP、Postfix、Logwatch、Fail2ban 等),但我想知道是否应该在安装这些应用程序之前将 SELinux 设置为强制执行并重新标记文件系统,或者等待直到我安装完我需要的所有软件然后再做?有什么区别吗?
预先感谢您的任何建议/意见。
我按照此链接下概述的步骤为特定域(类型)自定义 selinux 策略。
对于域,我从拒绝记录中systemd_tmpfiles_t
得到以下建议:audit2allow
require{
type default_t;
type systemd_tmpfiles_t;
class file map;
}
#================================systemd_tmpfiles_t=======================
#!!! This avc can be allowed using the boolean 'domain_can_mmap_files'
allow systemd_tmpfiles_t default_t:file map;
根据上面链接中概述的程序,我做
echo "allow systemd_tmpfiles_t default_t:file map" >> custom_rules.te
并得到以下错误:
ERROR 'unknown type default_t'
custom_rules.te
我通过以下命令生成了:
sepolicy generate --customize -d systemd_tmpfiles_t -n custom_rules.te
在生成的中custom_rules.te
,我只能看到以下规则:
gen_require('
type systemd_tmpfiles_t
')
由于default_t
生成的类型未知,我该如何解决这个问题custom_rules.te
?
欣赏你的想法。
TIA
我正在尝试使用 Almalinux 更改 VPS 上的 SSH 端口。我遵循了本指南,但未能做到。
这些是我尝试分别使用 22 和新端口进行 SSH 时收到的输出。
ssh: connect to host XXX.XXX.XXX.XXX port 22: Connection timed out
ssh: connect to host XXX.XXX.XXX.XXX port 23498: Connection timed out
这是我的/etc/ssh/sshd_config
.
...
Port 23498 22
...
运行semanage port -l | grep ssh
给出以下输出。
ssh_port_t tcp 23498, 22
使用新端口重新开始使用service sshd restart
会产生以下输出。
Redirecting to /bin/systemctl restart sshd.service
Job for sshd.service failed because the control process exited with error code.
See "systemctl status sshd.service" and "journalctl -xe" for details.
这是 的输出systemctl status sshd.service
。
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Fri 2022-02-25 17:26:08 CET; 34s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 25872 ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY (code=exited, status=255)
Main PID: 25872 (code=exited, status=255)
Feb 25 17:26:08 xxx.xxx.xxx systemd[1]: sshd.service: Main process exited, code=exited, status=255/n/a
Feb 25 17:26:08 xxx.xxx.xxx systemd[1]: sshd.service: Failed with result 'exit-code'.
Feb 25 17:26:08 xxx.xxx.xxx systemd[1]: Failed to start OpenSSH server daemon.
更改端口也会导致正常的 SSH 中断。注释掉Port
并sshd_config
重新启动sshd
允许再次通过 SSH 访问。我也尝试过openssh-server
更改端口后重新安装,但无济于事。允许端口通过简单的防火墙。非常感谢任何帮助。
我知道 SElinux 布尔值可以这样设置setsebool
:
setsebool -P virt_qemu_ga_read_nonsecurity_files 1
但我想virt_qemu_ga_read_nonsecurity_files
使用自定义 SELinux 策略设置这个布尔值。
甚至可能吗?我怎样才能做到这一点?
我在同一个网络上有两台服务器。一个运行 Windows Server 2016,另一个运行 CentOS 8。Windows 服务器是我的主要文件存储,它是我所有数据的所在。CentOS 服务器安装了 Windows 共享并且可以访问其文件。
在 CentOS 上,我设置了一个 samba 共享。为什么?因为我有一个 webapp 在同一台服务器上运行,我希望 webapp 控制谁可以访问什么文件。因此,与其让我们的(内部)用户直接安装 Windows 共享,他们将安装 CentOS 共享,这将是对文件的“看门人”访问。
在 samba 文件夹中,每个用户都有一个文件夹和一个配置,以允许用户仅访问他们的文件夹。webapp 被配置为将符号链接添加到链接到“真实”文件的这些文件夹中。
这就是问题所在。如果我将“普通”文件添加到用户的文件夹中,他们就可以正常访问它。但是,如果我添加一个符号链接(到已安装的 Windows 共享中的文件),它就不会出现在他们面前。我很确定这是一个 SELinux 问题。
这是设置的方式。
Windows 共享已挂载
sudo mount -t cifs //WindowsShare/data /media/WinShare \
-o ip=192.168.1.5,username=user,gid=sambashare
ls -alhZ /media/WinShare
drwxr-xr-x. 2 root sambashare system_u:object_r:cifs_t:s0 0 Jan 10 16:57 files
创建并使用一个 samba 共享/srv/smb
(所有 samba 用户都在sambashare
组中)
ls -alhZ /srv
drwxrwx---. 2 root sambashare unconfined_u:object_r:samba_share_t:s0 6 Jan 13 11:20 smb
具有以下/etc/samba/smb.conf
内容:
[global]
allow insecure wide links = yes
unix extensions = no
[adminShare]
path = /srv/smb
wide links = yes
follow symlinks = yes
作为测试,我添加了一个符号链接和一个文件
ln -s /media/WinShare/files/test.pdf /srv/smb/test.pdf
touch /srv/smb/file.bin
然后我尝试安装\\CentOS\adminShare
在 Windows VM 中,但我没有看到该test.pdf
文件,但我看到了file.bin
.
如何让 CentOS samba 共享访问已安装的 Windows Server 数据?在设置 CentOS 服务器时,我运行:
sudo semanage fcontext -a -t samba_share_t "/srv/smb(/.*)?"
这是让我看到file.bin
的,但我还是看不到file.pdf
。我找到了这个,但我不知道是否要更改所有内容:
sudo setsebool -P samba_export_all_rw=1
如何允许 samba 访问该/media/WinShare
文件夹?这行得通吗?
sudo semanage fcontext -a -t samba_share_t "/media/WinShare(/.*)?"
我有几件事希望能够在 Fedora 上作为服务器站起来。我知道我至少可以运行其中的一些,podman
或者docker
但我已经知道如何做到这一点。我也已经知道如何将其用于现有服务,例如ssh
我只想通过以下方式使用自定义端口:
sudo semanage port -a -t ssh_port_t -p tcp 2222
但我的问题是 selinux 已经定义了ssh_port_t
类型。如果我有一些由于某种原因我不能或不想在容器中运行的自定义应用程序怎么办,我将如何允许端口用于没有预定义类型的东西semanage port --list
?
对于此示例,假设我正在尝试运行 /path/myNiftyGameServer 并希望允许它连接到 udp 端口 12345(目前在我的系统上未使用)。我怎样才能做到这一点?
背景方面,我并不声称自己是大师,但总体上我感觉对 bash 和 Linux 相对精通,但在 SELinux 方面我仍然是一个新手(我知道标签、restorecon
. 和一些基本semanage
命令,但我仍然学习)。
请假设我不愿意简单地禁用 SELinux(因为我是)。如果这个问题看起来不切实际,可以提出其他建议,但我之所以问主要是因为我很好奇这个问题在 SELinux 中将如何解决,并且除了像我的 ssh 这样的现有类型之外,我自己无法找到解决方案上面的例子。请随时为 SELinux 新手推荐其他相关的阅读主题。
编辑:根据我在 Centos 上找到的 Starbound 服务器和Soldat Dedicated server policy的额外搜索,我猜我可能需要学习如何编写 SELinux 策略?当一项服务根本没有名称但我仍然想学习如何做时,我需要这么多真是太疯狂了。
编辑 2:在花了一些时间阅读它们之后,Starbound 链接似乎不是我所追求的;唯一的 SELinux 策略编写是针对单独的 Apache 服务器(Apache 已经定义)而不是游戏服务器。Soldat 似乎与我所追求的非常接近,但我认为我需要一本关于政策写作的入门书才能到达那里。特别是,我真的只对如何为自定义服务器/Web 服务打开端口感兴趣。设置文件路径访问听起来也不错,但是我可以使用用户帐户来管理它,而即使我在 firewall-cmd(firewalld)中打开一个网络端口,如果我没记错的话,它仍然会被 SELinux 阻止(我知道我有这个过去的问题,但我想我可以重新测试以确定)。
我已阅读有关服务器保护的信息,并且知道如何使用很少的保护,因为它要求不高。
我的问题是:以下哪些保护最适合服务器,哪些提供的保护可以在服务器上一起使用:
谢谢!
SELINUX:如何使子文件夹规则优先级高于父规则,例如:
/home/kevinw/www/kp/storage(/.*)? 所有文件 system_u:object_r:httpd_sys_rw_content_t:s0
输给/home/kevinw/www(/.*)?所有文件 system_u:object_r:httpd_user_content_t:s0
或者我的概念是错误的,因为它已经设置在父母身上?
任何帮助表示赞赏