본문 바로가기
42/Born2BeRoot

SELinux, AppArmor [Born2BeRoot]

by 블로블로글 2023. 12. 11.

 

SELinux와 AppArmor

  - 모두 리눅스 시스템에서 액세스 제어를 강화하는 데 사용되는 보안 모듈

  - SELinux를 기본적으로 사용 -  Fedora, CentOS, RHEL 등

  - AppArmor를 기본적으로 사용 - Ubuntu, openSUSE 등

https://en.wikipedia.org/wiki/Security-Enhanced_Linux

SELinux(Security-Enhanced Linux)

  - NSA(미국 국가안보국)에서 개발한 매우 강력한 보안 시스템

  - Mandatory Access Control(MAC)을 구현하여, 프로세스가 특정 파일이나 네트워크 포트에 액세스하는 것을 허용하거나 차단

    - MAC는 사용자나 프로세스가 시스템 리소스에 대한 접근 권한을 부여받았더라도, 그들의 행동을 시스템 정책에 따라 추가적으로 제한하는 보안 방식

    - SELinux는 '보안 정책'을 통해 이 MAC을 구현

    - 보안 정책은 시스템의 모든 프로세스와 파일에 대해 '보안 컨텍스트'를 지정하며, 이 보안 컨텍스트는 프로세스가 어떤 행동을 할 수 있는지, 파일에 어떤 프로세스가 접근할 수 있는지 등을 결정

    - SELinux는 이 보안 정책을 통해 프로세스가 시스템 내의 다른 프로세스나 파일에 무분별하게 접근하는 것을 방지

      - 웹 서버 프로세스는 웹 서버와 관련된 파일에만 접근할 수 있도록 제한

      - 웹 서버가 해킹당해도 시스템의 다른 부분에는 영향을 미치지 못하도록 함

  - SELinux는 매우 세밀한 제어를 가능하게 하지만, 그만큼 설정이 복잡하고 관리가 어렵다는 단점이 있음

    - 이로 인해 SELinux는 보안이 중요한 시스템에서 주로 사용

  - SELinux의 보안 컨텍스트

  - 보안 정책에 의해 파일, 디렉토리, 프로세스 등에 지정

  - 보안 컨텍스트를 통해 시스템의 모든 파일과 프로세스에 대한 접근을 제어

  - 이는 프로세스가 시스템의 다른 부분에 무분별하게 접근하는 것을 막아, 보안을 강화하는 데 도움이 됨

  - 보안 컨텍스트는 보통 사용자, 역할, 유형, 보안 레벨의 네 가지 부분으로 구성되며, 이들 각각은 보안 정책에 의해 지정

    - 사용자(User)

      - SELinux에서의 사용자는 리눅스 시스템의 일반 사용자와는 다름

      - SELinux 사용자는 보안 정책에서 정의되며, 일반 사용자에게 여러 역할을 할당하는 역할

    - 역할(Role)

      - 역할은 SELinux 사용자와 유형 사이의 중간 계층

      - 사용자는 할당된 역할을 통해 특정 유형의 파일이나 프로세스에 접근 가능

    - 유형(Type) 또는 도메인(Domain)

      - 유형은 파일이나 프로세스의 보안 속성을 결정

      - 프로세스의 유형은 도메인이라고도 부르며, 이는 프로세스가 어떤 파일에 접근하고, 어떤 행동을 할 수 있는지를 결정

    - 보안 레벨(Security Level)

      - 이는 선택적으로 사용되며, 더 세밀한 접근 제어를 위해 사용

      - 보안 레벨은 민감도와 카테고리 두 가지 부분으로 구성

      - 이를 통해 파일이나 프로세스에 대한 접근을 더욱 세밀하게 제어 가능

https://en.wikipedia.org/wiki/AppArmor

AppArmor(Application Armor)

  - AppArmor는 SELinux보다 사용하기 쉽고 관리하기 간편한 대안으로 개발

  - 특정 프로그램이나 프로세스의 시스템 리소스에 대한 접근을 제어하는 역할

    - 기본적으로 '허용 정책'을 기반으로 작동

    - 프로파일을 통해 프로그램의 행동을 제어

      - 프로파일

        - Pathname-based Access Control을 실제로 구현하는 수단

        - 프로파일에 정의된 규칙에 따라, 시스템은 프로그램이 특정 경로에 대해 어떤 액션(읽기, 쓰기, 실행 등)을 수행할 수 있는지를 결정

        -  프로그램별로 세밀하게 접근 권한을 지정할 수 있어, 시스템의 보안을 강화하는 데 도움

        - 프로파일은 '강제(enforce)' 모드와 '학습(complain)' 모드를 가짐

          - 강제 모드

            - 프로파일에 명시되지 않은 모든 행동이 차단

          - 학습 모드

            - 행동이 기록되고 허용

        - 이를 통해 시스템 관리자는 프로그램의 동작을 관찰하고 적절한 프로파일을 만들 수 있음

      - 각 프로파일은 특정 프로그램이 접근할 수 있는 파일 시스템 경로, 네트워크 접근, 실행 권한 등을 정의

      - 각 프로그램에 대해 허용된 동작들을 명시적으로 정의하고, 그 외의 모든 동작은 기본적으로 제한

      - 프로그램이 예상치 못한 행동을 하는 것을 막아 시스템의 보안을 강화

  - Pathname-based Access Control 방식을 사용

    - 파일 시스템 경로를 기반으로 애플리케이션의 액세스를 제어

    - 프로그램이 접근할 수 있는 파일이나 디렉토리, 그리고 그에 대한 권한(읽기, 쓰기, 실행 등)을 명시적으로 지정

    - 이러한 정보들은 AppArmor의 프로파일에 정의되며, 시스템은 이 프로파일에 따라 프로그램의 동작을 제어

  - 설정은 비교적 간단하지만, SELinux만큼 세밀한 제어는 불가능

  - AppArmor는 보안 강화에 필요한 도구를 제공하면서도 사용성을 유지하려 노력

    - 예를 들어, 프로파일은 사용자 친화적인 파일 경로를 사용하여 작성할 수 있으며, 프로파일 변경 시 재부팅 없이 적용

 

'42 > Born2BeRoot' 카테고리의 다른 글

SUDO [Born2BeRoot]  (0) 2023.12.12
SSH [Born2BeRoot]  (0) 2023.12.11
UFW [Born2BeRoot]  (0) 2023.12.11
aptitude, apt [Born2BeRoot]  (0) 2023.12.11
VM [ Born2BeRoot ]  (0) 2023.12.09