SELinux
Security Enhanced Linux의 약자
리눅스가 오픈소스인 것으로 인한 보안 취약점을 보안하기 위해 만들어졌다.
시스템 전체에 보안 설정을 한다.
강제적 접근 통제(MAC)를 제공
레드햇 계열 : RHEL, Fedora, CentOS
동작 모드
- 강제(enforcing) : 기본값으로 활성화됨, 보안정책이 실행되어서 로그 기록과 보호를 모두 수행한다.
- 허용(permissive) : 보안정책에 대해 로그는 기록하지만 실제로 차단은 되지 않는 상태이다.
- 비활성화(disabled) : 비활성화되어 동작하지 않는다.
AppArmor
시스템 관리자가 프로그램 프로필 별로 프로그램의 역량을 제한할 수 있게 해주는 리눅스 커널 보안 모듈
강제적 접근 통제(MAC)를 제공함으로써 전통적인 유닉스 임의적 접근 통제 모델(DAC)을 지원한다.
개별 응용 프로그램을 보호하는 일에 집중한다.
네트워크 액세스, raw 소켓 엑세스, 파일 읽기 쓰기 실행 권한들을 통제함으로써 개별 프로그램을 보호한다.
SUSE 계열 : SUSE Linux
Debian 계열 : Debian, Ubuntu
차이점
SELinux는 경로 대신 아이 노드 번호로 파일 시스템 객체를 구별하고
AppArmor는 파일 경로를 통해서 작동한다.
예를 들어 하드 링크가 생성됐을 때 작동 방식이 다름
- SELinux는 하드 링크가 새롭게 생성되어도 아이 노드가 같기 때문에 지속적으로 접근 거부를 한다.
- AppArmor는 하드 링크가 새롭게 생성되면 파일 경로가 다르기 때문에 접근이 가능하다.
보안 모델
DAC(Discretionary Access Control) : 임의 접근 제어
- 데이터 소유자가 권한을 부여한다.
- 접근 결정은 신분으로 결정된다.
- 객체에 대한 소유 권한을 명시하고 권한을 부여한다
- 사용자가 객체 접근 권한 허가/철회가 가능하다.
MAC(Mandatory Access Control) : 강제 접근 제어
- 시스템이 권한을 부여한다.
- 접근 결정은 보안 등급으로 결정된다.
- 정의된 정책을 활용해서 사용자와 프로세스의 행동을 제어한다.
- 파일의 유형, 사용자의 역할, 프로그램의 기능과 신뢰도, 데이터의 민감성과 무결성을 고려한다.