如何将Semanage命令用于SELinux策略
Semanage是一种工具,用于配置SELinux策略的某些元素,而无需修改或者重新编译策略源。
这包括将Linux用户名映射到SELinux用户身份以及对象(如网络端口,接口和主机)的安全上下文映射。
默认情况下,SELinux仅允许将已知服务绑定到已知端口。
如果要修改服务以使用非默认端口,则需要使用semanage命令修改端口类型。
在本文中,我们将探索semanage命令,并学习如何在基于RPM的发行版(如CentOS和RedHat)上列出,创建/添加和删除端口类型。
列出具有管理功能的端口
列出所有端口的基本命令是
# semanage port -l SELinux Port Type Proto Port Number afs3_callback_port_t tcp 7001 afs3_callback_port_t udp 7001 afs_bos_port_t udp 7007 afs_fs_port_t tcp 2040 afs_fs_port_t udp 7000, 7005 afs_ka_port_t udp 7004 afs_pt_port_t tcp 7002 afs_pt_port_t udp 7002 ...
要列出特定端口(如http)的端口号,请使用以下命令:
# semanage port -l | grep -w http_port_t http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
对于mysqld同样
# semanage port -l | grep -w mysqld_port_t
mysqld_port_t tcp 1186, 3306, 63132-63164
要查找其中包含特定端口号的端口名称,请使用以下命令:
# semanage port -l | grep 53
apertus_ldp_port_t tcp 539 apertus_ldp_port_t udp 539 dns_port_t tcp 53 dns_port_t udp 53
使用管理创建或者添加端口
在此示例中,我们将为http创建一个新端口,并将其分配给tcp端口2222.
“-a”选项用于添加新端口,“-t”选项指定SELinux类型,而“ -p”选项是指定要使用的协议(在本例中为tcp)。
# semanage port -a -t http_port_t -p tcp 2222
要查看新创建的端口,我们将命令列表命令与'-C'方法一起使用以仅显示自定义项。
# semanage port -lC
SELinux端口类型原型端口号
http_port_t tcp 2222
要将端口号范围分配给特定端口,请使用以下命令:
# semanage port -a -t http_port_t -p tcp 2223-2225
现在,我们可以在此处看到端口范围。
# semanage port -lC SELinux Port Type Proto Port Number http_port_t tcp 2223-2225
如果尝试添加具有与以前使用的相同值的另一个条目,则会收到错误消息:
ValueError: Port tcp/2222 already defined
要覆盖已经创建的现有端口,请使用'-m'选项进行修改:
# semanage port -m -t unreserved_port_t -p tcp 2222
现在,如果我们列出所有端口,我们将看到更改。
# semanage port -lC SELinux Port Type Proto Port Number unreserved_port_t tcp 2222
通过管理删除端口
我们使用选项-d删除端口记录。
要删除tcp端口2222上的unreserved_port_t,我们使用以下命令:
# semanage port -d -t unreserved_port_t -p tcp 2222
要删除一定范围的端口,请使用以下命令:
# semanage port -d -t http_port_t -p tcp 2223-2225
如果运行定制列表命令,但不返回任何内容,则该条目已被删除。
使用权限管理
Semanage许可用于添加或者删除SELinux Policy许可模块。
要列出所有允许的模块,请使用'-l'选项:
# semanage permissive -l Customized Permissive Types Builtin Permissive Types sanlk_resetd_t hsqldb_t systemd_hwdb_t blkmapd_t ipmievd_t targetd_t
要创建httpd_t许可域,请使用'-a'选项:
# semanage permissive -a httpd_t
现在,让我们检查所有允许的模块:
# semanage permissive -l Customized Permissive Types httpd_t Builtin Permissive Types sanlk_resetd_t hsqldb_t systemd_hwdb_t blkmapd_t ipmievd_t
要删除我们刚刚创建的许可类型,我们使用'-d'选项。
# semanage permissive -d httpd_t libsemanage.semanage_direct_remove_key: Removing last permissive_httpd_t module (no other permissive_httpd_t module exists at another priority).
在本文中,我们了解了如何使用semanage工具列出,添加和删除端口,以及基于RPM的Linux发行版。
如果系统具有GUI,则可以通过yum安装policycoreutils-gui软件包,然后运行system-config-selinux命令以打开GUI版本并从“网络端口”菜单中配置SELinux端口类型。