10장. SELinux systemd 액세스 제어


Red Hat Enterprise Linux 7에서 시스템 서비스는 systemd 데몬에 의해 제어됩니다. 이전 Red Hat Enterprise Linux 릴리스에서 데몬은 다음 두 가지 방법으로 시작할 수 있습니다.
  • 부팅 시 System V init 데몬이 init.rc 스크립트를 시작한 다음 이 스크립트가 필요한 데몬을 시작했습니다. 예를 들어 부팅 시 시작된 Apache 서버에는 다음 SELinux 레이블이 있습니다.
    system_u:system_r:httpd_t:s0
    Copy to Clipboard Toggle word wrap
  • 관리자가 init.rc 스크립트를 수동으로 시작하여 데몬이 실행됩니다. 예를 들어 서비스 httpd restart 명령이 Apache 서버에서 호출되면 결과 SELinux 레이블은 다음과 같습니다.
    unconfined_u:system_r:httpd_t:s0
    Copy to Clipboard Toggle word wrap
수동으로 시작하면 프로세스가 SELinux 레이블을 시작한 사용자 부분을 채택하여 위의 두 시나리오에서 레이블을 지정하지 않았습니다. systemd 데몬에서는 전환이 매우 다릅니다. systemd 는 시스템에서 데몬을 시작하고 중지하기 위해 모든 호출을 처리하므로 init_t 유형을 사용하여 데몬을 수동으로 다시 시작할 때 레이블의 사용자 부분을 덮어쓸 수 있습니다. 결과적으로 위의 두 시나리오의 레이블은 예상대로 system_u:system_r:httpd_t:s0 이며 SELinux 정책이 개선되어 어떤 도메인을 제어할 수 있는지 제어할 수 있었습니다.

10.1. 서비스의 SELinux 액세스 권한

이전 버전의 Red Hat Enterprise Linux에서는 관리자가 System V Init 스크립트 레이블을 기반으로 서비스를 시작하거나 중지할 수 있는 사용자 또는 애플리케이션을 제어할 수 있었습니다. 이제 systemd 가 모든 서비스를 시작 및 중지하고 사용자 및 프로세스는 systemctl 유틸리티를 사용하여 systemd 와 통신합니다. systemd 데몬은 SELinux 정책을 참조하고 호출 프로세스의 레이블과 호출자가 관리하려고 하는 단위 파일의 레이블을 확인한 다음, 호출자가 액세스할 수 있는지 여부를 SELinux에 요청할 수 있습니다. 이 접근 방식을 통해 시스템 서비스의 시작 및 중지를 비롯한 중요한 시스템 기능에 대한 액세스 제어를 강화합니다.
예를 들어, 이전에 관리자는 NetworkManager가 systemctl 을 실행하여 D-Bus 메시지를 systemd 로 보낼 수 있도록 허용해야 했으며, 이 메시지는 NetworkManager가 요청한 모든 서비스를 시작하거나 중지했습니다. 실제로 NetworkManager는 systemctl 이 수행할 수 있는 모든 작업을 수행할 수 있습니다. 또한 특정 서비스를 시작하거나 중지할 수 있도록 제한된 관리자를 설정하는 것도 불가능했습니다.
이러한 문제를 해결하기 위해 systemd 는 SELinux Access Manager로도 작동합니다. systemctl 을 실행하는 프로세스의 레이블 또는 D-Bus 메시지를 systemd 로 보낸 프로세스를 검색할 수 있습니다. 그런 다음 데몬은 프로세스가 구성하려는 유닛 파일의 레이블을 조회합니다. 마지막으로 SELinux 정책에서 프로세스 레이블과 유닛 파일 레이블 간의 특정 액세스를 허용하는 경우 커널에서 정보를 검색할 수 있습니다. 즉, 특정 서비스에 대해 systemd 와 상호 작용해야 하는 손상된 애플리케이션을 이제 SELinux로 제한할 수 있습니다. 정책 작성자는 이러한 세분화된 제어를 사용하여 관리자를 제한할 수도 있습니다. 정책 변경에는 service 라는 새 클래스와 다음 권한이 포함됩니다.
class service
{
       start
       stop
       status
       reload
       kill
       load
       enable
       disable
}
Copy to Clipboard Toggle word wrap
예를 들어 정책 작성자는 도메인에서 서비스의 상태를 가져오거나 서비스를 시작 및 중지할 수 있지만 서비스를 활성화하거나 비활성화할 수 없습니다. SELinux 및 systemd 의 액세스 제어 작업이 모든 경우에 일치하지 않습니다. SELinux 액세스 검사를 사용하여 systemd 메서드 호출을 연결하도록 매핑이 정의되었습니다. 표 10.1. “SELinux 액세스 검사에서 systemd 장치 파일 메서드 호출 매핑” 는 단위 파일에 대한 액세스 검사를 매핑하고 표 10.2. “SELinux 액세스 검사에서 systemd 일반 시스템 호출 매핑” 는 일반적으로 시스템에 대한 액세스 검사를 다룹니다. 두 테이블에 일치하는 항목이 없으면 정의되지 않은 시스템 검사가 호출됩니다.
Expand
표 10.1. SELinux 액세스 검사에서 systemd 장치 파일 메서드 호출 매핑
systemd 장치 파일 방법 SELinux 액세스 확인
DisableUnitFiles 비활성화
EnableUnitFiles 활성화
GetUnit 상태
GetUnitByPID 상태
GetUnitFileState 상태
강제 종료 stop
KillUnit stop
LinkUnitFiles 활성화
ListUnits 상태
LoadUnit 상태
MaskUnitFiles 비활성화
PresetUnitFiles 활성화
ReenableUnitFiles 활성화
다시 실행 시작
새로 고침 새로 고침
ReloadOrRestart 시작
ReloadOrRestartUnit 시작
ReloadOrTryRestart 시작
ReloadOrTryRestartUnit 시작
ReloadUnit 새로 고침
ResetFailed stop
ResetFailedUnit stop
재시작 시작
RestartUnit 시작
시작 시작
StartUnit 시작
StartUnitReplace 시작
중지 stop
StopUnit stop
TryRestart 시작
TryRestartUnit 시작
UnmaskUnitFiles 활성화
Expand
표 10.2. SELinux 액세스 검사에서 systemd 일반 시스템 호출 매핑
systemd 일반 시스템 호출 SELinux 액세스 확인
ClearJobs reboot
FlushDevices Halted
get 상태
GetAll 상태
GetJob 상태
GetSeat 상태
GetSession 상태
GetSessionByPID 상태
GetUser 상태
Halted Halted
인트로스펙션 상태
kexec reboot
KillSession Halted
KillUser Halted
ListJobs 상태
ListSeats 상태
ListSessions 상태
ListUsers 상태
LockSession Halted
PowerOff Halted
재부팅 reboot
SetUserLinger Halted
TerminateSeat Halted
TerminateSession Halted
TerminateUser Halted

예 10.1. 시스템 서비스에 대한 SELinux 정책

sesearch 유틸리티를 사용하면 시스템 서비스에 대한 정책 규칙을 나열할 수 있습니다. 예를 들어 sesearch -A -s NetworkManager_t -c service 명령을 호출하면 다음이 반환됩니다.
allow NetworkManager_t dnsmasq_unit_file_t : service { start stop status reload kill load } ; 
allow NetworkManager_t nscd_unit_file_t : service { start stop status reload kill load } ; 
allow NetworkManager_t ntpd_unit_file_t : service { start stop status reload kill load } ; 
allow NetworkManager_t pppd_unit_file_t : service { start stop status reload kill load } ; 
allow NetworkManager_t polipo_unit_file_t : service { start stop status reload kill load } ;
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동