Ubuntu 24.04/22.04/20.04에 SELinux를 설치하는 방법

SELinux(Security-Enhanced Linux)는 Linux 시스템에서 액세스 제어 보안 정책을 관리하는 데 필수적입니다. 시스템 관리자, 개발자 및 보안 전문가가 주로 사용하는 SELinux는 커널 수준에서 강력한 보안을 제공합니다. Ubuntu 서버, 특히 24.04, 22.04 및 20.04 LTS 릴리스에 대한 구현은 이러한 시스템의 보안을 강화합니다.

Ubuntu의 보안을 강화하는 SELinux의 주요 기능은 다음과 같습니다.

  • 강제 액세스 제어(MAC): 기존 임의 액세스 제어 시스템과 달리 SELinux는 시스템 프로세스와 사용자를 제한하는 엄격한 정책 규칙을 시행하여 무단 액세스 위험을 완화합니다.
  • 세분화된 제어: 시스템 프로세스와 파일 및 기타 리소스와의 상호 작용을 세부적으로 제어할 수 있습니다.
  • 강화된 보안 정책: 맞춤형 보안 정책은 외부 및 내부 위협으로부터 보호하는 데 도움이 됩니다.
  • 감사 및 로깅: 포괄적인 로깅 기능은 보안 관련 이벤트의 모니터링 및 추적을 용이하게 하여 즉각적인 문제 식별 및 해결을 돕습니다.

특히 중요한 애플리케이션이나 민감한 데이터를 관리하는 경우 SELinux를 Ubuntu 서버 환경에 통합하면 시스템 보안이 크게 향상됩니다. SELinux의 설치 및 기본 사용법에 초점을 맞춘 이 가이드는 이러한 보안 이점을 활용하는 간단한 접근 방식을 제공하는 것을 목표로 합니다.

AppArmor 서비스 비활성화

호환성을 보장하려면 AppArmor가 활성 상태인지 확인하세요. AppArmor와 SELinux를 함께 실행하면 충돌이 발생할 수 있습니다. 다음을 사용하여 AppArmor의 상태를 확인합니다.

sudo systemctl status apparmor

AppArmor가 작동 중이면 비활성화하여 SELinux와의 간섭을 방지하세요. AppArmor를 비활성화하려면 다음 명령을 실행하십시오.

sudo systemctl disable apparmor --now

APT 명령을 통해 SELinux 설치

이 단계에는 주요 SELinux 패키지 설치가 포함됩니다. policycoreutils, selinux-utils, 그리고 selinux-basics. 이는 SELinux 정책을 관리하고 기본 SELinux 지원을 제공하는 데 필수적입니다.

다음 명령을 사용하여 설치를 시작합니다.

sudo apt install policycoreutils selinux-utils selinux-basics

이를 실행하면 Ubuntu 시스템에 필요한 SELinux 패키지가 설치됩니다.

SELinux 활성화

필요한 패키지를 설치한 후 SELinux를 활성화하여 시작 시 로드되는지 확인하세요. 이 활성화는 SELinux의 보안 기능을 활성화하는 데 중요합니다. 루트 권한으로 다음 명령을 실행합니다.

sudo selinux-activate

이 단계에서는 부팅 프로세스 중에 SELinux를 초기화하도록 시스템을 구성합니다.

SELinux 모드 시행

SELinux를 강제 모드로 설정하는 것이 중요합니다. 이 모드에서 SELinux는 보안 정책을 적극적으로 적용하여 사전 정의된 규칙에 따라 액세스를 거부합니다. 다음을 사용하여 시행 모드로 전환합니다.

sudo selinux-config-enforcing

이 작업은 적용 모드에서 작동하도록 SELinux 구성을 수정합니다.

SELinux 활성화를 위한 시스템 재부팅

시스템을 재부팅하여 설정 프로세스를 마무리합니다. 이렇게 하면 모든 변경 사항이 적용되고 SELinux가 설정 모드에서 작동하기 시작합니다.

sudo reboot

재부팅 후 시스템은 보안 정책을 시행하도록 SELinux가 설치, 활성화 및 구성된 상태로 실행됩니다. 다음 섹션에서는 보안 요구 사항에 맞게 SELinux를 추가로 사용자 정의하는 방법을 안내합니다.

SELinux 구성

SELinux 모드 이해

SELinux는 세 가지 모드로 작동합니다.

  • 시행 모드: SELinux가 보안 정책을 엄격하게 시행하여 설정된 규칙에 따라 액세스를 거부하는 기본 설정입니다.
  • 허용 모드: 여기서 SELinux는 정책 위반을 기록하지만 이를 적극적으로 시행하지는 않습니다. 이 모드는 정책을 테스트하고 문제를 해결하는 데 유용합니다.
  • 비활성화 모드: 이 모드에서는 SELinux가 완전히 꺼지고 정책이 적용되지 않습니다.

SELinux 구성 파일 편집

SELinux 설정을 맞춤화하려면 /etc/selinux/config 파일. 이 작업에는 nano와 같은 선호하는 텍스트 편집기를 사용하십시오.

sudo nano /etc/selinux/config

파일 내부에서 SELINUX 원하는 모드를 설정하는 라인입니다. 예를 들어 시행 모드를 활성화하려면 다음을 수행합니다.

SELINUX=enforcing

구성 변경 사항 적용

변경 사항을 적용하려면 시스템을 재부팅하세요.

sudo reboot

추가 SELinux 구성 옵션 사용자 정의

SELinux는 여러 사용자 정의 옵션을 제공합니다.

  • SETLOCALDEFS: 로컬로 정의된 파일 컨텍스트의 사용을 결정합니다. 기본 컨텍스트를 사용하려면 이 값을 0으로 설정하세요. /etc/selinux/config 그에 따라 파일을 제출하세요:
SETLOCALDEFS=0
  • SELINUX형: 정책 유형을 설정합니다. 일반적인 정책 유형인 "대상"은 특정 시스템 서비스를 보호하는 데 중점을 둡니다. 이를 설정하려면 SELINUXTYPE 구성 파일의 줄:
SELINUXTYPE=targeted

예: 웹 서버용 SELinux 구성

Ubuntu 웹 서버에서 HTTP 및 HTTPS 트래픽을 허용하도록 SELinux를 구성하는 것이 좋습니다. 그만큼 semanage 명령은 정책 관리에 사용됩니다.

먼저, semanage 공익사업:

sudo apt install policycoreutils-python-utils

그런 다음 포트 80에서 HTTP 트래픽을 허용합니다.

sudo semanage port -a -t http_port_t -p tcp 80

포트 443의 HTTPS 트래픽:

sudo semanage port -a -t http_port_t -p tcp 443

이러한 명령은 SELinux 정책을 업데이트하여 웹 서버가 포트 80(HTTP) 및 443(HTTPS)에서 들어오는 연결을 수신할 수 있도록 하여 안전한 웹 서비스 작동을 보장합니다.

SELinux 모드 확인

재부팅 후 SELinux 상태 확인

Ubuntu 시스템을 재부팅한 후 SELinux의 작동 상태를 확인하는 것이 중요합니다. 이 확인을 통해 시스템이 SELinux 구성 설정을 올바르게 적용하는지 확인합니다.

현재 상태를 확인하려면 다음 명령을 실행하십시오.

sestatus

이 명령은 현재 작동 상태, 실행 중인 모드(적용, 허용 또는 비활성화), 사용 중인 정책을 포함하여 SELinux에 대한 포괄적인 세부 정보를 제공합니다. 이 출력을 다음 설정과 상호 참조하십시오. /etc/selinux/config SELinux가 의도한 대로 작동하는지 확인하는 파일입니다.

일반적인 SELinux 문제 해결

기본 파일 컨텍스트 복원

잘못된 파일 컨텍스트로 인해 SELinux의 액세스가 거부되어 애플리케이션 기능이 중단되는 경우가 많습니다. 이 문제를 해결하려면 다음을 사용하세요. restorecon 명령. 예를 들어, 다음과 같은 문제를 해결하기 위해 /var/www/html 디렉토리, 실행:

sudo restorecon -Rv /var/www/html

이 명령은 내의 모든 파일 및 디렉터리에 대한 기본 컨텍스트를 반복적으로 복원합니다. /var/www/html, 변경 사항을 자세히 설명하는 자세한 출력이 포함됩니다.

문제 해결을 위해 일시적으로 허용 모드로 전환

SELinux가 특정 문제를 일으키는지 확실하지 않습니까? 진단을 위해 일시적으로 허용 모드로 전환합니다. 이 모드는 위반을 시행하지 않고 위반을 기록합니다. 다음을 사용하여 허용 모드를 활성화합니다.

sudo setenforce 0

지금 애플리케이션을 테스트해 보세요. 문제가 중단되면 SELinux 정책으로 인해 문제가 발생할 가능성이 높습니다. 테스트 후 강제 적용 모드로 되돌리는 것을 잊지 마세요.

sudo setenforce 1

문제 진단을 위해 SELinux 로그 검토

SELinux 로그는 정책 위반을 식별하는 데 필수적입니다. Ubuntu에서 기본 SELinux 로그는 다음과 같습니다. /var/log/audit/audit.log. 최근 항목을 보려면 다음을 사용하십시오.

sudo tail /var/log/audit/audit.log

잠재적인 위반 사항을 정확히 찾아내려면 로그에서 "거부됨" 또는 "AVC"를 검색하십시오.

audit2allow를 사용하여 사용자 정의 정책 모듈 생성

정책 관련 문제가 발생했나요? 활용 audit2allow 감사 로그를 분석하고 사용자 정의 정책 모듈을 생성합니다. 예를 들어:

sudo grep 'denied' /var/log/audit/audit.log | audit2allow -M mycustommodule
sudo semodule -i mycustommodule.pp

첫 번째 명령은 감사 로그의 "거부" 항목에서 "mycustommodule"이라는 정책을 생성합니다. 두 번째는 이 정책을 설치하여 잠재적으로 문제를 해결합니다.

SELinux 부울 관리

SELinux 부울은 특정 기능을 제어합니다. 모든 부울 및 해당 상태를 나열하려면 다음을 사용하십시오.

sudo getsebool -a

활성화와 같은 부울을 수정하려면 httpd_can_network_connect, 실행하다:

sudo setsebool -P httpd_can_network_connect 1

그만큼 -P 플래그는 재부팅 후에도 지속성을 보장합니다.

웹 애플리케이션용 SELinux 구성: HTTP 및 HTTPS 트래픽 허용

WordPress와 같은 웹 애플리케이션의 경우 SELinux에서 필요한 네트워크 포트를 여는 것이 중요합니다. 다음을 사용하여 포트 80(HTTP) 및 443(HTTPS)을 활성화합니다.

sudo semanage port -a -t http_port_t -p tcp 80
sudo semanage port -a -t http_port_t -p tcp 443

WordPress용 SELinux 구성

원활한 WordPress 작업을 위해 SELinux 정책을 조정합니다.

  • HTTPD 스크립트 및 모듈에 대한 네트워크 연결: 플러그인 및 테마 업데이트를 위해 이 기능을 활성화합니다.
sudo setsebool -P httpd_can_network_connect 1
  • WordPress 디렉토리에서 읽기 및 쓰기 액세스: HTTPD가 WordPress 파일과 상호 작용할 수 있는지 확인하십시오.
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-content
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-config.php

추가 문제 해결 SELinux 구성 옵션

다양한 소프트웨어 요구사항에 맞게 SELinux를 맞춤설정하세요.

  • 사용자 정의 디렉토리에 대한 액세스: 사용자 정의 웹 디렉토리에 대한 파일 컨텍스트를 수정합니다. 예: /opt/myapp:
sudo chcon -R -t httpd_sys_content_t /opt/myapp
  • 웹 서버에 대한 FTP 액세스: 필요한 경우 FTP 액세스를 활성화합니다.
sudo setsebool -P allow_ftpd_full_access 1
  • 웹 서버 이메일 기능: 애플리케이션에 이메일 전송 기능이 필요한 경우:
sudo setsebool -P httpd_can_sendmail 1

이러한 구성은 특정 보안 및 운영 요구 사항을 충족하는 SELinux의 유연성을 보여줍니다.

결론

Ubuntu 24.04, 22.04 또는 20.04에 SELinux를 설치하기 위한 가이드가 끝났습니다. 우리는 설치 프로세스를 살펴보고 몇 가지 기본 명령을 다루었으며 몇 가지 주요 구성 팁을 살펴보았습니다. 시스템 보안을 유지하려면 정기적인 업데이트와 지속적인 모니터링이 중요합니다. 서버의 요구 사항에 더 적합하도록 SELinux 정책을 자유롭게 실험해 보세요. 단, 변경하기 전에 항상 구성을 백업하세요.

Joshua James
나를 따르라
Joshua James의 최신 게시물 (모두 보기)