From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2180CC31E57 for ; Mon, 17 Jun 2019 12:43:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B2BB720861 for ; Mon, 17 Jun 2019 12:43:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=millerson.name header.i=@millerson.name header.b="aY/WIuiG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726669AbfFQMnq (ORCPT ); Mon, 17 Jun 2019 08:43:46 -0400 Received: from host89-222-249-147.netorn.net ([89.222.249.147]:50868 "EHLO mail.millerson.name" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1725995AbfFQMnq (ORCPT ); Mon, 17 Jun 2019 08:43:46 -0400 X-Greylist: delayed 1209 seconds by postgrey-1.27 at vger.kernel.org; Mon, 17 Jun 2019 08:43:45 EDT DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=millerson.name; s=mail; h=MIME-Version:In-Reply-To:Message-Id:Date:Subject: To:From:user-agent; bh=6xKI9J2VApI/Niac60+smosYOmwbkcbfXo2J7eFbYoo=; b=aY/WIu iGEaEIHcZsHs5GCzS45bMnjL6mWqHm/lg/KQXieLSn96NUF12Gh5tPZrxiB66+uCrQeaYcFRCHyFa ffGvQZ+j74RpwI3VDZAzOJVliMiXWdZdfN/fXV17PYan9nGOXBlknhvPM+DQkhJHVj39Evp4sQFF9 0L57wmHoYPw=; Received: from localhost ([127.0.0.1] helo=mail.millerson.name) by mail.millerson.name with esmtpsa id 1hcqz9-0004Ky-Ai (envelope-from ); Mon, 17 Jun 2019 15:43:43 +0300 Received: from alex-office-laptop.msad.rbkmoney.com ([2a04:4a00:5:966:a55:5884:e3f8:8906]) by mail.millerson.name with ESMTPSA id NHDrKf6KB10iQQAAXPwaFA (envelope-from ); Mon, 17 Jun 2019 15:43:42 +0300 From: Alexander Miroshnichenko To: selinux-refpolicy@vger.kernel.org Cc: pebenito@ieee.org, Alexander Miroshnichenko Subject: [PATCH v2] Add lldpd policy Date: Mon, 17 Jun 2019 15:42:08 +0300 Message-Id: <20190617124207.25680-1-alex@millerson.name> X-Mailer: git-send-email 2.21.0 In-Reply-To: <749388e0-6da1-4b06-c62c-35302a5aba78@ieee.org> References: <749388e0-6da1-4b06-c62c-35302a5aba78@ieee.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit X-GIT-Signature: 97771603569813a3f4aa359ef2bce424 Sender: selinux-refpolicy-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: selinux-refpolicy@vger.kernel.org New policy for lldpd ( http://vincentbernat.github.io/lldpd ). Signed-off-by: Alexander Miroshnichenko --- policy/modules/roles/sysadm.te | 4 ++ policy/modules/services/lldpd.fc | 9 ++++ policy/modules/services/lldpd.if | 83 ++++++++++++++++++++++++++++++++ policy/modules/services/lldpd.te | 79 ++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+) create mode 100644 policy/modules/services/lldpd.fc create mode 100644 policy/modules/services/lldpd.if create mode 100644 policy/modules/services/lldpd.te diff --git a/policy/modules/roles/sysadm.te b/policy/modules/roles/sysadm.te index 8f891c83865f..9a104fe8eb83 100644 --- a/policy/modules/roles/sysadm.te +++ b/policy/modules/roles/sysadm.te @@ -595,6 +595,10 @@ optional_policy(` lldpad_admin(sysadm_t, sysadm_r) ') +optional_policy(` + lldp_admin(sysadm_t, sysadm_r) +') + optional_policy(` lockdev_role(sysadm_r, sysadm_t) ') diff --git a/policy/modules/services/lldpd.fc b/policy/modules/services/lldpd.fc new file mode 100644 index 000000000000..19b66603add3 --- /dev/null +++ b/policy/modules/services/lldpd.fc @@ -0,0 +1,9 @@ +/etc/lldpd.conf -- gen_context(system_u:object_r:lldpd_conf_t,s0) +/etc/lldpd.d(/.*)? gen_context(system_u:object_r:lldpd_conf_t,s0) + +/usr/sbin/lldpd -- gen_context(system_u:object_r:lldpd_exec_t,s0) +/usr/sbin/lldpcli -- gen_context(system_u:object_r:lldp_cli_exec_t,s0) + +/run/lldpd -d gen_context(system_u:object_r:lldpd_runtime_t,s0) +/run/lldpd(/.*)? gen_context(system_u:object_r:lldpd_runtime_t,s0) +/run/lldpd.pid -- gen_context(system_u:object_r:lldpd_runtime_t,s0) diff --git a/policy/modules/services/lldpd.if b/policy/modules/services/lldpd.if new file mode 100644 index 000000000000..8859f8743ecf --- /dev/null +++ b/policy/modules/services/lldpd.if @@ -0,0 +1,83 @@ + +## policy for lldpd + +######################################## +## +## Execute a domain transition to run lldpcli. +## +## +## +## Domain allowed to transition. +## +## +# +interface(`lldp_domtrans_cli',` + gen_require(` + type lldp_cli_t, lldp_cli_exec_t; + ') + + corecmd_search_bin($1) + domtrans_pattern($1, lldp_cli_exec_t, lldp_cli_t) +') + +######################################## +## +## Execute lldpcli in the lldp_cli domain, +## and allow the specified role +## the lldp_cli domain. +## +## +## +## Domain allowed to transition. +## +## +## +## +## Role allowed access. +## +## +# +interface(`lldp_cli_run',` + gen_require(` + type lldp_cli_t; + ') + + lldp_domtrans_cli($1) + role $2 types lldp_cli_t; +') + +######################################## +## +## All of the rules required to administrate +## an lldpd environment +## +## +## +## Domain allowed access. +## +## +## +## +## Role allowed access. +## +## +## +# +interface(`lldp_admin',` + gen_require(` + type lldpd_t; + type lldpd_conf_t; + type lldpd_runtime_t; + ') + + allow $1 lldpd_t:process { signal_perms }; + ps_process_pattern($1, lldpd_t) + + files_search_etc($1) + admin_pattern($1, lldpd_conf_t) + + files_search_pids($1) + admin_pattern($1, lldpd_runtime_t) + + lldp_cli_run($1, $2) +') diff --git a/policy/modules/services/lldpd.te b/policy/modules/services/lldpd.te new file mode 100644 index 000000000000..457243b0112e --- /dev/null +++ b/policy/modules/services/lldpd.te @@ -0,0 +1,79 @@ +policy_module(lldpd, 1.0.0) + +######################################## +# +# Declarations +# + +type lldpd_t; +type lldpd_exec_t; +init_daemon_domain(lldpd_t, lldpd_exec_t) + +type lldp_cli_t; +type lldp_cli_exec_t; +init_system_domain(lldp_cli_t, lldp_cli_exec_t) +application_domain(lldp_cli_t, lldp_cli_exec_t) + +type lldpd_conf_t; +files_config_file(lldpd_conf_t) + +type lldpd_runtime_t; +files_pid_file(lldpd_runtime_t) +init_daemon_pid_file(lldpd_runtime_t, dir, "lldpd") + +######################################## +# +# lldpd local policy +# +allow lldpd_t self:capability { chown dac_read_search dac_override fowner fsetid kill net_admin net_raw setgid setuid sys_chroot }; +allow lldpd_t self:process { fork signal_perms }; +allow lldpd_t self:fifo_file rw_fifo_file_perms; +allow lldpd_t self:unix_stream_socket create_stream_socket_perms; +allow lldpd_t self:packet_socket create_socket_perms; + +lldp_domtrans_cli(lldpd_t) + +kernel_read_net_sysctls(lldpd_t) + +list_dirs_pattern(lldpd_t, lldpd_conf_t, lldpd_conf_t) +read_files_pattern(lldpd_t, lldpd_conf_t, lldpd_conf_t) + +manage_dirs_pattern(lldpd_t, lldpd_runtime_t, lldpd_runtime_t) +manage_files_pattern(lldpd_t, lldpd_runtime_t, lldpd_runtime_t) +manage_sock_files_pattern(lldpd_t, lldpd_runtime_t, lldpd_runtime_t) +manage_lnk_files_pattern(lldpd_t, lldpd_runtime_t, lldpd_runtime_t) +files_pid_filetrans(lldpd_t, lldpd_runtime_t, {file dir sock_file}) + +files_read_etc_files(lldpd_t) + +logging_send_syslog_msg(lldpd_t) + +miscfiles_read_localization(lldpd_t) + +sysnet_dns_name_resolve(lldpd_t) + +######################################## +# +# lldp_cli local policy +# +allow lldp_cli_t self:capability dac_override; +allow lldp_cli_t self:unix_dgram_socket { connect create }; +allow lldp_cli_t self:unix_stream_socket { connect create read write }; +allow lldp_cli_t self:process signal; + +allow lldp_cli_t lldpd_runtime_t:sock_file read_sock_file_perms; +stream_connect_pattern(lldp_cli_t, lldpd_runtime_t, lldpd_runtime_t, lldpd_t) + +domain_use_interactive_fds(lldp_cli_t) + +files_search_etc(lldp_cli_t) +list_dirs_pattern(lldp_cli_t, lldpd_conf_t, lldpd_conf_t) +read_files_pattern(lldp_cli_t, lldpd_conf_t, lldpd_conf_t) + +logging_send_syslog_msg(lldp_cli_t) + +files_dontaudit_read_etc_files(lldp_cli_t) + +miscfiles_read_localization(lldp_cli_t) + +userdom_use_user_ptys(lldp_cli_t) -- 2.21.0