From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id ED0229307B for ; Thu, 15 Sep 2022 15:12:09 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E715119C98 for ; Thu, 15 Sep 2022 15:12:09 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Thu, 15 Sep 2022 15:12:06 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 50188442E5; Thu, 15 Sep 2022 15:12:06 +0200 (CEST) Message-ID: Date: Thu, 15 Sep 2022 15:12:05 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Thunderbird/105.0 Content-Language: en-US To: Thomas Lamprecht , Proxmox VE development discussion References: <20220914134235.3707811-1-d.csapak@proxmox.com> <28056eb0-7712-00a6-b342-b2bbb4fa2279@proxmox.com> <5fb8bc75-3517-086f-5389-983e1d80e890@proxmox.com> <32b0e291-77b9-cba7-6378-d5f39cd97875@proxmox.com> From: Dominik Csapak In-Reply-To: <32b0e291-77b9-cba7-6378-d5f39cd97875@proxmox.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.877 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment NICE_REPLY_A -1.583 Looks like a legit reply (A) SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: Re: [pve-devel] [RFC PATCH access-control] loosen locking restriction for users without tfa configured X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Sep 2022 13:12:10 -0000 On 9/15/22 14:53, Thomas Lamprecht wrote: > Am 15/09/2022 um 14:40 schrieb Dominik Csapak: >> On 9/15/22 12:43, Thomas Lamprecht wrote: >>> Am 14/09/2022 um 15:42 schrieb Dominik Csapak: >>>> The downside is that we cannot authenticate users anymore without quorum >>>> (since locking requires write access to pmxcfs), even for users without >>>> tfa configured (and also for clusters without any tfa configured at all) >>> >>> question is more if we should disallow login on unquorate clusters for all >>> but root@pam, as for all others you cannot be sure if they still got the >>> permissions and for the pve realm the credentials are still correct, or >>> if the non-existing TFA entry is still up-to-date (the quorate partition >>> could have TFA configured for that user since cluster split). >> >> fair point, but then we'd also have to deny api requests in general >> for non root@pam users when the cluster is not quorate, >> otherwise they can continue making requests with existing tickets >> (aside creating a new one) > > That is something rather different and bound to the ticket life time, they > won't be able to renew the ticket or create new ones, so while the session > continues to be available for maximal 2h for GET calls it has already the > same limitations as new logins. IOW. if you want to see that as the same thing > you need to adapt tickets to have a cluster state first that can actively > be revoked on a per-ticket/user basis, as otherwise it'll always be "valid > ticket = valid login". we already do not allow requests for a user that gets disabled, so when a node loses connection to a cluster, the ticket is still valid there, while not valid on the remaining quorate nodes. i think this here is a similar scenario, since at the moment a node loses quorum, we cannot verify any property of the user anymore (since it could have changed) including the 'enabled/disabled' property, thus we'd have to prevent requests > >>> >>> root@pam is a hard-coded super admin and verified via PAM, which normally >>> should be pmxcfs, and thus quorum, independent, at least if nobody was crazy >>> enough to link /etc/shadow to a file in pmxcfs or wrote a PAM that works >>> on pmxcfs info in other ways. >> >> AFAICS a user can't do anything on a non quorate cluster that wouldn't be possible >> over ssh for example ? since most operations already need the cluster to be quorate >> (aside from things such as network configuration, which might be the exact reason >> why the cluster is not quorate, so the admin/user wants to fix it) >> >> so imho @pam could be allowed in general, but for the other realms it's >> very much a design decision. > > Standard pam accounts do not get their Proxmox VE access level if connected via > SSH (or getting a shell in any other way), as the CLIHandler isn't user account > aware, so not sure how that would be an argument for allowing all of pam (which > may not even be allowed to SSH in or login (e.g., shell to /bin/false or the like, > you just cannot (simply!) derive/know that ok, thats true ofc > >> >> just to note: before accidentally breaking such logins by locking the tfa >> config, we always let users login, regardless of cluster quorum state >> > > yes I know, the question if that's right still stands, more secure is to not > allow it, and iff, we could provide a datacenter.cfg option to allow such things > with the (natural) warning that changes to that will only affected quorate notes. mhmm while that could work, i think it does not serve the right purpose, since i think the times you want to (rightfully) login to non-quorate nodes is when you try to repair them and there are 3 scenarios here: * have it default on (not as secure) * have it default off, but the user have it enabled all the time (also not as secure) * have it default off, users leave it disabled -> they cannot enable it when they'd need to (when they want to login to a non-quorate node) maybe we'd want to make it an option per user? that way there can be one (or more) admin user(s) that can always login (we could make that default true for root@pam). all that said, it still does not solve the problem when that user has tfa enabled, so maybe we should also consider building a check which type of tfa the user has (configured/provided) and only lock it when it's necessary (so far only recovery keys fall under that)