nmcli를 통해 NetworkManager를 변경할 때 루트를 요구하는 "올바른" 방법

nmcli를 통해 NetworkManager를 변경할 때 루트를 요구하는 "올바른" 방법

무엇인가요옳은단일 명령을 사용하거나 작은 폴킷을 추가하여 권한이 없는 모든 사용자가 nmcli를 읽기 전용으로 사용하도록 제한할 수 있습니까?

편집하다:루트 외에 권한 있는 Unix 그룹(예: "netadmins")만 허용하는 것도 좋을 것입니다. 그러나 주요 문제는 권한이 없는 일반 사용자가 읽기 전용이 아닌 모든 변경 사항을 차단하는 것입니다.

배경

내가 아는 대부분의 시스템 관리자와 마찬가지로 서버 배포의 경우 구성 파일과 네트워크 스크립트를 사용하여 인터페이스, 브리지, 바인딩 등을 구성하는 대신 일반적으로 NetworkManager를 비활성화하고 "네트워크" 서비스를 실행합니다. 이는 간단하고 실행 가능합니다. 반복적이고 안정적이며 매우 불편한. -고급 구성도 블랙박스입니다.

EL 8에서는 이전 네트워크 구성이 더 이상 사용되지 않고 NetworkManager로 대체되었습니다. 동시에 EL 배포판(현재 EL 7.5)에서는 이제 루트가 아닌 사용자가 인터페이스를 생성, 수정 및 삭제하고 기존 구성을 거의 무제한으로 변경할 수 있습니다. 컴퓨팅 헤드 노드 역할을 하는 서버의 경우 단일 사용자가 전체 시스템의 효율적인 작동을 방해할 수 있습니다. 경계 서비스를 제공하는 서버의 경우 이는 권한 없는 공격의 잠재적인 심각도와 보안 영향을 증가시킵니다.

NetworkManager의 폴킷 구성 변경에 대한 일부 문서를 읽었지만 대부분은 랩톱의 일부 무선 문제를 해결하는 것이었습니다.

답변1

당연히 우리는 Javascript를 작성해야 합니다. 흥미롭지 않나요?

나는 이것이 효과가 있을 것이라고 생각합니다:

# /etc/polkit-1/rules.d/10-disable-networkmanager.rules

polkit.addRule(function(action, subject) {
    if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0)
    {
        return polkit.Result.NO;
    }
});

https://doc.opensuse.org/documentation/leap/security/html/book.security/cha.security.policykit.html

https://wiki.archlinux.org/index.php/Polkit#Examples

https://blog.christophersmart.com/2014/01/06/policykit-javascript-rules-with-catchall/

rpm -q --dump NetworkManager | grep -i pol정책 파일이 빠르게 표시됩니다 /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy. 이를 검색하면 <allow_inactive>yes허용되는 것으로 알려진 작업이 표시됩니다.외딴로그인 사용자. 예를 들어 Fedora Workstation 29에서는 다음과 같이 나타납니다.

  • org.freedesktop.NetworkManager.네트워크 제어
  • org.freedesktop.NetworkManager.settings.modify.own
  • org.freedesktop.NetworkManager.settings.modify.system

<allow_active>대략적으로 로컬로 로그인한 사용자에 해당합니다. <allow_any>로그인하지 않은 사용자에 해당합니다. "로그인"은 을 의미합니다 pam_systemd. 기본적으로 "로그인"은 GUI 또는 쉘 로그인을 의미하지만 Apache :-)와 같은 다른 것에 대해 PAM 로그인을 구성하는 경우에는 그렇지 않을 수도 있습니다.

관련 정보