我有一个 Centos VM,启用了 SELinux。我希望让 sshd 监听另一个端口 --- 比如说 993。我修改了 sshd_config 文件以监听另一个端口,但 SELinux 妨碍了我。我不想禁用 SELinux。我该如何告诉 SELinux 让 sshd 读取端口 993 上的 TCP 连接?
正确的命令是,semanage port -a -t ssh_port_t -p tcp 993
但是我无法使用该命令,因为端口 993 已在另一个策略中使用:
[centos@timedb ~]$ semanage port -a -t ssh_port_t -p tcp 993
ValueError: SELinux policy is not managed or store cannot be accessed.
[centos@timedb ~]$
但是我无法删除策略中的该端口,因为它是基本策略的一部分:
[centos@timedb ~]$ sudo semanage port -l|grep 993
pop_port_t tcp 106, 109, 110, 143, 220, 993, 995, 1109, 10993
[centos@timedb ~]$ sudo semanage port -d -t pop_port_t -p tcp 993
ValueError: Port tcp/993 is defined in policy, cannot be deleted
[centos@timedb ~]$
我需要使用已定义的端口,因为我位于中间盒的上游,该中间盒仅允许分配给指定服务的端口上的连接,并且端口 22 被阻止。
答案1
使用semanage(8)
来允许它。
# semanage port -a -t ssh_port_t -p tcp 993