[Born2beRoot] SELinux, AppArmor

bolee·2022년 4월 1일
0

42seoul

목록 보기
4/27

리눅스 커널 보안 모듈인 SELinux와 AppArmor에 대해 알아보기 전에 먼저 접근 통제에 대해 간단하게 알아보자

접근 통제

운영체제(OS)에서 접근 통제(Access Control)은 디렉터리나 파일, 네트워크 소켓 같은 시스템 자원을 적절한 권한을 가진 사용자나 그룹이 접근하고 사용할 수 있게 통제하는 것이다.

접근 통제에서 시스템 자원을 객체(Object)라고 하며 자원에 접근하는 사용자나 프로스세를 주체(Subject)라고 한다.
예를 들어 /etc/passwd 파일은 객체이고, 이 파일에 접근하여 암호를 변경하는 passwd라는 명령어는 주체이다.

DAC (임의적 접근 통제, Discretionary Access Control)

주체(소유자/사용자)가 속해있는 그룹의 신원에 근거하여 객체(파일)에 대한 접근을 제안하는 방법이다.

특징

  • 객체의 주체가 접근 여부를 결정한다. (분산형 보안관리)
  • 하나의 주체마다 객체에 대한 접근 권한을 부여해야 한다.

장점

  • 객체 별 세분화된 접근 제어
  • 특정 주체가 다른 주체에게 임의적인 접근 제어 가능
  • 유연한 접근 제어 서비스

단점

  • 시스템 전체 차원에서의 일관성 있는 접근 제어 부족
  • 밀웨어, 바이러스, 웜, 루트 킷, 트로이 목마 등에 취약

MAC (강제적 접근 통제, Mandatory Access Control)

자원의 보안 레벨과 사용자의 보안 취금 인가를 비교하여 접근 제하는 방식이다.
즉, 정의된 정책을 활용해 사용자와 프로세스의 행동을 제어하는 것이다.

특징

  • 관리자만이 접근 제어의 규칙을 설정, 변경할 수 있다. (중앙집중형 보안관리)
  • 다중 수준 보안 정책에 기반한다. (서로 다른 분류 수준의 데이터가 보호되는 방법)
  • 파일의 유형, 사용자의 역할, 프로그램의 기능과 신뢰도, 데이터의 민감성과 무결성 고려해야 한다.

장점

  • 매우 엄격한 보안
  • 모든 객체(파일)에 대한 관리가 용이

단점

  • 구현, 운영이 복잡
  • 모든 접근에 대해 확인해야 하므로 성능 저하
  • 상업적인 환경에 부적합

SELinux

SELinux(Security-Enhanced Linux)는 관리자가 시스템 액세스 권한을 효과적으로 제어할 수 있게 하는 Linux 시스템용 보안 아키텍처이다.

과거 리눅스는 소스코드가 공개되어 있기 때문에 보안에 취약했다. 이러한 취약점을 보안하기 위한 것이 SELinux이다.
미국 국가안보국(United States National Security Agency, NSA)이 LSM(Linux Security Module)을 사용하여 Linux 커널에 대한 일련의 패치로 개발하였다.

레드햇 계열 운영체제(RHEL, Fedora, CentOS)에서 많이 사용되며, MAC이 적용되었다. (전통적인 Linux는 DAC)
시스템 전체에 대한 보안 설정이 가능하다.

장점

  • 사전 정의된 통제 정책 탑제
  • "Deny All, Permit Some"(모든 것을 차단하고 필요한 것만 허용) 정책으로 잘못된 설정 최소화
  • 권한 상승 공격에 의한 취약점 감소
  • 잘못된 설정과 버그로부터 시스템 보호

한계

  • SELinux의 주요 목표는 잘못된 설정이나 프로그램의 보안 버그로 인해 시스템이 공격 당해도 시스템과 데이터를 보호하고 2차 피해를 막는 것
  • 즉, 여러 가지 보안 요소 중에 하나이며 모든 보안 요건이 충족되지는 않음
  • 따라서 SELinux는 침입 차단 시스템(IPS; Intrusion Protection System), 침입 탐지 시스템(IDS; Intrusion Detection System)이나 바이러스 백신이 아니므로 여러 보안 요소와 혼용하여 사용해야 한다.

AppArmor

AppArmor(Application Armor)는 시스템 관리자가 프로그램 프로필 별로 프로그램의 역량을 제한할 수 있게 해주는 리눅스 커널 보안 모듈이다.

리눅스 버전 2.6.36부터 포함되었으며, 개발은 2009년부터 캐노니컬 사에 의해 지원되고 있다.

SUSE 계열(SUSE Linux), 데비안 계열(Debian, Ubuntu) 운영체제에서 주로 사용되며, MAC이 적용되었다. (전통적인 Linux는 DAC)
개별 응용프로그램을 보호하는 일에 집중되어 있으며, 응용프로그램 단위의 보안 모델이 구현되어 있다.

장점

  • 제로 데이 공격을 비롯한 외부 또는 내부 위협으로부터 운영 체제와 애플리케이션을 보호한다.
  • "좋은 행동"이 시행되고 알려지지 않은 애플리케이션 결함을 통한 악용을 완화한다.
  • AppArmor 보안 정책은 개별 애플리케이션이 액세스할 수 있는 시스템 리소스와 권한을 정의한다.
    예를 들어: 네트워크 액세스. 원시 소켓 액세스. 특정 경로에서 파일 읽기, 쓰기 또는 실행 권한

단점

  • 스냅에 중점을 두고 있으며, 기본 정책은 시스템의 프로그램을 거의 제한 하지 앟고 지원하는 정책 모듈(프로파일)이 부족하다.
  • 정책 규칙이 세분화되지 않고 유연성이 부족하다.
  • 네트워크 규칙에 대한 권한이 없다.

AppArmor 설치 및 확인

AppArmor을 설치하는 방법은 아래와 같다.

apt install apparmor apparmor-profiles apparmor-utils

AppArmor가 실행 중인지 확인하고 싶다면 아래 명령어를 입력하면 된다.

aa-status

참고
https://2infinity.tistory.com/59
https://kaite-story.tistory.com/54
https://lesstif.gitbooks.io/web-service-hardening/content/selinux.html
https://www.redhat.com/ko/topics/linux/what-is-selinux
https://ko.wikipedia.org/wiki/AppArmor
https://www.whonix.org/wiki/AppArmor#Introduction
https://omarine.org/blog/apparmor-vs-selinux/

0개의 댓글